一个 VPC 中的 AWS 多 ELB

一个 VPC 中的 AWS 多 ELB

我正在尝试找出最适合我的用例的解决方案。

假设我有 10 个网站需要托管在我的 VPC 中。每个网站都需要位于 Elastic Load Balancer 后面。据我所知,每个 ELB 都需要分配一个 Elastic IP (EIP)。我还创建了多可用区 NAT 实例,以允许从我的实例到 VPC 外部的通信(这些实例也需要与之关联的 EIP)。此外,我还需要创建一些小型网站(博客、内部工具等),我已经为它们分配了一些 EIP。

我是否应该像我希望的那样为每个站点分配一个 EIP(由于区域 EIP 限制,我必须请求更多 EIP)或者我是否应该以更好的方式设置这些站点?

我可以使用基于 apache 名称的虚拟主机来设置这些,并让一个 ELB 路由流量并根据域名选择正确的文档根。

我可以考虑其他类型的解决方案吗?比如某种 Route53 解决方案,可以根据域将流量发送到正确的负载均衡器?

答案1

正如评论中提到的,ELB 不使用弹性 IP 地址 (EIP)。此外,ELB 后面的实例通常不需要公共 IP 地址 - 入站,它们通过 ELB 访问(ELB 也接收它们的回复流量,将回复转发给请求者)和出站 - 对于后端服务请求,实例可以使用 NAT 实例进行 Internet 访问。

创建 ELB 时,会为负载均衡器分配一个主机名。此主机名会(在内部)映射到一个或者更多IP 地址,从公共池动态分配,每个 ELB 与子网关联的可用区至少有一个 IP 地址。由于 ELB 会根据负载自动扩展,并且这些地址是动态的,因此您无法直接将流量指向这些 IP 地址。

“一个”弹性负载均衡器实际上是一个或多个负载均衡器实例的集群,每个实例都有一个公共和私有 IP 地址,所有实例都具有完全相同的配置和行为。这些实例对您来说基本上是不可见的,由 AWS 管理,并且它们包含在 ELB 价格中,无论基础设施决定您需要多少个实例,以提供您提供给它的负载。(您的费用仅因带宽而异)。

由于 ELB 的动态特性,您需要通过 DNS 配置将流量路由到 ELB 端点,以命中分配给 ELB 的主机名(它未在您的 Web 服务器中配置,仅在 DNS 中使用)。如果网站是您域中的主机名,例如wwwwww.example.com那么您可以在 DNS 中使用 CNAME,DNS 可以托管在任何地方……但如果网站位于区域顶点(您的域的顶级,例如example.com),那么您需要使用 Route 53 来托管您的 DNS,以便您可以使用别名A记录将网站的流量路由到您的 ELB。(所有主机名使用别名记录,但它们仅在区域顶点处是必需的,因为 CNAME 记录在该顶点无效)。有了别名,路由 53 便会为您的 ELB 返回一个有效的 IP,并带有一个较短的 TTL,以响应每个请求。

EC2 实例可以与任意数量的 ELB 关联,但一个 ELB 只能向一组实例发送请求 —— 除了在与其关联的所有健康实例之间平衡负载之外,ELB 不会根据任何标准选择实例。

如果您的网站未使用 SSL,那么您可以在一个或多个实例上使用单个 ELB 托管网站,并使用虚拟托管配置来提供正确的内容……但连接到单个 ELB 的所有实例都需要准备好为所有网站提供内容。

如果您的网站使用 SSL,那么每个 SSL 证书都需要一个 ELB。如果 SSL 证书是通配符或多域“UCC”证书,那么您可能仍然只需要一个 ELB...但如果您需要多个证书,那么每个证书都需要一个 ELB,尽管 ELB 仍然可以为一组通用的 EC2 实例提供前端,只要所有这些实例都准备好为所有网站提供服务。

(还有其他配置涉及透明 TCP 模式下的 ELB 和了解PROXY协议和 SNI 的 Web 服务器,但我认为这些是超出问题范围的高级主题)。

无论如何,你都会学到正在做。设置一个 ELB,通过观察应该可以更明显地了解它是如何工作的。

还要注意的是,在配置 ELB 时,通常错误的将 ELB 放在与实例相同的子网上。ELB 肯定需要位于igw-xxxxxxxxVPC 路由表中的“公共”子网上,其中默认路由指向 Internet 网关对象,但是由于您的实例只需要从 ELB 而不是 Internet 访问,因此可以位于“私有”子网上。与传统网络(路由器可能成为瓶颈)不同,VPC 中的“路由器”实际上用于所有流量,即使在同一个子网上也是如此,因此设备位于不同子网上不会对性能造成影响。

答案2

我还创建了多可用区 NAT 实例,以允许从我的实例到 VPC 外部进行通信

这对于 ELB 后面的 Web 服务器的运行来说不是必需的。就 Web 服务器而言,您的访问日志将显示这一点,所有访问都将来自您配置 ELB 占用的子网中的内部私有 IP 地址。实际上,它将显示 ELB 的地址。此流量不会以任何方式传输 NAT 网关。

他们需要对服务器本身所依赖的任何外部服务进行出站访问,并提取用于修补的软件包。此类访问可能不需要多可用区 NAT 的 HA 设置。

相关内容