用户运行Appeon Web应用时,在登录后的某个时刻,IE突然弹出一条错误信息:Your session failed. Please open the IE and run the application again.
Session是用户运行Appeon Web应用开始后,客户端与服务器端建立的一个会话连接。如果用户在一段时间内,没有做服务器相关的操作,AppeonServer会清除用户的session,用户需要重新打开IE运行Web应用。
在Appeon Enterprise Management控制台中可以设置“会话超时时间”。以秒为单位,默认为3600秒,即一个小时。设为0表示永远不超时。
根据客户项目的实际情况,用户希望在早上上班登录后,一直保持连接状态到下班时间。这就需要将“会话超时时间”设为8到10个小时。
但是,系统管理人员在将超时时间设置为8小时,或者更长的时间,并未达到预期的效果。Session常常在用户正在操作的时候,突然出现上述超时提示。而且没有什么规律,有时几分钟就出现,有时半天也没什么事。这种错误的出现给用户正常工作带来很多困扰。
由于客户项目中的Web应用是采用了Alteon交换机负载均衡(Server Load Balancing,SLB)的技术。所有用户通过域名访问Web应用,IP地址被解析到交换机的对外的一个IP和端口。交换机根据某种策略将用户的Http请求分发给后台服务器(Real Server Group)中的一台。
考虑到单独访问一台Appeon Server的情况下,很少出现Appeon Session Failed的错误。初步估计,Session failed的错误与交换机有关。为了验证这个初步的想法,对项目中使用的交换机和服务器做了如下调整(见图1):
l 将Server3从Server group中分离出来,不接受交换机分发的用户请求。
l 部分用户和开发人员通过交换机提供的一个虚拟IP地址直接访问Server3。
图 1 将一台服务器从交换机分离出来单独访问
运行一天后,分析三台服务器上的Appeon Server日志信息。结果发现,通过L4交换机分发请求到64和65两台服务器时,必然会出现此session failed错误信息。而单独访问66机器的则没有此错误信息。
虽然仅仅测试了有限的一段时间,但是试验结果进一步证实了前面的想法,即session failed错误在很大程度上与交换机有关。或者说,L4交换机有关分发的某些设置或策略可能对Appeon Session产生了影响。
既然确定了与交换机的设置或分发策略有关,那么就需要根据交换机的型号查阅和研究相关的设置。通过与网络管理人员的交流,我们得知该项目中使用的交换机是Nortel公司生产的Alteon708交换机。
通过浏览Nortel公司网站,查阅和下载相关PPT资料和Alteon 708手册。
图 2 Alteon交换机负载均衡原则(Nortel)
从图2可以看出,服务器负载均衡原则通常有五种,这五种原则各有特点,分别适合于不同的场合和不同的应用。Minimum misses原则对于Server Load Balancing由于同时基于源IP和Real Server IP确定分发给哪个Real Server,对会话一致性的影响最小。
在与项目网管人员的进一步交流中得知,当前采用的是Hash原则。那会不会就是因为Hash原则设置,导致Appeon Session failed呢?
我们进一步下载和查看了Alteon交换机Web OS的相关文档——
Web OS 7.2 Configure Guide on Alteon 708 (050156a.pdf, download from
www.nortel.com)
图3和图4分别是Web OS配置文档中关于Minimum misses和hash原则的说明。
图 3 minmisses ---- Metrics for Real Server groups(Chapter 7)
图 4 Hash ---- Metrics for Real Server groups(Chapter 7)
经过前面的分析和研究后,我们将Alteon交换机的“Server Load Balancing Metric”设置进行了调整,由原来的“Hash”调整为“Minmisses”。
2005年12月14日下午16:30分左右,我们调整Alteon交换机的设置。此后一直抓取和分析所有服务器的日志文件。尽管调整设置后,依然出现超时错误,但是从12月15日凌晨3点起,日志文件中“Session Failed的异常”全部消失。
时间段 |
Server1(64) |
Server2(65) |
Server3(66) |
12月14日
12:00:00~23:59:59 |
有超时错误 |
有超时错误 |
有超时错误 |
12月15日
00:00:00~23:59:59 |
无 |
02:55:45之前有错误,之后消失 |
无 |
12月16日
00:00:00~19:40:00 |
无 |
无 |
无 |
连续观察了将近48小时内所有服务器的日志,没有发现“session failed”异常。电话询问用户,反映说使用过程中再没有出现超时错误。我们可以认为,此问题已基本解决。
查看本文来源