问题:
当我在实例10.141.80.140 上并
我希望NLB重定向到10.141.80.140 ,但这不会发生。
当我在10.141.80.140上时,NLB DNS仅不重定向-重定向是从同一子网中的其他实例进行的
详细信息:
问题:
有什么东西会阻止NLB解决实例的请求,
在NLB侦听器目标组内将哪个路由返回到实例?
答案 0 :(得分:0)
这是一个众所周知的行为,我将很高兴解释。 Network Load Balancer引入了源地址保留功能-传入连接的原始IP地址和源端口保持不变。当目标响应请求时,VPC内部人员将捕获此数据包并将其转发到NLB,NLB会将其转发到其目的地。
此行为有一个副作用:当OS内核检测到出口数据包具有本地地址之一作为目标地址时,它将将该数据包直接转发到应用程序。
例如,给定以下组件:
后端实例的地址为10.0.0.55,并且具有侦听端口8080的Web服务器。它具有允许所有传入的本地流量的安全组。
如果该实例尝试与NLB建立通信;通讯流程如下:
对于公共NLB不会发生这种情况,因为该实例将需要在VPC中进行NAT才能使用其公共IP地址将请求发送到NLB。内核将不会在内部转发数据包。
最后,可能的解决方法是按照后端的IP地址而不是实例ID来注册后端。使用此方法,由NLB转发的流量将包含NLB内部IP作为源IP,从而禁用了“源地址保留”功能。不幸的是,如果您正在使用AutoScaling组启动实例,则它只能通过其ID注册已启动的实例。对于ECS任务,将网络配置为“ awsvpc”会强制NLB通过其IP注册每个目标。