1、TCP-HALF-OPEN方式

TCP-HALF-OPEN的探測方式,實際是F5每隔一個固定的時間,傳送一個SYN包給資源池pool中的一個member,等待伺服器返回SYN_ACK,在收到SYN_ACK後,F5會使用RST,將該連線重置。

若F5在發出SYN包後,超過規定的時間仍未收到SYN_ACK,則認為這個member不可用,不再向這個member分配應用流量。

F5預設內建了一個tcp-half-open的monitor,具體配置介面如下:

從圖中可以看到預設的,tcp_half_open的健康檢查方式,探測間隔為5秒,超時時間為16秒。

下面來看一下具體的資料包:

在F5上抓包,利用wireshark對抓包檔案進行過濾,192.168.92.7為F5的self ip,192.168.92.11為健康檢查目標伺服器。

通過Time 列可以看出,每隔約5秒鐘,F5發起一次健康檢查,F5傳送SYN包與伺服器建立TCP連線,伺服器響應SYN包,同時伺服器TCP狀態變為SYN_RCVD,回覆SYN_ACK報文,F5在收到SYN_ACK後,向member伺服器傳送RST包,將該連結重置,伺服器收到RST包後,TCP狀態重新變為listen狀態。

F5內建的monitor中,還有一個TCP monitor,他與TCP_HALF_OPEN的區別,主要是TCP monitor是通過傳送FIN包的方式,正常中斷連線的。TCP_HALF_OPEN相對於TCP的方式,傳送包的數量更少。但是由於採用RST的方式中斷連線,可能會出現問題(目前還沒有碰到),需要前期進行測試。

需要注意的是:

tcp_half_open和tcp這種健康檢查方式,只能判斷目標伺服器的tcp埠是否處於listen狀態,判斷目標伺服器是否有建立TCP連線的能力,不能完全用來判斷應用的可用性。這並不是一種理想的健康檢查方式。
---------------------  
作者:BBIE  
來源:CSDN  
原文:https://blog.csdn.net/sinat_17736151/article/details/82720288  
版權宣告:本文為博主原創文章,轉載請附上博文連結!