AWS - ELB 可用区 + VPC 最佳实践?
AWS - ELB Availability Zones + VPC best practices?
设置 ELB 时,会显示以下内容:
You must specify subnets from at least two Availability Zones to increase the availability of your load balancer.
我目前有两个 VPC:
- WebVPC
- public-subnet-us-east-1a
- 私有子网-us-east-1b
- 数据库VPC
- public-subnet-us-east-1a
- 私有子网-us-east-1b
ELB 仅适用于 WebVPC(为网络流量提供服务)。我目前每个 VPC 只有一个 public 和一个私有子网,这意味着我只能从我的 WebVPC 为 ELB 提供一个 public 子网。
这是否意味着最好有至少两个 public 和至少两个私有子网?
是的。最好的做法是提供至少两个可用区。
如果 EC2 实例在私有子网中启动,则负载均衡器应在 Public 子网中启动,该子网应附加互联网网关。
负载均衡器可以处理通过互联网网关的流量并重定向到 EC2 实例的私有 IP。只有注册的 EC2 实例才能接收来自负载均衡器的流量。
你的情况:
- 根据最佳实践,您必须在私有子网而不是 Public 子网中启动数据库。 Web 层和数据库层都可以在同一个 VPC 中。如果您有不同的环境,如开发、测试和生产——都应该在不同的 VPC 中启动。您可以使用 VPC Peering 连接 VPC。
- 与其在 Public 子网中启动 EC2 实例,不如在私有子网中启动。因为,您将使用负载均衡器将网络流量重定向到 EC2 实例。
您的架构不是高可用。最佳做法是跨多个可用区 (AZ) 复制服务,以防一个可用区出现故障(实际上,如果数据中心发生故障)。
此外,通常最好将应用程序的所有相关服务保留在同一个 VPC 中,除非您有特殊原因将它们分开。
此外,通过将您的应用程序放在私有子网中可以提高安全性,只有您的负载均衡器位于 public 个子网中。
因此,推荐的架构是:
- 一个VPC
- public 子网在 AZ-a
- public 子网在 AZ-b
- 连接到两个 public 子网的负载均衡器
- AZ-a
中的私有子网
- AZ-b
中的私有子网
- 您的 Web 应用程序 运行 同时在两个私有子网中运行(假设它可以 运行 在多个 Amazon EC2 实例上)
- 您的数据库 运行 位于一个私有子网中,能够 fail-over 到另一个私有子网。 Amazon RDS 可以使用 Multi-AZ 选项自动执行此操作(需要支付额外费用)。
要了解有关构建高度可扩展解决方案的更多信息,我推荐 ARC201: Scaling Up to Your First 10 Million Users session from the AWS re:Invent conference in 2016 (YouTube, SlideShare, Podcast)。
设置 ELB 时,会显示以下内容:
You must specify subnets from at least two Availability Zones to increase the availability of your load balancer.
我目前有两个 VPC:
- WebVPC
- public-subnet-us-east-1a
- 私有子网-us-east-1b
- 数据库VPC
- public-subnet-us-east-1a
- 私有子网-us-east-1b
ELB 仅适用于 WebVPC(为网络流量提供服务)。我目前每个 VPC 只有一个 public 和一个私有子网,这意味着我只能从我的 WebVPC 为 ELB 提供一个 public 子网。
这是否意味着最好有至少两个 public 和至少两个私有子网?
是的。最好的做法是提供至少两个可用区。
如果 EC2 实例在私有子网中启动,则负载均衡器应在 Public 子网中启动,该子网应附加互联网网关。
负载均衡器可以处理通过互联网网关的流量并重定向到 EC2 实例的私有 IP。只有注册的 EC2 实例才能接收来自负载均衡器的流量。
你的情况:
- 根据最佳实践,您必须在私有子网而不是 Public 子网中启动数据库。 Web 层和数据库层都可以在同一个 VPC 中。如果您有不同的环境,如开发、测试和生产——都应该在不同的 VPC 中启动。您可以使用 VPC Peering 连接 VPC。
- 与其在 Public 子网中启动 EC2 实例,不如在私有子网中启动。因为,您将使用负载均衡器将网络流量重定向到 EC2 实例。
您的架构不是高可用。最佳做法是跨多个可用区 (AZ) 复制服务,以防一个可用区出现故障(实际上,如果数据中心发生故障)。
此外,通常最好将应用程序的所有相关服务保留在同一个 VPC 中,除非您有特殊原因将它们分开。
此外,通过将您的应用程序放在私有子网中可以提高安全性,只有您的负载均衡器位于 public 个子网中。
因此,推荐的架构是:
- 一个VPC
- public 子网在 AZ-a
- public 子网在 AZ-b
- 连接到两个 public 子网的负载均衡器
- AZ-a 中的私有子网
- AZ-b 中的私有子网
- 您的 Web 应用程序 运行 同时在两个私有子网中运行(假设它可以 运行 在多个 Amazon EC2 实例上)
- 您的数据库 运行 位于一个私有子网中,能够 fail-over 到另一个私有子网。 Amazon RDS 可以使用 Multi-AZ 选项自动执行此操作(需要支付额外费用)。
要了解有关构建高度可扩展解决方案的更多信息,我推荐 ARC201: Scaling Up to Your First 10 Million Users session from the AWS re:Invent conference in 2016 (YouTube, SlideShare, Podcast)。