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

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

使用 Elastic Load Balancing 的示例 Amazon Command Line Interface

使用 Amazon Command Line Interface (Amazon CLI) 来连接、分离和描述负载均衡器和目标组,添加和移除 Elastic Load Balancing 运行状况检查,以及更改启用了哪些可用区。

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

重要

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

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

使用以下 create-auto-scaling-group 命令创建自动扩缩组,并通过指定目标组的 Amazon 资源名称(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"

创建自动扩缩组后,使用 attach-traffic-sources 命令将其他目标组附加到该自动扩缩组。

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

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

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

要描述附加到自动扩缩组的负载均衡器或目标组,请使用以下 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 运行状况检查添加到您自动扩缩组对实例所执行的运行状况检查,请运行以下 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. 在更改负载均衡器的可用区之前,最好先更新自动扩缩组的可用区,以验证您的实例类型是否可在指定区域中使用。

    若要更新自动扩缩组的可用区,请使用以下 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. 在更改负载均衡器的可用区之前,最好先更新自动扩缩组的可用区,以验证您的实例类型是否可在指定区域中使用。

    若要更新自动扩缩组的可用区,请使用以下 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-subnets 命令为您的经典负载均衡器启用新的可用区。将示例子网 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-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 运行状况检查

要将 Elastic Load Balancing 运行状况检查从您的 Auto Scaling 组移除,请运行以下 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 命令将创建一个带附加经典负载均衡器的 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 命令将指定的经典负载均衡器附加到现有 Auto Scaling 组。

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

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

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

要描述与自动扩缩组关联的经典负载均衡器,请使用 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"
分离经典负载均衡器

不再需要时,以下 detach-load-balancers 命令将经典负载均衡器与 Auto Scaling 组分离。

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