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
版权声明:本文为博主原创文章,转载请附上博文链接!