ELB是否也在AWS中路由出站回复stream量

我一直在试图了解在具有公共/私有子网的AWS VPC中工作路由的方式。

我有一个由亚马逊推荐的设置,公共子网中的ELB和NAT以及私有子网中的networking服务器。 我有安全组(SG)根据http://blogs.aws.amazon.com/security/blog/tag/NAT进行configuration,并且都按预期工作。 大!

使用Amazon VPC配置的参考体系结构

我不明白的是如何在上述体系结构中的Web服务器实例返回HTTP答复。

所以一个networking请求通过HTTP从公共互联网进入,80个点击ELB和ELB把它带到networking服务器的私有IP,很酷。 现在networking服务器必须回复。 据我所知,答复将通过不同的更高的TCP端口(1024-65535)。 NAT SG只允许通过端口80和443的出站stream量。那么这个回复如何回到公共互联网。 它不能通过NAT。 这是否意味着通过ELB回复。 亚马逊图不会将ELBstream量方向箭头指示为双向,ELB文档也不会将ELBperformance为有状态的NAT。 可以?

图中的箭头只表示连接build立的方向 – 而不是交通stream量。

是的,返回stream量通过ELB返回。

但是,这不是一个有状态的NAT – 它是一个TCP连接代理。 ELB机器在已configuration的侦听端口上接受TCP连接,如果已configuration,则终止SSL会话,并与后端服务器build立新的TCP连接。 如果侦听器configuration为HTTP,则ELB以有效负载感知模式parsing,logging和转发HTTP请求到后端,否则它是与payload无关的,build立到后端的新的TCP连接1:1对于每个传入的连接,以及“将pipe道连接在一起”(没有HTTP级别的意识或修改)。

无论采用哪种方式,到应用程序的传入连接的源地址将是ELB节点的源地址,而不是原始客户端。 响应stream量如何返回ELB返回给客户端。

在http模式中,ELB添加 (或附加到) X-Forwarded-For头,以便您的应用程序可以识别原始客户端IP以及X-Forwarded-Proto: [ http | https ] X-Forwarded-Proto: [ http | https ]来指示客户端连接是否使用SSL和X-Forwarded-Port来指示前端端口。


更新:上面指的是一种现在被称为“ELB Classic”或ELB / 1.0的负载均衡器(在使用HTTP健康检查发送的用户代理string中)。

较新的第7层平衡器,应用程序负载均衡器或ELB / 2.0的操作方式与交通stream量相似。 第4层(“透明”TCP)function从ALB中删除,第7层function显着增强。

最新types的负载均衡器networking负载平衡器是一个三层平衡器。 与其他两个不同,它的行为非常像dynamicNAT,仅处理入站(外部发起)连接,通过EIP-addr +端口将source-addr +端口映射到instance-private-ip:adde + port – 与EIP绑定到“平衡器” – 而不像其他两种types的平衡器,实例需要在公共子网上,并使用自己的公有IP。

从概念上讲,networking负载平衡器似乎实际上修改了互联网网关的行为,而互联网网关本身就是一个逻辑对象,不能在任何有意义的意义上被禁用,取代或遭遇失败。 这与ELB和ALB实际上在“隐藏的”EC2实例上运行相反。 NLB在networking基础架构本身上运行。