Amazon web services 当从实例X从NLB DNS进行curl时,内部网络LoadBalancer不会路由到实例X 我有一个内部网络负载平衡器(NLB)(解析为专用IP) 端口80上的NLB侦听器指向目标组。目标群体中只有一个实例10.141.80.140
问题:Amazon web services 当从实例X从NLB DNS进行curl时,内部网络LoadBalancer不会路由到实例X 我有一个内部网络负载平衡器(NLB)(解析为专用IP) 端口80上的NLB侦听器指向目标组。目标群体中只有一个实例10.141.80.140,amazon-web-services,nlb,Amazon Web Services,Nlb,问题: 当我在实例10.141.80.140上和卷曲NLB的DNS时 我没有得到回应 我预计NLB将重定向到10.141.80.140,但它没有发生 当我在10.141.80.140上时,NLB DNS仅不重定向-重定向从同一子网中的其他实例起作用 详细信息: EC2 10.141.80.140周围的安全组是世界公开的、入站和出站的 当我从具有相同安全组和其他设置的同一子网中的另一个实例10.141.80.122卷曲NLB DNS时,NLB将正确解析为10.141.80.140 当我从实例中卷
当我在实例10.141.80.140上和卷曲NLB的DNS时 我没有得到回应
我预计NLB将重定向到10.141.80.140,但它没有发生
当我在10.141.80.140上时,NLB DNS仅不重定向-重定向从同一子网中的其他实例起作用 详细信息:
- EC2 10.141.80.140周围的安全组是世界公开的、入站和出站的
- 当我从具有相同安全组和其他设置的同一子网中的另一个实例10.141.80.122卷曲NLB DNS时,NLB将正确解析为10.141.80.140
- 当我从实例中卷曲NLB DNS时,NLB应解析为10.141.80。140-NLB不解析为10.141.80.140
- 当我从实例10.141.80卷曲实例ip 10.141.80.140时。140-我得到一个响应
- 当我从实例10.141.80卷曲实例ip 10.141.80.140时。122-我得到一个响应
是否存在阻止NLB解析实例请求的因素, 哪个将路由回NLB侦听器目标组中的实例
这是一个众所周知的行为,我很乐意解释一下。网络负载平衡器引入了源地址保留功能-传入连接的原始IP地址和源端口保持不变。当目标应答请求时,VPC内部捕获该数据包并将其转发给NLB,NLB将其转发到其目的地 这种行为有一个副作用:当操作系统内核检测到出口数据包的目标地址是一个本地地址时,它会将该数据包直接转发给应用程序 例如,给定以下组件:
- 我们有一个内部NLB和一个后端实例。两者都部署在子网10.0.0.0/24中
- NLB具有IP 10.0.0.10和端口80上的侦听器,该侦听器将请求转发到端口8080
- 后端实例的地址为10.0.0.55,并且有一个web服务器侦听端口8080。它有一个安全组,允许所有传入的本地通信
- 如果实例试图与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_重传,直到超时
- 因为它是一个传出的通信,所以它从一个短暂的端口开始;实例发送一个SYN数据包(1):
- 该实例希望远程登录NLB:它请求针对端口80上的NLB DNS名称建立TCP连接。