![负载平衡电子邮件服务器:MX、A/AAAA、Anycast IP](https://linux22.com/image/753610/%E8%B4%9F%E8%BD%BD%E5%B9%B3%E8%A1%A1%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9AMX%E3%80%81A%2FAAAA%E3%80%81Anycast%20IP.png)
我很好奇这三种方法在实现电子邮件服务器负载平衡时有哪些区别和注意事项:
MX
具有相同优先级/优先编号的多个记录- 记录指向的域名的多个
A
and/or记录AAAA
MX
MX
对记录或A
/AAAA
记录中的 IP 使用任播 IP
哪种单一方法或组合被视为最佳实践,以及何时应该使用它们?
除了这些和使用电子邮件网关之外,还有其他方法可以平衡电子邮件服务器的负载吗?
根据我的经验,我发现 1 和 2 经常使用,但 3 并不多,主要用于 CDN。
答案1
这是一个主观问题。并且还取决于你所控制的基础设施。
使用 MX 记录,您只能稍微引导您的目的地。随机化留给 DNS 甚至客户端。它们应该均匀分布,但有时也会缓存随机化以供将来的请求使用。因此,您依赖于它们希望为您进行负载平衡的客户端或中间 DNS。
A 记录也是如此。您无法控制客户端如何解释 DNS 答案。它们会按照您的预期行事吗?它们是否遵循 RFC?它们是随机的还是总是从第一个开始?您无法控制。
如果您在 HA 集群中拥有多个服务器,并且它们位于同一个 IP 后面,那么您就可以掌控一切。您知道如何根据负载或其他标准对传入流量进行负载平衡。但您的瓶颈将是分配流量的边界机器的带宽。
因此,您可以随意组合所有内容。您是否需要多个数据中心来接收邮件以防发生故障,那么一个 IP 是不够的。您是否控制 DNS 并可以向发送方附近的数据中心提供实时的地理本地答案?您是否可以忍受发送方的半负载平衡流量?
看看谷歌。他们给你五个 MX(在撰写本文时),但每个 MX 的优先级都不同。每个 MX 只有一个 A/AAAA。但答案是短暂的(TTL),因此“每次”你请求 IP 时,你都会得到不同的答案。我敢打赌,每个 IP 背后都有几十个真实的服务器在回答客户端的问题。我还猜想这些答案经过地理编码,至少可以到达同一大陆的数据中心。你可能知道谷歌有数千台服务器每天处理数十亿或数万亿封邮件。绝对不是五个优先级不断增加的 MX。我不会与他们争论。他们的员工比我薪水高。