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連接的能力,不能完全用來判斷應用的可用性。
這種方式是最通用的健康檢查方式,目前也是業界通用的,不需要業務系統關注的方式。
TCP握手過程
TCP過程詳解: https://www.linuxidc.com/Linux/2019-06/159107.htm
---------------------
作者:BBIE
來源:CSDN
原文:https://blog.csdn.net/sinat_17736151/article/details/82720288
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!