故障现象:
后端有5台服务器,每个服务器上跑着8个应用。使用F5做应用负载调度。这40个应用里面,3-10个应用在高峰期的时候weblogic的DOS窗口显示与数据库断开连接(端口通、业务断),但是F5认为此服务器窗口的端口还是通着的。对于F5负载均衡来说,检测此服务端口还是通者的,F5认为应用好着呢(其实已经断开了)。由于F5pool是轮询机制,发现有个端口是"休息"着的。就会把后续的业务都分配此端口上,进而导致越来越多的人访问都分配找这个F5认为很"清闲"的端口(其实已经坏了)上。说白了就是F5的pool的健康监测不够完美。监测不够精确导致的。
解决方法:
思路:通过获取需要检查页面的地址,得到页面的内容,然后通过特定的词汇来匹配你获取的内容,有就通过,没有就不通过。
web登陆F5---Local Traffic---Monitors---"自定义的检查策略"
在Send String:配置如下命令
GET /rkxt/index.jsp HTTP/1.1\r\nConnection:Close\r\nHost:\r\n\r\n |
#HTTP的monitor
#GET |
获取的意思 |
#/rkxt/index.jsp |
表示识别的服务的目录,就是网址的位置(服务目录) |
#HTTP/1.1 |
说明http的版本是1.1 |
#Connection:close |
说明会话完毕后断开和客户端的连接(connection:keep-live类似维持会话) |
在Receive String:配置如下命令
/rkxt/ |
这个词是从浏览器上按F12抓取出来的,可以用来匹配获得页面,匹配成功就ok,匹配不成功就离线了。
总结:做F5的http的monitor时需要关注GET的格式,即服务目录后面要添加"HTTP/1.1\r\nConnection: Close\r\nHost: \r\n\r\n"。否则有可能监控失败,具体为什么必须添加这些目前不清楚。
参考文档:
https://blog.51cto.com/ipneter/221652 F5的HTTP monitor机制
http://blog.csdn.net/since20140504/article/details/38313761 Http连接通信过程
http://blog.csdn.net/hguisu/article/details/8680808 HTTP详解(1)-工作原理