介绍 NLB TCP 可配置的空闲超时

NLB TCP 可配置空闲超时介绍

关键要点

  • AWS 网络负载均衡器(NLB)现支持可配置 TCP 空闲超时。
  • 默认 TCP 连接的空闲超时为 350 秒,可根据需求设置为 60 到 6000 秒。
  • 新空闲超时设置仅影响新建连接,已建立的连接不受影响。

本文将指导您如何为传输控制协议 (TCP) 流配置 AWS 网络负载均衡器 (NLB) 的空闲超时设置。

NLB 是亚马逊网络服务 (AWS) 的一部分,属于 家族,工作于开放系统互联 (OSI) 模型的第 4 层。它管理通过 TCP 或用户数据报协议 (UDP) 的客户端连接,将其分配到一组负载均衡器目标。

NLB 会跟踪从连接建立到关闭或由于非活动(空闲超时)而超时的连接。默认情况下,TCP 连接的空闲超时为 350 秒,而 UDP 连接为 120 秒。

现在,通过新的可配置 TCP 空闲超时,您可以修改此属性,适用于现有和新的 NLB TCP 监听器,并确定 NLB 在终止非活动连接之前需要等待的时间。

理解 TCP 连接建立

在深入探讨之前,我们简要回顾 TCP 协议的运作方式。如需更深入的了解,可以参考 。

![TCP删除)

图 1. TCP 连接建立的多个阶段

TCP 连接经历多个阶段,如建立、数据传输和优雅关闭。

  1. 半开状态 :客户端发送 SYN,服务器响应,但客户端未完成握手。
  2. 已建立 :三方握手完成。
  3. 数据传输 :握手后,客户端与服务器之间可以交换数据。注意,此部分图示已进行调整以便更易阅读。
  4. 关闭 :客户端通过 FIN 数据包发起关闭,导致优雅关机。

NLB 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 空闲超时。

更新 TCP 空闲超时的注意事项

您可以将 NLB TCP 监听器的 TCP 空闲超时调整为 60 到 6000 秒之间的任何值。该更改只影响新建的 TCP连接,而不会影响已经在进行中的连接。其他监听器类型(例如 TLS、UDP)当前不支持空闲超时调整。

在设置空闲超时值之前,请确保您理解应用程序的需求,并考虑 TCP keepalive 是否可能是替代方案。最好将 NLB TCP空闲超时设置得高于您应用程序的 TCP 空闲超时。也就是说,使应用程序处理连接管理和超时,而不是 NLB。

将空闲超时设置得过高会增加流表填充的风险。如果表满了,将导致 NLB 无声拒绝新连接。您应通过新的 指标监控被拒绝的连接情况,以了解需要降低 TCP空闲超时值的情况。

使用 AWS API/CLI 配置 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": 更改超时值。

  1. 找到 NLB TCP 监听器。

![定位 NLB删除)
图 3. NLB TCP 监听器

  1. 属性 部分查看当前的 TCP 空闲超时 值。

删除)
图 4. NLB 监听器属性

  1. 编辑监听器属性 部分输入新的 TCP 空闲超时 值。

删除)

监控

NLB TCP 空闲超时的推出引入了两个新指标:RejectedFlowCount (由于流表满而拒绝的总流量)和 RejectedFlowCount_TCP (因同样原因拒绝的 TCP 流)。这些指标有助于您监控空闲超时设置对系统的影响。

我们建议设置 ,以便在 NLB 开始拒绝流量时通知您。RejectedFlowCount 的增加表明需要降低超时,以便 NLB 更早清除流量,防止流表填满。

现有 NLB 指标,如 NewFlowCount、NewFlowCount_TCP、ActiveFlowCount 和 ActiveFlowCount_TCP,保持不变。

结论

在 NLB 中配置 TCP 空闲超时提供了对连接管理的更大控制,尤其对于需要持久连接的应用。通过调整空闲超时并监控相关指标,您可以优化 NLB性能,防止潜在的连接问题。

作者介绍

删除)

Milind Kulkarni

Milind 是亚马逊网络服务 (AWS) 的首席产品经理。他在网络、数据中心架构、SDN/NFV 和云计算方面拥有 20多年的经验。他是九项美国专利的共同发明人,并共同撰写了三项 IETF 标准。

![Tom删除)

Tom Adamski

Tom 是一名专注于网络的首席解决方案架构师。他在各个行业(从电信公司到小型初创企业)拥有超过 15 年的网络和安全解决方案构建经验。过去 4 年,他帮助 AWS 客户构建其在 AWS 云的网络环境。在闲暇时间,Tom 常常在加利福尼亚海岸寻找冲浪的好地方。

标签 :、

Leave a Reply

Required fields are marked *