AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 738440
Accepted
Jacob Evans
Jacob Evans
Asked: 2015-11-24 12:35:39 +0800 CST2015-11-24 12:35:39 +0800 CST 2015-11-24 12:35:39 +0800 CST

多个 MX 或循环 A 记录

  • 772

哪个更好?为什么?

有 2 个入站邮件过滤器,它们位于具有相同硬件规格的集群中,并且可以处理相同的负载。这是一个新配置,我想知道哪个是处理 2 个服务器的等价负载平衡的更好方法,我可以将它们设置为使用相同的主机名 (ehlo) 和相同的证书,它们当前使用的证书包括所有 3 个名称,通用名称是 mx。

在任何一种情况下,如果其中一台服务器中断,都将重试两个 IP 地址。

方案 1

example.com. IN MX 10 mx.example.com.
mx.example.com. IN A 10.0.0.10
mx.example.com. IN A 172.31.0.10

方案 2

example.com. IN MX 10 mx1.example.com.
example.com. IN MX 10 mx2.example.com.
mx1.example.com. IN A 10.0.0.10
mx2.example.com. IN A 172.31.0.10

*假设所有其他变量都是最佳实践(FCrDNS、SPF、ETC)

谷歌似乎两者兼而有之。

;;Answer
gmail.com. 300 IN TXT "v=spf1 redirect=_spf.google.com"
gmail.com. 86400 IN SOA ns1.google.com. dns-admin.google.com. (2015031901 21600 3600 1209600 300)
gmail.com. 345600 IN NS ns1.google.com.
gmail.com. 345600 IN NS ns2.google.com.
gmail.com. 345600 IN NS ns3.google.com.
gmail.com. 345600 IN NS ns4.google.com.
gmail.com. 3600 IN MX 10 alt1.gmail-smtp-in.l.google.com.
gmail.com. 3600 IN MX 20 alt2.gmail-smtp-in.l.google.com.
gmail.com. 3600 IN MX 30 alt3.gmail-smtp-in.l.google.com.
gmail.com. 3600 IN MX 40 alt4.gmail-smtp-in.l.google.com.
gmail.com. 3600 IN MX 5 gmail-smtp-in.l.google.com.
gmail.com. 300 IN AAAA 2607:f8b0:4006:80c:0:0:0:1015
gmail.com. 300 IN A 173.194.123.85
gmail.com. 300 IN A 173.194.123.86
gmail-smtp-in.l.google.com. 300 IN AAAA 2607:f8b0:400c:c00:0:0:0:1a
gmail-smtp-in.l.google.com. 300 IN A 74.125.134.26
gmail-smtp-in.l.google.com. 300 IN A 74.125.134.27
domain-name-system
  • 2 2 个回答
  • 2383 Views

2 个回答

  • Voted
  1. Best Answer
    Sammitch
    2015-12-01T18:07:12+08:002015-12-01T18:07:12+08:00

    均衡负载的最佳解决方案是使用实际的负载均衡器。如果您对任何给定的 MTA 实施 RFC 的糟糕程度感到心血来潮,您会心血来潮。

    在一个完美的世界中,您提到的任何一个解决方案都可以,但是在现实世界中,您最多可能会看到恒定的 60/40 负载分配。这是因为即使电子邮件和 DNS RFC 在主机选择期间可能有很多看起来很吓人的应该和必须关于随机化,但事实上程序员是懒惰的,并且由于懒惰的主机选择,服务器无法拒绝连接。

    您将看到的两种情况是:

    1. 无论第一条记录是什么,流量都达到了。
    2. 在对可用记录进行排序后,流量达到第一条记录。

    我能够达到的最佳平衡是将最高 IP 分配给最低 MX。在您的情况下,这意味着:

    example.com. IN MX 10 mx1.example.com.
    example.com. IN MX 10 mx2.example.com.
    mx1.example.com. IN A 172.31.0.10
    mx2.example.com. IN A 10.0.0.10
    

    这应该有助于平衡事情,因为 PWM [Poorly Written MTA] #1 将更喜欢最低的 MX 记录名称,而 PWM #2 将更喜欢最低的 MX IP。

    但是,就像我说的,你永远不会看到真正的平衡。

    资料来源:我管理了一个 10 节点的 MX 集群,服务于 10,000 多个域。[IP 最低的那台仍然获得了总流量的 30%,而我们最终使它成为一台更强大的机器:I]

    • 5
  2. User5645
    2015-11-24T12:55:07+08:002015-11-24T12:55:07+08:00

    两者对您的工作方式完全相同。在这两种情况下,您都在配置 DNS 负载平衡设置,允许您利用列出的两个服务器来回答 SMTP 请求。即使查看查询的数量,在这两种情况下,您都会有两个 DNS 查询(一个用于 MX 记录,一个用于 A 记录),因此应该没有性能差异。

    为简单起见,我会坚持第一种情况,因为我只需要跟踪一个 MX 记录(少一个 DNS 记录……没什么大不了的,但至少少了一个移动部分)。

    google 如何利用这一点是同时使用 DNS 负载平衡的灵活性以及加权 MX 记录的回退功能,这是您唯一不需要利用的部分(至少根据您的场景)。

    因此,如果您注意到其权重为 5 的主 MX 记录是具有多个 A 记录的记录。因此,当一切正常时,他们会在这些地址之间分配流量。但是如果这些地址没有响应,它可以降低 MX 优先级以尝试下一条记录,然后继续。

    我见过的大多数小型设置(与 gmail、yahoo 等相比较小)都没有负载平衡(至少没有 DNS 负载平衡),而是使用加权 M​​X 来遍历首选 SMTP 处理程序列表。实际上,它归结为提供您所需灵活性的设置。

    • -1

相关问题

  • Solaris DNS

  • resolv.conf 在经过一段时间后被更改

  • 为什么有些网站的网址中没有“www”就无法显示?[关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve