我已经使用 nginx 免费版的流功能对我的 Exchange 2019 邮箱服务器(DAG 中的 2 台服务器)进行了负载平衡原型设计。我知道这只是第 4 层解决方案,因此不会终止连接或进行任何流量检查。我可以接受这个限制。但是,一些同事建议不要使用 nginx,但除了“nginx 免费版不适用于 Exchange”(这至少有点不真实)之外没有其他理由。我以后会遇到问题吗?我应该改用 haproxy 吗?(Kemp LoadBalancer 看起来也很有趣,但除非您使用免费版,否则价格昂贵,免费版限制为 20Mb/s)。我的首要任务是稳定性/可靠性。好吧,我想我真正的首要任务是价格(我几乎没有预算)。
答案1
现在我已经制作了 HAProxy 的原型,我简直不敢相信它在负载平衡方面比免费的 nginx 好多少。主动健康检查、良好的统计界面、更好的默认日志记录等等。只需一个小时的调整,我就观察到在服务器发生故障后 Outlook 客户端的重新连接速度比我使用 nginx 经过几天的实验和调整才能实现的速度要快得多。如果我想转向反向代理 Exchange 而不是仅对其进行负载平衡,HAProxy 还提供了一条免费的前进路径。
我确实想强调的是,免费的 nginx 确实有效(声称免费版不能对 TCP 和 UDP 进行负载平衡的说法是错误的),但我相信 HAProxy 是此应用程序的更好的解决方案。
答案2
原因是只有 Nginx Plus 具有TCP 和 UDP 负载平衡需要负载平衡 SMTP、POP3 和 IMAP,而 Nginx 只能够HTTP 负载平衡。
如果您只需要 HTTPS,它就可以工作,Exchange 使用它来进行 Web 上的 Outlook、自动发现、Web 服务、ActiveSync、MAPI over HTTP、RPC over HTTP、OAB 和 EAC。从Exchange Server 中的负载平衡,协议:
从 Exchange 2016 开始,所有本机 Exchange 客户端都使用 HTTP 协议连接到指定服务,并在用户登录时向用户提供使用客户端访问服务 SSL 证书加密的 HTTP cookie。
使用Nginx(开源)作为负载平衡器意味着您不支持除本机 Exchange 客户端之外的其他客户端,因为您不提供对邮件服务器的 SMTP/IMAP 访问。您的同事可能会提到这一点,但您应该询问他们。
Nginx 加。对于完全支持(但不免费)的替代方案,这里有一个部署指南使用 NGINX Plus 对 Microsoft Exchange 服务器进行负载平衡。
HAProxy。Exchange 2019 的负载平衡应该与 Exchange 2016 的负载平衡非常相似。Mikael Hansson 撰写了一篇关于使用 HAProxy 对 Exchange 2016 进行负载平衡,就可能不同于使用 HAProxy 实现 Exchange 2013 负载平衡。
答案3
抱歉,我对这些三方工具不太熟悉。如需更准确的帮助,您可以前往nginx论坛寻求帮助。
使用 DNS 是平衡 Exchange 流量负载的最简单方法。使用 DNS 负载平衡,您只需向客户端提供每个邮箱服务器的 IP 地址。之后,DNS 循环将该流量分发到您的邮箱服务器。如果一台 Exchange 服务器完全失败,HTTP 客户端会非常智能地连接到另一台服务器。
答案4
Esa 的回答非常好,对于大多数项目来说,HAProxy 无疑是比NGINX 残缺版。Exchange 2019易于实现负载平衡(并且设计精良)。
忽略那些告诉你在负载均衡器上终止 SSL 的人(这只会增加麻烦)。但很多人在使用 HAProxy 时遇到的一个问题是,由于它是第 7 层反向代理,它会隐藏真实的服务器/客户端 IP 地址。
那么如何在 SMTP 接收器上设置中继保护?据我所知,您只有两个选择:
- 使用LVS 第 4 层 DSR这太棒了
- 或者配置代理服务器对于 HAProxy(这很麻烦)