Amazon EC2 Auto Scaling
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

将具有扩展和负载均衡功能的应用程序扩展到其他可用区

通过使 Auto Scaling 组跨区域中的多个可用区,然后附加负载均衡器以跨这些区域分配传入流量,可以利用地理冗余的安全性和可靠性。在为负载均衡器启用的所有可用区之间均等分配传入流量。

注意

Auto Scaling 组可以包含来自同一区域中的多个可用区的 EC2 实例。不过,Auto Scaling 组无法包含来自多个区域的 EC2 实例。

当一个可用区运行状况不佳或无法使用时,Amazon EC2 Auto Scaling 在不受影响的区域中启动新实例。当运行状况不佳的可用区恢复正常状态时,Amazon EC2 Auto Scaling自动在 Auto Scaling 组的可用区中重新均匀分布实例。Amazon EC2 Auto Scaling 通过尝试在实例最少的可用区中启动新实例来执行此操作。但是,如果尝试失败,Amazon EC2 Auto Scaling 将尝试在其他可用区中启动,直到成功为止。

您可以通过将可用区添加到您的 Auto Scaling 组中,然后为您的负载均衡器启用该区域,来扩展具有扩展和负载均衡功能的应用程序的可用性。在您启用新的可用区后,负载均衡器会开始在所有已经启用的区域间均匀地路由流量。

使用控制台添加可用区

使用以下步骤将 Auto Scaling 组扩展到其他子网 (EC2-VPC) 或可用区 (EC2-Classic)。

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格上的 Auto Scaling 下,选择 Auto Scaling Groups (Auto Scaling 组)

  3. 选择您的组。

  4. Details 选项卡上,选择 Edit

  5. 执行以下任一操作:

    • [EC2-VPC] 在 Subnet(s) 中,选择与可用区相应的子网。

    • [EC2-Classic] 在 Availability Zones(s) 中,选择可用区。

  6. 选择 Save

  7. 在导航窗格中,选择 Load Balancers

  8. 选择您的负载均衡器。

  9. 执行以下任一操作:

    • [EC2-Classic 中的 传统负载均衡器] 在 Instances (实例) 选项卡上,选择 Edit Availability Zones (编辑可用区)。在 Add and Remove Availability Zones 页面上,选择要添加的可用区。

    • [VPC 中的 传统负载均衡器] 在 Instances (实例) 选项卡上,选择 Edit Availability Zones (编辑可用区)。在 Add and Remove Subnets 页面上,对于 Available subnets,为要添加的子网选择加号图标 (+)。该子网将移到 Selected subnets 下。

    • [应用程序负载均衡器] 在 Description (描述) 选项卡上,为 Availability Zones (可用区) 选择 Edit (编辑)。为要添加的可用区的子网选择加号图标 (+)。该子网将移到 Selected subnets 下。

  10. 选择 Save

使用 AWS CLI 添加可用区

您将使用的命令取决于您的负载均衡器是 VPC 中的 传统负载均衡器、EC2-Classic 中的 传统负载均衡器,还是 应用程序负载均衡器。

对于在 VPC 中具有 传统负载均衡器 的 Auto Scaling 组

  1. 使用以下 update-auto-scaling-group 命令将子网添加到 Auto Scaling 组:

    aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --vpc-zone-identifier subnet-41767929 subnet-cb663da2 --min-size 2
  2. 使用以下 describe-auto-scaling-groups 命令验证新子网中的实例是否准备好接受来自负载均衡器的流量:

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
  3. 使用以下 attach-load-balancer-to-subnets 命令为 传统负载均衡器 启用新子网:

    aws elb attach-load-balancer-to-subnets --load-balancer-name my-lb --subnets subnet-41767929

对于在 EC2-Classic 中具有 传统负载均衡器 的 Auto Scaling 组

  1. 使用以下 update-auto-scaling-group 命令将可用区添加到 Auto Scaling 组:

    aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --availability-zones us-west-2a us-west-2b us-west-2c --min-size 3
  2. 使用以下 describe-auto-scaling-groups 命令验证新可用区中的实例是否准备好接受来自负载均衡器的流量:

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
  3. 使用以下 enable-availability-zones-for-load-balancer 命令为 传统负载均衡器 启用新的可用区:

    aws elb enable-availability-zones-for-load-balancer --load-balancer-name my-lb --availability-zones us-west-2c

对于具有 应用程序负载均衡器 的 Auto Scaling 组

  1. 使用以下 update-auto-scaling-group 命令将子网添加到 Auto Scaling 组:

    aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --vpc-zone-identifier subnet-41767929 subnet-cb663da2 --min-size 2
  2. 使用以下 describe-auto-scaling-groups 命令验证新子网中的实例是否准备好接受来自负载均衡器的流量:

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
  3. 使用以下 set-subnets 命令为 应用程序负载均衡器 启用新的子网:

    aws elbv2 set-subnets --load-balancer-arn my-lb-arn --subnets subnet-41767929 subnet-cb663da2