如何避免导致 TCP 连接时间延迟的连接冲突 - AWS Global Accelerator

如何避免导致 TCP 连接时间延迟的连接冲突

间歇性连接问题可能是由 AWS Global Accelerator 中的连接冲突引起。当用户在特定场景下通过相同的源 IP 和源端口访问 Global Accelerator 中的资源时,可能会发生这些情况。冲突可能导致通过加速器的流量出现 TCP 连接时间延迟。

您可以通过为加速器配置端口覆盖来避免这些延迟,端口覆盖是 Global Accelerator 中的一项功能,使您可以将传入流量路由到加速器端点上的其它目标端口。按照本节中的指导,了解如何使用端口覆盖来防止连接冲突并避免潜在的 TCP 连接时间延迟。

可能导致连接冲突的情况

Global Accelerator 中有三种情况可能导致连接冲突,从而导致 TCP 连接时间延迟:

  • 您将相同的资源配置为具有多个加速器的端点。

  • 您将资源配置为 Global Accelerator 后端端点,还直接通过互联网将流量从最终用户发送到相同的资源。

  • 您为跨区域流量配置网络负载均衡器端点。

对于网络负载均衡器端点,建议禁用负载均衡器的跨区域流量,以避免连接冲突。有关更多信息,请参阅《网络负载均衡器用户指南》中的 TCP 连接延迟

对于其它情况,建议在端点组中使用端口覆盖功能以防止冲突。通过使用端口覆盖,您可以将 Global Accelerator 侦听器端口映射到端点资源上的不同目标端口号。默认情况下,侦听器端口使用端点资源上的相同端口号。通过使用端口覆盖,加速器可以将来自相同用户(具有源 IP 和源端口)的流量路由到相同的端点,但使用不同的目标端口号,从而避免冲突。

下一节将为每种情况提供具体示例,说明如何配置端口覆盖以避免连接冲突。有关配置端口覆盖的更多信息,请参阅为受限端口或连接冲突覆盖侦听器端口

如何通过使用端口覆盖来防止连接冲突

默认情况下,加速器使用在创建侦听器时指定的相同协议和相同目标端口范围将用户流量路由到 AWS 区域中的端点。但是,您可以选择覆盖侦听器端口的端口号映射。也就是说,您可以映射侦听器端口号,以将流量路由到端点上的其它目标端口号。

例如,如果您定义了一个接受端口 80 和 443 上的 TCP 流量的侦听器,默认情况下,加速器会将流量路由到端点上的相同端口 80 和 443。但是,通过使用端口覆盖功能,加速器可以将这些端口上传入的流量路由到端点上的不同端口,例如 8080 和 8443。

通过为两个(或更多)加速器中的侦听器创建不同的端口映射,并在其后配置相同的资源,可以为每个加速器使用不同的目标端口号,从而避免冲突。

例如,假设有加速器 A 和加速器 B,并且每个加速器都有一个为 TCP 和端口 443 配置的侦听器。您可以为加速器 A 的侦听器设置端口覆盖,将端口 443 映射到 8443,并为加速器 B 的侦听器设置端口覆盖,将端口 443 映射到 9443。现在,将应用程序负载均衡器端点(例如 ALB-1234)配置为同时侦听端口 8443 和 9443。然后,从同一个用户 IP 地址进入端口 443(两个加速器的侦听器)的流量将到达 ALB-1234,而不会出现连接冲突或 TCP 连接时间延迟。

您可以看到此示例的流量路径,如下所示:

Accelerator-A [listener: tcp,443] → Endpoint-Group [port-override: 443→8443] → ALB-1234 (listener: HTTPS,8443)

Accelerator-B [listener: tcp,443] → Endpoint-Group [port-override: 443→9443] → ALB-1234 (listener: HTTPS,9443)

您可以通过类似的方式使用端口覆盖,通过覆盖加速器的侦听器端口号的默认映射,防止资源在被直接用户访问和通过加速器访问时产生连接冲突。在这种情况下,要防止发生冲突,请执行以下操作:

  1. 确定希望资源侦听直接流量的端口。

  2. 为加速器配置侦听器以覆盖默认端口,并将资源上的侦听器配置为在该端口上侦听加速器流量。

例如,您可以为加速器的侦听器设置端口覆盖,以将端口 443 映射到端口 8443。例如,现在可以配置一个应用程序负载均衡器端点,以侦听端口 8443 上的加速器流量和端口 443 上的直接流量。使用此配置,可以避免来自同一用户 IP 地址的流量在应用程序负载均衡器上发生连接冲突。