Exchange 2013 MAPI over HTTP 负载平衡 HAProxy

Exchange 2013 MAPI over HTTP 负载平衡 HAProxy

我们已成功部署 HAProxy 作为所有基于 Exchange 2013 SP1 HTTP 的流量(自动发现、OWA、EXP、EWS、MAPI 等)的 4 层负载均衡器。

然而,由于各种原因,我们正在考虑转向第 7 层“SSL 卸载”架构。

我们的大部分配置都基于优秀的 ALOHA 指南:https://www.haproxy.com/static/media/uploads/eng/resources/aloha_load_balancer_appnotes_0065_exchange_2013_deployment_guide_en.pdf

好消息是,几乎所有东西都运行正常。我们唯一的问题是 MAPI,即 Exchange 2013 SP1 中引入的 RPC 替代品。

据我所知,Exchange 2013 支持 MAPI 的 SSL 卸载 - 请参阅http://blogs.technet.com/b/rmilne/archive/2014/02/25/exchange-2013-sp1-released.aspx。ALOHA 文档建议不要对 MAPI 使用第 7 层 SSL 卸载,但这纯粹是由于性能问题,而不是任何技术原因。

如果我们尝试对 MAPI 进行负载平衡,那么我们看到的症状是

  • /mapi/HealthCheck.htm URL 可以在 Web 浏览器中正常返回
  • 然而,Outlook 客户端反复要求输入凭据

HAProxy 配置的相关部分如下(不是整个文件)

frontend ft_exchange_2013_https
 bind 1.1.1.3:443 ssl crt /blah/blah.pem
 capture request header Host len 32
 capture request header User-Agent len 64
 capture response header Content-Length len 10
 maxconn 10000
 acl ssl_connection ssl_fc
 acl host_mail hdr(Host) -i mail.company.com
 acl path_slash path /
 acl path_mapi path_beg -i /mapi
 http-request deny if path_check
 http-request redirect scheme https code 302 unless ssl_connection
 http-request redirect location /owa/ code 302 if path_slash host_mail
 use_backend bk_exchange_2013_https_mapi if path_mapi

backend bk_exchange_2013_https_mapi
 option httpchk GET /mapi/HealthCheck.htm
 http-check expect string 200\ OK
 timeout server 600s
 server SERVER1 1.1.1.1:443 maxconn 2000 weight 10 check ssl verify none
 server SERVER2 1.1.1.2:443 maxconn 2000 weight 10 check ssl verify none

我们为解决这个问题所尝试做的事情是

  • 通过删除 MAPI IIS 虚拟目录上的“需要 SSL”标志并在 SERVER1 和 SERVER2 行上使用端口 80 而不是 443,在后端使用 HTTP 而不是 HTTPS
  • 删除一个后端服务器,以便所有请求都转到单个服务器
  • 将 MAPI 虚拟目录的身份验证设置从默认的“协商”更改为“NTLM”

但是,这些都没有解决问题。如果有人对如何进一步诊断有任何想法,或者有可行的配置,他们可以分享,例如 HAProxy 配置 + Exchange MAPI 虚拟目录配置,那就太好了!!

编辑1

我还设法重现了 Outlook 的行为,方法是:https://mail.company.com/mapi/emsmdb它会反复提示输入与 Outlook 相同的凭据

相关内容