将 Elastic Load Balancing 与 Amazon Command Line Interface (Amazon CLI) 配合使用的示例 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 Elastic Load Balancing 与 Amazon Command Line Interface (Amazon CLI) 配合使用的示例

使用 Amazon CLI 附加和分离以及描述负载均衡器和目标组,添加和移除 Elastic Load Balancing 运行状况检查,并更改哪些可用区启用。

本主题展示了执行 Amazon EC2 Auto Scaling 常见任务的 Amazon CLI 命令示例。

重要

有关更多命令示例,请参阅Amazon CLI 命令参考中的aws elbv2aws elb

附加目标组或经典负载均衡器

使用以下create-auto-scaling-group命令创建 Auto Scaling 组,并通过指定目标组的亚马逊资源名称 (ARN) 来同时附加目标组。目标组可以关联至应用程序负载均衡器、网络负载均衡器或网关负载均衡器。

替换 --auto-scaling-group-name--vpc-zone-identifier--min-size--max-size 的示例值。对于 --launch-template 选项,请将 my-launch-template1 替换为您的自动扩缩组的启动模板的名称和版本。对于 --traffic-sources 选项,将示例 ARN 替换为应用程序负载均衡器、网络负载均衡器或网关负载均衡器的目标组的 ARN。

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-template LaunchTemplateName=my-launch-template,Version='1' \ --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \ --min-size 1 --max-size 5 \ --traffic-sources "Identifier=arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/12345678EXAMPLE1"

在 Auto Scaling 组创建后,使用attach-traffic-sources命令将其他目标组附加到 Auto Scaling 组。

以下命令可将另一个目标组添加到同一个组。

aws autoscaling attach-traffic-sources --auto-scaling-group-name my-asg \ --traffic-sources "Identifier=arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/12345678EXAMPLE2"

或者,要将经典负载均衡器附加到您的组,请在使用 create-auto-scaling-groupattach-traffic-sources 时指定 --traffic-sources--type 选项,如以下示例所示。请将 my-classic-load-balancer 替换为经典负载均衡器的名称。对于 --type 选项,请指定 elb 的值。

--traffic-sources "Identifier=my-classic-load-balancer" --type elb

描述您的目标组或经典负载均衡器

要描述附加到 Auto Scaling 组的负载均衡器或目标组,请使用以下describe-traffic-sources命令。将 my-asg 替换为您的组名。

aws autoscaling describe-traffic-sources --auto-scaling-group-name my-asg

该示例会返回附加到自动扩缩组的 Elastic Load Balancing 目标组的 ARN。

{ "TrafficSources": [ { "Identifier": "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/12345678EXAMPLE1", "State": "InService", "Type": "elbv2" }, { "Identifier": "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/12345678EXAMPLE2", "State": "InService", "Type": "elbv2" } ] }

有关输出中的 State 字段说明,请参阅 验证负载均衡器的附加状态

添加 Elastic Load Balancing 运行状况检查

要将 Elastic Load Balancing 运行状况检查添加到您的 Auto Scaling 组对实例执行的运行状况检查中,请使用以下update-auto-scaling-group命令并指定ELB为该--health-check-type选项的值。将 my-asg 替换为您的组名。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --health-check-type "ELB"

新实例通常需要时间进行短暂的热身,然后才能通过运行状况检查。如果宽限期没有提供足够的预热时间,则实例可能未准备好提供流量。Amazon EC2 Auto Scaling 可能会将这些实例视为运行状况不佳并替换它们。

若要更新运行状况检查宽限期,请在使用 update-auto-scaling-group 时使用 --health-check-grace-period 选项,如以下示例所示。如果发现新实例的运行状况不佳,则在将其终止前将 300 替换为保持新实例正常运行状态的秒数。

--health-check-grace-period 300

有关更多信息,请参见 自动扩缩组中实例的运行状况检查

更改您的可用区

更改可用区时,应注意某些限制。有关更多信息,请参见 限制

更改应用程序负载均衡器或网络负载均衡器的可用区
  1. 在更改负载均衡器的可用区之前,最好先更新自动扩缩组的可用区,以验证您的实例类型是否可在指定区域中使用。

    要更新您的 Auto Scaling 组的可用区域,请使用以下update-auto-scaling-group命令。将示例子网 ID 替换为要启用的可用区中的子网 ID。用指定的子网替换先前启用的子网。将 my-asg 替换为您的组名。

    aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --vpc-zone-identifier "subnet-41767929,subnet-cb663da2,subnet-8360a9e7"
  2. 使用以下describe-auto-scaling-groups命令验证新子网中的实例是否已启动。如果实例已启动,您将看到实例及其状态的列表。将 my-asg 替换为您的组名。

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
  3. 使用以下 set-subnets 命令为您的负载均衡器指定子网。将示例子网 ID 替换为要启用的可用区中的子网 ID。每个可用区您只能指定一个子网。用指定的子网替换先前启用的子网。将 my-lb-arn 替换为负载均衡器的 ARN。

    aws elbv2 set-subnets --load-balancer-arn my-lb-arn \ --subnets subnet-41767929 subnet-cb663da2 subnet-8360a9e7
更改经典负载均衡器的可用区
  1. 在更改负载均衡器的可用区之前,最好先更新自动扩缩组的可用区,以验证您的实例类型是否可在指定区域中使用。

    要更新您的 Auto Scaling 组的可用区域,请使用以下update-auto-scaling-group命令。将示例子网 ID 替换为要启用的可用区中的子网 ID。用指定的子网替换先前启用的子网。将 my-asg 替换为您的组名。

    aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --vpc-zone-identifier "subnet-41767929,subnet-cb663da2"
  2. 使用以下describe-auto-scaling-groups命令验证新子网中的实例是否已启动。如果实例已启动,您将看到实例及其状态的列表。将 my-asg 替换为您的组名。

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
  3. 使用以下 attach-load-balancer-to-subnet s 命令为您的 Classic Load Balancer 启用新的可用区。将示例子网 ID 替换为要启用的可用区的子网 ID。将 my-lb 替换为您负载均衡器的名称。

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

    要禁用可用区,请使用以下 detach-load-balancer-from-subnets 命令。将示例子网 ID 替换为要禁用的可用区的子网 ID。将 my-lb 替换为您负载均衡器的名称。

    aws elb detach-load-balancer-from-subnets --load-balancer-name my-lb \ --subnets subnet-8360a9e7

分离目标组或经典负载均衡器

当您不再需要目标组时,以下detach-traffic-sources命令会将其从 Auto Scaling 组中分离出来。

对于 --auto-scaling-group-name 选项,请将 my-asg 替换为您的组名称。对于 --traffic-sources 选项,将示例 ARN 替换为应用程序负载均衡器、网络负载均衡器或网关负载均衡器的目标组的 ARN。

aws autoscaling detach-traffic-sources --auto-scaling-group-name my-asg \ --traffic-sources "Identifier=arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456"

要将经典负载均衡器与您的组分离,请指定 --traffic-sources--type 选项,如以下示例所示。请将 my-classic-load-balancer 替换为经典负载均衡器的名称。对于 --type 选项,请指定 elb 的值。

--traffic-sources "Identifier=my-classic-load-balancer" --type elb

移除 Elastic Load Balancing 运行状况检查

要从 Auto Scaling 组中移除 Elastic Load Balancing 运行状况检查,请使用以下update-auto-scaling-group命令并指定EC2为该--health-check-type选项的值。将 my-asg 替换为您的组名。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --health-check-type "EC2"

有关更多信息,请参见 自动扩缩组中实例的运行状况检查

旧版命令

以下示例演示如何使用旧版 CLI 命令附加、分离和描述负载均衡器和目标组。本文档中将保留这些命令,以供希望使用它们的客户参考。我们继续支持旧版 CLI 命令,但我们建议您使用新版“流量来源”CLI 命令,该命令可以附加和分离多种流量源类型。您可以在同一自动扩缩组上同时使用旧版 CLI 命令和“流量来源”CLI 命令。

附加您的目标组

以下create-auto-scaling-group命令创建带有附加目标组的 Auto Scaling 组。为 Application Load Balancer、Network Load Balancer 或网关负载均衡器指定目标组的 Amazon Resource Name (ARN)。

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-template LaunchTemplateName=my-launch-template,Version='1' \ --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \ --target-group-arns "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456" \ --min-size 1 --max-size 5

以下 attach-load-balancer-target-groups 命令将目标组附加到现有的 Auto Scaling 组。

aws autoscaling attach-load-balancer-target-groups --auto-scaling-group-name my-asg \ --target-group-arns "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456"
附加您的经典负载均衡器

以下create-auto-scaling-group命令创建附带了 Classic Load Balancer 的 Auto Scaling 组。

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-configuration-name my-launch-config \ --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \ --load-balancer-names "my-load-balancer" \ --min-size 1 --max-size 5

以下attach-load-balancers命令将指定的 Classic Load Balancer 附加到现有的 Auto Scaling 组。

aws autoscaling attach-load-balancers --auto-scaling-group-name my-asg \ --load-balancer-names my-lb
描述目标组

要描述与 Auto Scaling 群组关联的目标群组,请使用 describe-load-balancer-target-groups 命令。以下示例列出了 my-asg 的目标组。

aws autoscaling describe-load-balancer-target-groups --auto-scaling-group-name my-asg
描述经典负载均衡器

要描述与 Auto Scaling 组关联的传统负载均衡器,请使用describe-load-balancers命令。以下示例列出了 my-asg 的经典负载均衡器。

aws autoscaling describe-load-balancers --auto-scaling-group-name my-asg
分离目标组

当你不再需要目标detach-load-balancer-target组时,以下- groups命令会将目标组从你的 Auto Scaling 组中分离出来。

aws autoscaling detach-load-balancer-target-groups --auto-scaling-group-name my-asg \ --target-group-arns "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456"
分离经典负载均衡器

当您不再需要 Classic Load Balancer 时,以下detach-load-balancers命令会将其从您的 Auto Scaling 组中分离。

aws autoscaling detach-load-balancers --auto-scaling-group-name my-asg \ --load-balancer-names my-lb