Auto Scaling
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

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

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

注意

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

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

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

使用控制台添加可用区

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

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

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

  3. 选择您的组。

  4. Details 选项卡上,选择 Edit

  5. 执行以下任一操作:

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

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

  6. 选择 Save

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

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

  9. 执行以下任一操作:

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

    • [传统负载均衡器 in a 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 组:

    Copy
    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 命令验证新子网中的实例是否准备好接受来自负载均衡器的流量:

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

    Copy
    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 组:

    Copy
    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 命令验证新可用区中的实例是否准备好接受来自负载均衡器的流量:

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

    Copy
    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 组:

    Copy
    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 命令验证新子网中的实例是否准备好接受来自负载均衡器的流量:

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

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