我使用Amazon Elastic Load Balancer测试TCP连接的可靠性,而不是使用Load Balancer来查看它是否有任何影响。
我已经在Amazon EC2 us-east区域设置了一个小型Elastic Load Balancer,其中8个t2.micro实例使用不带策略的自动缩放组,并设置为8分钟/最大值实例。
每个实例运行一个简单的TCP服务器,该服务器接受端口8017上的连接,并将一些数据中继到来自位于我网络中的另一个远程服务器的客户端。相同的数据将发送给所有客户。
出于测试的目的,在微实例上运行的服务器每60秒仅发送1个字节的数据(以确保连接不会超时)。 我使用提供的ELB DNS名称连接来自不同外部网络的多个客户端,在大概6-24小时后,我总是停止接收数据,最终连接全部消失。
所有客户端都在同一时间停止,即使它们位于不同的网络/ ISP上。每个"客户"应用程序正在进行大约10个TCP连接,它们都停止接收数据。
发生这种情况后,所有服务器实例看起来都很好,它们仍会发送数据。 为了进一步测试并消除TCP服务器代码问题,我还将外部客户端直接连接到单个实例的公共IP,没有ELB,并且在这种情况下数据不会停止并且连接不会丢失(到目前为止)。
负载平衡器空闲超时设置为900秒。 启用跨区域负载平衡,我使用以下区域:us-east-1e,us-east-1b,us-east-1c,us-east-1d
我阅读了文档,并在各处搜索,看看这是否是一个已知的行为,但我无法找到任何明确的答案或确认其他人有同样的问题,但似乎很明显它发生在我的情况下
我的问题:这是TCP负载均衡器的已知/预期行为吗?否则,任何想法可能是我的设置中的问题?