1、首先排查LB设备和各服务器的联通性,确保服务器的ip和端口号可达,现场经过测试三台服务器及其对应端口号都是可达的;
2、检查现场关键配置
# real-server gw01
ip address 10.10.200.114
server-farm gw
# real-server gw02
ip address 10.10.200.113
server-farm gw
# real-server gw03
ip address 10.10.200.112
server-farm gw
# server-farm gw
predictor hash address source
snat-pool netpool
probe http8080_19
probe http8080_20
probe http8080_21
# nqa template http http8080_19
expect status 200
url http://10.10.200.112:8080
# nqa template http http8080_20
expect status 200
url http://10.10.200.113:8080
# nqa template http http8080_21
expect status 200
url http://10.10.200.114:8080
发现三台实服器同属于一个实服务组,且现场的HTTP健康性检测方案是在实服务组下调用的;
配置实服务组健康检测的成功条件success-criteria{all |at-leastmin-number}缺省情况下,只有全部方法都通过检测才认为健康检测成功
而实服务组下缺省的情况是只有全部的方法都通过检测才认为检测成功,现场调用了3个URL地址不同的健康性检测方法去检测一台服务器,所以肯定会失败;于是让现场在实服务组下添加success-criteria at-least 1命令,只需满足一个健康性检测方法即认为检测成功;3、添加如上命令后发现实服务器gw02、gw03健康性检测通过了,但gw01仍处于Inactive状态;在LB出口抓包,比较三个服务器的HTTP交互报文发现:
gw02、gw03返回的状态码都为200
而gw01返回的状态码为302
和渠道沟通,表示gw01的服务器的URL存在一次重定向的过程,不是直达的;
(可选)配置期望的应答状态码expect statusstatus-list缺省情况下,未配置期望的应答状态码
在健康性检测方案里添加如下命令:
# nqa template http http8080_21
expect status 200 302
url http://10.10.200.114:8080
gw01健康性检测成功;