本文将指导您如何为传输控制协议 (TCP) 流配置 AWS 网络负载均衡器 (NLB) 的空闲超时设置。
NLB 是亚马逊网络服务 (AWS) 的一部分,属于 家族,工作于开放系统互联 (OSI) 模型的第 4 层。它管理通过 TCP 或用户数据报协议 (UDP) 的客户端连接,将其分配到一组负载均衡器目标。
NLB 会跟踪从连接建立到关闭或由于非活动(空闲超时)而超时的连接。默认情况下,TCP 连接的空闲超时为 350 秒,而 UDP 连接为 120 秒。
现在,通过新的可配置 TCP 空闲超时,您可以修改此属性,适用于现有和新的 NLB TCP 监听器,并确定 NLB 在终止非活动连接之前需要等待的时间。
在深入探讨之前,我们简要回顾 TCP 协议的运作方式。如需更深入的了解,可以参考 。
![TCP删除)
图 1. TCP 连接建立的多个阶段
TCP 连接经历多个阶段,如建立、数据传输和优雅关闭。
NLB 作为一个第 4 层代理,跟踪每个建立的连接并将其保存在流表中。处于半开、优雅关闭或被客户端或服务器重置的连接不会被跟踪。
单个连接由五元组定义,包括协议(TCP)、源 IP 地址、源端口、目标 IP 地址和目标端口。
![NLB删除)
图 2. NLB 部署架构示例
默认情况下,如果客户端与目标之间在 350 秒内没有流量,则该连接将从 NLB 流表中移除。如果客户端在此连接已经不再被跟踪后试图发送流量,NLB将响应一个 TCP RST,标志着需要建立新连接。
对于许多应用来说,连接超时可能是可以接受的,但在某些情况下,这可能会导致问题。例如,定期发送小数据量的物联网 (IoT) 设备在每次数据发送时重连,尤其是加密连接,会消耗资源并增加成本。
要防止连接超时,您可以设置 TCP keepalive,它会在已建立的连接上以预定义的间隔发送探测包。虽然这些探测包不包含数据,但足以重置中间系统,例如 NLB 的空闲计时器。有关设置 TCP keepalive 的更多信息,请参考我们 。
如果您的应用需要持久的 TCP 连接且无法使用 TCP keepalive,则可以修改 NLB 上的 TCP 空闲超时。
您可以将 NLB TCP 监听器的 TCP 空闲超时调整为 60 到 6000 秒之间的任何值。该更改只影响新建的 TCP连接,而不会影响已经在进行中的连接。其他监听器类型(例如 TLS、UDP)当前不支持空闲超时调整。
在设置空闲超时值之前,请确保您理解应用程序的需求,并考虑 TCP keepalive 是否可能是替代方案。最好将 NLB TCP空闲超时设置得高于您应用程序的 TCP 空闲超时。也就是说,使应用程序处理连接管理和超时,而不是 NLB。
将空闲超时设置得过高会增加流表填充的风险。如果表满了,将导致 NLB 无声拒绝新连接。您应通过新的 指标监控被拒绝的连接情况,以了解需要降低 TCP空闲超时值的情况。
AWS 在推出 TCP 空闲超时的同时引入了新的 API。以下示例展示了这些 API 的使用。
描述 NLB 监听器以找出当前的 TCP 空闲超时值
输入:
bash aws elbv2 describe-listener-attributes \ --listener-arnarn:aws:elasticloadbalancing:us- east-1:000011112222:listener/network/NLBTest/123/123
输出:
`json { "Attributes": 更改超时值。
![定位 NLB删除)
图 3. NLB TCP 监听器
删除)
图 4. NLB 监听器属性
删除)
NLB TCP 空闲超时的推出引入了两个新指标:RejectedFlowCount (由于流表满而拒绝的总流量)和 RejectedFlowCount_TCP (因同样原因拒绝的 TCP 流)。这些指标有助于您监控空闲超时设置对系统的影响。
我们建议设置 ,以便在 NLB 开始拒绝流量时通知您。RejectedFlowCount 的增加表明需要降低超时,以便 NLB 更早清除流量,防止流表填满。
现有 NLB 指标,如 NewFlowCount、NewFlowCount_TCP、ActiveFlowCount 和 ActiveFlowCount_TCP,保持不变。
在 NLB 中配置 TCP 空闲超时提供了对连接管理的更大控制,尤其对于需要持久连接的应用。通过调整空闲超时并监控相关指标,您可以优化 NLB性能,防止潜在的连接问题。
删除)
Milind 是亚马逊网络服务 (AWS) 的首席产品经理。他在网络、数据中心架构、SDN/NFV 和云计算方面拥有 20多年的经验。他是九项美国专利的共同发明人,并共同撰写了三项 IETF 标准。
![Tom删除)
Tom 是一名专注于网络的首席解决方案架构师。他在各个行业(从电信公司到小型初创企业)拥有超过 15 年的网络和安全解决方案构建经验。过去 4 年,他帮助 AWS 客户构建其在 AWS 云的网络环境。在闲暇时间,Tom 常常在加利福尼亚海岸寻找冲浪的好地方。
标签 :、
Leave a Reply