最近在做一个exchange 2010升级到exchange 2016的项目,exchange2016访问高可用通过LVS+Keepalived实现,LVS采用DR模式,如下图:

具体的工作原理大家可以从网上找,有很多这方面的介绍。

具体LVS+Keepalived的配置方式,网卡的资料挺多的,大家可以去搜一下。

今天主要是把配置后遇到的问题给大家做个分享:

问题描述:

2台Centos7.5安装在VMware环境、2台exchange 2016安装在HP的刀片服务器上,它们都在同一个网段。

配置好LVS+Keepalived后,我通过浏览器访问VIP登录OWA时,可以正常的连接到exchange2016,如下图:

当我输入用户名密码登录的时候,报错了(悲催的事情发生了),如下图:

我通过访问任意一台Exchange 2016 的FQDN或IP,都是可以正常登录的,附图:

为了验证到底是LVS的问题还是exchange的问题,我做了很多的验证: 验证一: 在VMware环境中使用新的域名搭建了一套exchange2016环境(和LVS同属一个虚拟化环境),将LVS配置文件中的VIP指向新搭建的exchange2016环境,验证通过VIP访问OWA,可以正常的访问; 验证结果:LVS配置没问题

验证二: 在HP的刀片服务器上搭建了exchange2016的POC环境,将LVS配置文件中的VIP指向新搭建的Exchange2016,验证通过VIP登录OWA,无法登录,和我遇到的问题一样; 验证结果:和生产环境中遇到的问题一样,判断问题应该出在刀片服务器上

处理了近1周的时间。各方大拿都找了(Linux工程师检查配置没发现问题、向微软开Premier服务,也说exchagne2016问题、网络工程师也通过NM抓包,也没找出问题)

通过对exchange 2016 IIS日志的分析,是有302的重定向记录的:

2018-11-22 02:27:13 10.11.10.210 POST /owa/auth.owa &CorrelationID=<empty>;&cafeReqId=f37aedab-a665-46f9-9b98-fdf9afc702e7;&encoding=; 443 ccn-test01 10.11.8.239 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+Trident/7.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+Media+Center+PC+6.0;+CIBA;+.NET4.0C;+.NET4.0E;+Tablet+PC+2.0;+wbx+1.0.0;+Zoom+3.6.0) https://10.11.10.210/owa/auth/logon.aspx?url=https%3a%2f%2f10.11.184.210%2fowa&reason=0 302 0 0 0

正常的情况应该是:client --> VS --> Exchange2016 --> client,但通过IIS日志分析,应该是exchange2016到client之间出现了问题,通过networkmonitor抓包,也没有发现从exchange2016回给client的包:client --> VS --> Exchange2016 -???-> client

不啰嗦了,说一下最终的解决方法: 将VMware虚拟化环境的exchange2016 服务器的网卡配置信息和HP刀片服务器exchange2016上的网卡配置信息进行了对比,发现在HP刀片服务器的网卡信息有一项:TCP Connecttion offload,值为:Disabled,如下图:

而VMware环境的网卡配置没有此项。

抱着试试的态度,将TCP Connection Offload的值改为:Enable后,再进行测试,可以正常的登录了。

至此问题解决。

关于TCP Connection Offload的说明网上我也没有找到比较好的描述,如果大家有这方面的资料可以share一下。