架构:
我们有一系列物联网设备通过AWS网络负载平衡器(NLB)连接到后端服务器。这是一个双向通道(不是请求-响应样式,而是从任何一方传递给另一方的消息)。
目标:
如何在不活动期间保持连接(NLB的两侧)处于活动状态。
说明:客户端经常进入非活动模式,并且不会向服务器发送(或接收)任何内容。如果此状态持续时间超过 350 秒(NLB 的连接空闲超时值),LB 将以静默方式终止连接。这很糟糕,因为我们到处都看到很多RST数据包。
问题:
SO_KEEPALIVE
功能,可以在我们的后端服务器上启用它。这将保持后端服务器和NLB之间的连接处于活动状态。但客户呢?NLB是否将TCP保持活跃的数据包转发给另一方?(这里说没有)。如果没有,如何保持客户端连接打开?(此时,我正在考虑发送一条空消息以保持连接。)不是答案,只是记录我发现/做的事情:
最后,我们在应用层实现了保持活动功能(定期向客户端发送空消息。)
AWS 文档称,NLB TCP 侦听器能够通过 TCP 保持活动状态数据包保持连接活动状态:链接
对于 TCP 侦听器,客户端或目标可以使用 TCP 保持活动数据包来重置空闲超时。
根据我的测试,客户端正在接收服务器发送的保持活动的TCP数据包,并且正确地回复了。服务器不会中断连接,这意味着它会收到客户端的响应。这意味着NLB TCP侦听器实际上转发了保持活动的数据包。
基于相同的文档,NLB TLS侦听器不应该对TCP保活数据包做出相同的反应。
TLS侦听器不支持TCP keepalive数据包。
但是,当Wireshark显示通过TLS侦听器连接的客户端上收到的保活数据包时,实际测试结果令我震惊。我两个月前的测试结果与我现在的情况不符,我想行为可能会改变。(以前,即使客户端以意外方式变得不可用,服务器也会保持连接)
我正在创建一个客户端服务器应用程序。服务器已经设计好,等待从客户端连接。现在在客户机部分中,我希望在应用程序的整个生命周期中保持连接活动,并且只有当主客户机应用程序关闭或关闭或者服务器关闭它时,连接才会关闭。 在处理程序中我有:
如何将aws应用型负载均衡器和网络负载均衡器直接与自动缩放组(ASG)连接?在AWS控制台中,只有经典负载均衡器可用。我想要的是,每当在自动缩放组中启动实例时,它将开始直接向应用程序/网络负载均衡器报告,而不是手动输入目标组中的每个实例。
我有以下关于连接和TCP保持活动状态的查询: 对于TCP连接,TCP保持活动状态是强制性吗? 保持活动状态的持续时间是固定的还是可配置的? 假设“保持活动”间隔为每15秒一次,那么“保持活动”是始终每15秒发送一次,还是仅在15秒内未发送应用程序数据时才发送? 服务器(通过TCP与客户机连接)如何判断与客户机的连接是否完整?是否可以使用TCP keepalive完成?在这种情况下,是否是服务器需要
问题内容: 我正在使用POST方法。我需要创建一次,并且应该使用Keep Alive Connection。但是我认为,它每次都会建立一个新的连接。 因此,我需要使用 保持活动 连接。 这是我的代码段,很多帮助将不胜感激。 而且logcat日志是: 问题答案: 10:07:29.746:D / org.apache.http.headers(1529):>>连接:保持活动 您正在要求保持活动状态。
AWS推出了应用程序负载平衡器,可以进行基于路径的路由。是否可以将经典负载平衡器放在应用程序负载平衡器之后。 示例:假设我们有两个经典的负载平衡器。应用程序负载平衡器将流量路由到所有url(如应用程序负载平衡器/前端)的第一个经典负载平衡器,并将流量路由到所有url(如应用程序负载平衡器/后端)的第二个经典负载平衡器* 目前,似乎我们只能将主机置于应用程序负载平衡器之后。是否可以将负载平衡器置于应
在我的AWS帐户中,我当前有一个网络负载平衡器(TCP),它指向两个可用性区域(web服务器)上的两个Ec2实例,每个可用性区域都运行一个tomcat,它指向一个Ec2实例,即应用程序服务器/数据库。 在NLB上,粘性会话是启用的,因此当我在单个选项卡上从Chrome访问网络服务器时,一切正常,我的所有用户流量都发送到单个网络服务器。当我打开一个新选项卡时,似乎启动了一个新会话,我的用户流量可以发