我们有一个如下的网络设置:
MQTT Client -- TCP Forward (Netscaler) -- TLS Termination + TCP Forwarding (HAProxy) -- MQTT Server
由于多种原因,我们需要在 HAProxy 中打开 TCP KeepAlives,因为客户端的超时时间很长,而 HAProxy 背后的网络基础设施不支持这种超时时间。
根据 Wireshark,这些 TCP-KA 已从 HAProxy 正确发送到其他对等点,但在某些会话中,到 Netscaler 端的 TCP KeepAlives 未被确认,从而导致连接断开。
我现在想知道问题出在 Netscaler 还是 MQTT 客户端。KeepAlive 通常只发送给下一个对等方吗?还是它们是一种“端到端”?或者换句话说 - 谁应该确认 HAProxy 发送的 TCP-KeepAlive - Netscaler 还是 Mqtt 客户端?