故障現象:
后端有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)-工作原理