EC2-如何通过单个公共IP路由出站流量

EC2-如何通过单个公共IP路由出站流量

我在 vpc 公共子网中拥有 3 个 Web 服务器(ec2 实例),它们都有 EIP。

我有常用的 Internet 网关和路由来确保这些实例能够调用外部服务,并且有一个负载均衡器(ELB)在这些实例之间轮换传入流量。

主要问题是服务器上的应用程序将连接到许多外部服务/API,但其中一些服务需要 IP 白名单。我们现在要做的是为实例分配一个 EIP,转到该服务的控制面板,添加新的 EIP 并继续运行,但我们遇到了限制,无论是我们帐户可用的 EIP 数量(是的,我知道它可以增加,但仍然如此),还是这些外部服务中可列入白名单的 IP 数量。

鉴于我们希望保持自动扩展,我想请教如何通过单个 EIP 路由所有实例生成的流量,而不会丢失当前的内部工作。除非使用 DNS,否则针对这些服务的固定特殊路由并不是非常灵活,主要是因为我们无法提前知道它们的所有 IP 池。

我已经阅读了有关 NAT 网关的信息,但我不确定架构的负载平衡部分是否会保持运行,Web 服务器是否能够响应请求等。

答案1

是的,您可以使用 NAT 网关或者NAT 实例与 ELB 结合......这是将内部发起的出站流量与外部服务列入白名单的最明智方法。

NAT 网关始终有一个静态公共 IP 地址。

在创建 NAT 网关时,您必须指定一个与之关联的弹性 IP 地址。

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html

此配置要求实例不具有自己的公共 IP 地址,并且不位于默认路由指向 Internet 网关的公共子网中。实例子网的默认路由在配置后需要指向 NAT 设备。

反过来,这意味着您的 ELB 不能与实例位于同一子网,因为 ELB 子网必须将 Internet 网关作为其默认路由。

来自实例的响应流量被导向 ELB 的内部 IP 地址,因此不受实例子网的默认路由的影响,因此此配置不会中断对 ELB 请求的回复流量。

虽然有些人觉得这很奇怪,但将 ELB 放置在与其后面的实例不同的子网上是标准配置。与路由器可能成为瓶颈的传统网络不同,ELB 及其平衡实例位于彼此不同的子网上不会产生负面性能考虑。整个 VPC 网络是一个软件定义的虚拟网络,因此位于不同的子网上并不意味着流量将通过不必要的路由器,就像在物理以太网网络上一样。实例之间的所有流量都遵循通过 VPC 基础设施的类似路径。

也可以看看为什么我们需要 VPC 中的私有子网?在 Stack Overflow 上。

答案2

好消息 - Amazon 为此添加了一种新型负载均衡器(网络负载均衡器)。您可以为其分配一个弹性 IP 地址,然后就可以看到负载均衡器的静态 IP!

它基于 TCP 协议而非 HTTP 协议,因此您无法在负载均衡器上使用 SSL(每个 Web 服务器都需要证书),并且它没有“粘性”选项(但它的粘性非常强)。除此之外,它的工作原理与“应用程序”负载均衡器一样。

相关内容