AWS - ELB 可用区 + VPC 最佳实践?

Posted

技术标签:

【中文标题】AWS - ELB 可用区 + VPC 最佳实践?【英文标题】:AWS - ELB Availability Zones + VPC best practices? 【发布时间】:2017-07-05 00:45:56 【问题描述】:

在设置 ELB 时,它会说:

您必须从至少两个可用区中指定子网,以提高负载均衡器的可用性。

我目前有两个 VPC:

    WebVPC
      public-subnet-us-east-1a private-subnet-us-east-1b
    数据库VPC
      public-subnet-us-east-1a private-subnet-us-east-1b

ELB 仅适用于 WebVPC(为 Web 流量提供服务)。我目前每个 VPC 只有一个公有子网和一个私有子网,这意味着我只能从我的 WebVPC 向 ELB 提供一个公有子网。

这是否意味着最好有两个公共子网和至少两个私有子网?

【问题讨论】:

【参考方案1】:

您的架构不是高度可用。最佳实践是跨多个可用区 (AZ) 复制服务,以防一个 AZ 出现故障(如果数据中心出现故障,则有效)。

此外,通常最好将应用程序的所有相关服务保存在同一个 VPC 中,除非您有特殊原因将它们分开。

此外,通过将您的应用程序放在私有子网中来提高安全性,只有您的负载平衡器位于公共子网中

因此,推荐的架构是:

一个 VPC AZ-a 中的公共子网 AZ-b 中的公共子网 连接到两个公共子网的负载平衡器 AZ-a 中的私有子网 AZ-b 中的私有子网 您的 Web 应用程序同时在两个私有子网中运行(假设它可以在多个 Amazon EC2 实例上运行) 您的数据库在其中一个私有子网中运行,能够故障转移到另一个私有子网。 Amazon RDS 可以使用 多可用区 选项自动执行此操作(需额外付费)。

要了解有关构建高度可扩展解决方案的更多信息,我推荐 2016 年 AWS re:Invent 大会上的 ARC201: Scaling Up to Your First 10 Million Users 会议(YouTube、SlideShare、Podcast)。

【讨论】:

【参考方案2】:

是的。最好提供至少两个可用区。

如果 EC2 实例在私有子网中启动,则负载均衡器应在公有子网中启动,公有子网应附加 Internet 网关。

负载均衡器可以通过互联网网关处理流量并重定向到 EC2 实例的私有 IP。只有注册的 EC2 实例才能接收来自负载均衡器的流量。

在你的情况下:

    根据最佳实践,您必须在私有子网中而不是在公共子网中启动数据库。 Web 层和数据库层都可以在同一个 VPC 中。如果您有不同的环境,例如 Dev、Test 和 Prod - 都应该在不同的 VPC 中启动。您可以使用 VPC 对等连接来连接 VPC。 与其在公共子网中启动 EC2 实例,不如在私有子网中启动。因为,您将使用负载均衡器将网络流量重定向到 EC2 实例。

【讨论】:

以上是关于AWS - ELB 可用区 + VPC 最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Elastic Beanstalk VPC - 从 ELB 到实例的 HTTPS

无法在 AWS VPC 中不同可用区的子网之间路由

AWS ELB - 多 VPC 负载均衡

markdown AWS VPCの作成からEC2インスタンスの起动,ELBの设定まで

aws 弹性负载均衡器和限制

上瘾云计算,从负载均衡ELB开始