ELB是否还在AWS中路由出站回复流量


8

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

我有一个亚马逊推荐的设置,在公共子网中有ELB和NAT,在私有子网中有Web服务器。我有按照http://blogs.aws.amazon.com/security/blog/tag/NAT配置的安全组(SG),所有这些都可以正常运行。大!

具有Amazon VPC配置的参考架构

我还不了解的是在上述架构中如何从Web服务器实例返回HTTP答复。

因此,来自公共互联网的HTTP请求通过HTTP,80命中ELB,ELB将其带到Web服务器的专用IP,很酷。现在,网络服务器必须回复。据我了解,答复将通过另一个更高的TCP端口(1024-65535)。NAT SG仅允许通过端口80和443进行出站通信。因此,此答复如何返回到公共Internet。它不能通过NAT。这是否意味着答复将通过ELB返回。Amazon图没有将ELB流量方向箭头指示为双向,ELB文档也没有指出ELB的行为类似于有状态NAT。可以?

Answers:


11

图中的箭头仅指示连接建立的方向,而不指示流量。

是的,回程流量通过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从各个方面来说都是在网络基础架构上运行的。


谢谢。您能否详细说明可感知有效负载,不可知负载的模式?网络服务器还可以知道原始连接是否通过SSL吗?
阿里

我已经在答案中添加了一些其他信息来解决这些问题。
Michael-sqlbot

and unlike the other two types of balancers, the instances need to be on public subnets, and use their own public IPs for this. 我很高兴读这篇。您可以提供此信息的参考吗?
费利佩·阿尔瓦雷斯

1
事实证明,@ FelipeAlvarez的完整图像要复杂得多。尽管这是最直观的配置,但是Network Load Balancer与实际的网络基础结构集成在一起,从而可以从目标实例捕获TCP流(大概是通过网络状态表),并且可以重写它们并按预期工作,即使实例不是以这种方式配置的。目标实例需要VPC中声明的默认路由-返回数据包将忽略该默认路由,但仍必须存在该路由。缺少默认路由会创建一个黑洞。
Michael-sqlbot

1

根据适用于NLB的AWS文档,它是第4层而不是第3层。而且后端或目标服务器也不必位于公共子网中。实际上,目标组的IP地址范围必须是以下之一:可能的目标类型如下:

instance由实例ID指定目标。

ip目标由IP地址指定。

当目标类型为ip时,可以从以下CIDR块之一指定IP地址:

目标组的VPC子网

10.0.0.0/8(RFC 1918)

100.64.0.0/10(RFC 6598)

172.16.0.0/12(RFC 1918)

192.168.0.0/16(RFC 1918)

重要

您不能指定可公开路由的IP地址。

我希望这有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.