哪个更好?为什么?
有 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
均衡负载的最佳解决方案是使用实际的负载均衡器。如果您对任何给定的 MTA 实施 RFC 的糟糕程度感到心血来潮,您会心血来潮。
在一个完美的世界中,您提到的任何一个解决方案都可以,但是在现实世界中,您最多可能会看到恒定的 60/40 负载分配。这是因为即使电子邮件和 DNS RFC 在主机选择期间可能有很多看起来很吓人的应该和必须关于随机化,但事实上程序员是懒惰的,并且由于懒惰的主机选择,服务器无法拒绝连接。
您将看到的两种情况是:
我能够达到的最佳平衡是将最高 IP 分配给最低 MX。在您的情况下,这意味着:
这应该有助于平衡事情,因为 PWM [Poorly Written MTA] #1 将更喜欢最低的 MX 记录名称,而 PWM #2 将更喜欢最低的 MX IP。
但是,就像我说的,你永远不会看到真正的平衡。
资料来源:我管理了一个 10 节点的 MX 集群,服务于 10,000 多个域。[IP 最低的那台仍然获得了总流量的 30%,而我们最终使它成为一台更强大的机器
:I
]两者对您的工作方式完全相同。在这两种情况下,您都在配置 DNS 负载平衡设置,允许您利用列出的两个服务器来回答 SMTP 请求。即使查看查询的数量,在这两种情况下,您都会有两个 DNS 查询(一个用于 MX 记录,一个用于 A 记录),因此应该没有性能差异。
为简单起见,我会坚持第一种情况,因为我只需要跟踪一个 MX 记录(少一个 DNS 记录……没什么大不了的,但至少少了一个移动部分)。
google 如何利用这一点是同时使用 DNS 负载平衡的灵活性以及加权 MX 记录的回退功能,这是您唯一不需要利用的部分(至少根据您的场景)。
因此,如果您注意到其权重为 5 的主 MX 记录是具有多个 A 记录的记录。因此,当一切正常时,他们会在这些地址之间分配流量。但是如果这些地址没有响应,它可以降低 MX 优先级以尝试下一条记录,然后继续。
我见过的大多数小型设置(与 gmail、yahoo 等相比较小)都没有负载平衡(至少没有 DNS 负载平衡),而是使用加权 MX 来遍历首选 SMTP 处理程序列表。实际上,它归结为提供您所需灵活性的设置。