我一直在遇到一些与我的VPS托pipe服务提供商有关的服务器问题,我一直在收到间歇性的连接错误。
我已经完成了服务器的局域网跟踪,我发现我认为负载均衡器(由主机提供商提供)连接到服务器之间的问题。
在跟踪中,我看到负载均衡器发送SYN,服务器响应SYN ACK,然后负载均衡器发回RST ACK,如下面的代码片段所示
192.168.255.20是负载均衡器,192.168.173.16是服务器。
从我对TCP的理解看,RST数据包跟踪是一件坏事,因为它意味着数据包无法识别,无效的连接,套接字不能打开等,并由于问题而中止连接。
我向我的托pipe服务提供商询问了这一点,他们说它正常,它只是负载平衡器和服务器之间的TCP健康检查的一部分。
这使我感到有点奇怪,我找不到任何具体的TCP健康检查做一些不同于普通的TCP连接的东西,但我认为健康检查就像打开连接到套接字一样简单,然后closures。
我testing了这一点,从我的笔记本电脑到家里的一个linux盒子,然后我看到笔记本电脑发送SYN,接收SYN ACK,笔记本电脑发回ACK。 当我断开连接时,然后从每个设备获得FIN,然后FIN ACKclosures连接。 这是我期望从负载平衡器看到的。
我再次与我的托pipe服务提供商询问,他们回来了以下声明:
TCP健康检查中的重要数据包是来自后端节点的“SYN ACK”。 一旦后端节点证实TCP协议启动并且响应“SYN ACK”包,“RST ACK”就简单地丢弃连接。
这是一个健康检查,而不是一个连接,本身。
这是否听起来是正确的,因为我不能看到任何关于特定的TCP健康检查,在这种情况下,RST数据包将预计。
谢谢