gpt4 book ai didi

amazon-web-services - 当从实例 X 的 NLB DNS curl 时,内部网络负载均衡器不会路由到实例 X

转载 作者:行者123 更新时间:2023-12-05 02:12:16 27 4
gpt4 key购买 nike

  • 我有一个网络负载平衡器 (NLB) 的内部(解析为私有(private) ips)
  • 端口 80 上的 NLB 监听器指向目标组。目标组中的实例 10.141.80.140 是唯一的。

问题:
当我在实例 10.141.80.140 curl NLB 的 DNS我没有得到回应。
希望 NLB 重定向到 10.141.80.140 但它没有发生。
当我在 10.141.80.140 上时,NLB DNS 仅不重定向 - 重定向从同一子网中的其他实例起作用

详细信息:

  • EC2 10.141.80.140 周围的安全组是世界开放的,入站和出站
  • 当我从同一子网中具有相同安全组和其他设置的另一个实例 10.141.80.122 curl NLB DNS 时 - NLB 正确解析为 10.141.80.140
  • 当我从实例中 curl NLB DNS 时,NLB 应该解析 10.141.80。140 - NLB 没有解析为 10.141.80.140
  • 当我从实例 10.141.80.140 curl 实例 ip 10.141.80.140 时 - 我得到响应
  • 当我从实例 10.141.80.122 curl 实例 ip 10.141.80.140 时 - 我得到响应

问题:
有什么东西阻止 NLB 解析实例的请求,在 NLB 监听器目标组中,哪个会路由回实例?

enter image description here

最佳答案

这是一个众所周知的行为,我很乐意解释。 Network Load Balancer 引入了源地址保留功能 - 传入连接的原始 IP 地址和源端口保持不变。当目标响应请求时,VPC 内部捕获此数据包并将其转发到 NLB,NLB 将其转发到其目的地。

这种行为有一个副作用:当操作系统内核检测到导出数据包的目标地址是本地地址之一时,它会将此数据包直接转发给应用程序。

例如,给定以下组件:

  • 我们有一个内部 NLB 和一个后端实例。两者都部署在子网 10.0.0.0/24 中。
  • NLB 具有 IP 10.0.0.10 和端口 80 上的监听器,该监听器将请求转发到端口 8080。
  • 后端实例的地址为 10.0.0.55,并有一个监听端口 8080 的 Web 服务器。它有一个允许所有传入本地流量的安全组。

  • 如果实例尝试与 NLB 建立通信;通信流程如下:

    • 该实例想要远程登录 NLB:它请求在端口 80 上针对 NLB DNS 名称建立 TCP 连接。
      • 因为它是传出通信,所以它从一个临时端口开始;实例发送 SYN 数据包 (1):
        • 来源:10.0.0.55:40000
        • 目的地:10.0.0.10:80
      • NLB 接收数据包并将其转发到后端实例 (10.0.0.55:80)。
      • 由于地址保留功能,后端实例收到一个包含以下信息的 SYN 数据包:
        • 来源:10.0.0.55:40000
        • 目的地:10.0.0.55:80
      • 操作系统在内部路由数据包(因为它的目的地是自己的机器),这是问题发生的时间:
        • 发起套接字期待来自 10.0.0.10:80(NLB)的 SYN_ACK。
        • 但是,它从 10.0.0.55:40000(实例本身)收到 SYN_ACK。
        • 操作系统将发送多个 TCP_RETRANSMISSION 直到超时。

公共(public) NLB 不会发生这种情况,因为实例需要在 VPC 中执行 NAT 以使用其公共(public) IP 地址将请求发送到 NLB。内核不会在内部转发数据包。

最后,一个可能的解决方法是根据后端的 IP 地址而不是实例 ID 注册后端;使用此方法,NLB 转发的流量将包含 NLB 内部 IP 作为源 IP,从而禁用“源地址保留”功能。不幸的是,如果您使用 AutoScaling 组启动实例,它将只能通过其 ID 注册启动的实例。对于 ECS 任务,将网络配置为“awsvpc”会强制 NLB 通过其 IP 注册每个目标。

关于amazon-web-services - 当从实例 X 的 NLB DNS curl 时,内部网络负载均衡器不会路由到实例 X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56336216/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com