架构:
我们有一堆通过AWS网络负载均衡器(NLB)连接到我们后端服务器的IoT设备。
这是一个双向通道(不是请求响应方式,而是从任意一方传递消息到另一方)。
目标:
如何在不活动期间保持连接(NLB的双方)。
描述: 经常客户端进入非活动模式,不发送(或接收)任何来自(或发往)服务器的信息。如果此状态持续时间超过 NLB 的连接空闲超时值 350 秒,则 LB 会默默地关闭连接。这很糟糕,因为我们随处看到 RST 数据包。
问题:
- 我知道
SO_KEEPALIVE
功能,并可以在我们的后端服务器上启用它。这将保持后端服务器和 NLB 之间的连接保持活动状态。但是客户端呢? NLBs是否会将 TCP keep-alive 数据包转发到另一方?(这里说它不会) 如果不行,如何保持客户端连接开放?(目前,我正在考虑发送空消息以保持连接。) - 这种行为是特定于 AWS NLBs 还是负载均衡器一般都是这样工作的?