图中的箭头仅指示连接建立的方向,而不指示流量。
是的,回程流量通过ELB返回。
但是,它不是有状态的NAT,而是TCP连接代理。ELB机器在已配置的侦听端口上接受TCP连接,如果已配置,则终止SSL会话,并建立与后端服务器的新TCP连接。如果将侦听器配置为使用HTTP,则ELB会以有效载荷感知模式运行,将HTTP请求解析,记录并转发到后端,否则它是与有效载荷无关的,并与后端建立1:1的新TCP连接每个传入的连接,并“将管道绑在一起”(无需HTTP级别的了解或修改)。
无论哪种方式,到应用程序的传入连接的源地址都将是ELB节点的源地址,而不是原始客户端。这就是响应流量返回到ELB并返回到客户端的方式。
在http模式下,ELB添加(或附加)X-Forwarded-For
报头,以便您的应用程序可以标识原始客户端IP,并X-Forwarded-Proto: [ http | https ]
指示客户端连接是否使用SSL并X-Forwarded-Port
指示前端端口。
更新:上面提到的是一种负载均衡器,现在称为“ ELB Classic”或ELB / 1.0(在通过HTTP运行状况检查发送的用户代理字符串中找到)。
对于流量,较新的第7层平衡器,应用程序负载平衡器或ELB / 2.0的运行方式类似。从ALB中删除了第4层(“透明” TCP)功能,并且显着增强了第7层功能。
最新类型的负载平衡器网络负载平衡器是第3层平衡器。与其他两个不同,它的行为与动态NAT非常相似,仅处理入站(外部起源)连接,通过EIP将add-addr + port通过EIP-addr + port映射到instance-private-ip:adde + port。绑定到“平衡器”-与其他两种类型的平衡器不同,实例需要位于公共子网中,并为此使用自己的公共IP。
从概念上讲,网络负载平衡器似乎实际上是在修改Internet网关的行为-它本身是一个不能被禁用,替换或以任何有意义的方式经历故障的逻辑对象。这与实际上在“隐藏” EC2实例上运行的ELB和ALB相反。NLB从各个方面来说都是在网络基础架构上运行的。