使用 Elastic Load Balancing 的範例 AWS CLI - Amazon EC2 Auto Scaling

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Elastic Load Balancing 的範例 AWS CLI

使用 AWS Command Line Interface (AWS CLI) 來連接、卸離和描述負載平衡器和目標群組、新增和移除 Elastic Load Balancing 健全狀況檢查,以及變更啟用的可用區域。

本主題顯示執行 Amazon EC2 Auto Scaling 常見任務的 AWS CLI 命令範例。

重要

如需其他命令範例,請參閱 AWS CLI 命令參考中的 aws elbv2aws elb

連接您的目標群組或 Classic Load Balancer

使用下列create-auto-scaling-group命令建立 Auto Scaling 群組,並透過指定目標群組的 Amazon 資源名稱 (ARN) 來同時連接目標群組。目標群組可與 Application Load Balancer、Network Load Balancer 或 Gateway Load Balancer 關聯。

取代 --auto-scaling-group-name--vpc-zone-identifier--min-size--max-size 的範例值。對於 --launch-template 選項,請使用 Auto Scaling 群組的啟動範本名稱和版本取代 my-launch-template1。對於此選--traffic-sources項,請將範例ARN取代為應用程式 Load Balancer、Network Load Balancer 或閘道負載平衡器的目標群組。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指令將其他目標群組附加至該群組。

下列命令可將另一個目標群組新增至同一群組。

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

或者,若要將 Classic Load Balancer 連接至您的群組,請在使用 create-auto-scaling-groupattach-traffic-sources 時指定 --traffic-sources--type 選項,如下列範例中所示。將 my-classic-load-balancer 取代為 Classic Load Balancer 的名稱。對於 --type 選項,請指定值為 elb

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

描述您的目標群組或 Classic Load Balancer

若要描述連結至 Auto Scaling 群組的負載平衡器或目標群組,請使用下列describe-traffic-sources命令。用您的群組名稱取代 my-asg

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

此範例會傳回您附加至「Auto Scaling 例」群組的「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 選項,如下列範例中所示。Replace (取代) 300 如果發現新執行個體運作狀態不佳,則在終止新執行個體之前保留服務的秒數。

--health-check-grace-period 300

如需詳細資訊,請參閱Auto Scaling 群組中的執行個體運作狀態檢查

變更您的可用區域

變更您的可用區域時,您應留意一些限制。如需詳細資訊,請參閱新增可用區域

變更 Application Load Balancer 或 Network Load Balancer 的可用區域
  1. 在您變更負載平衡器的可用區域之前,最好先更新 Auto Scaling 群組的可用區域,以確認指定區域中的執行個體類型是否可用。

    若要更新 Auto Scaling 群組的可用區域,請使用下列update-auto-scaling-group命令。將範例子網路IDs取代為要啟用IDs的可用區域中的子網路。指定的子網路會取代先前啟用的子網路。用您的群組名稱取代 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 命令來指定負載平衡器的子網路。將範例子網路IDs取代為要啟用IDs的可用區域中的子網路。每個可用區域只能指定一個子網路。指定的子網路會取代先前啟用的子網路。my-lb-arn以您ARN的負載平衡器取代。

    aws elbv2 set-subnets --load-balancer-arn my-lb-arn \ --subnets subnet-41767929 subnet-cb663da2 subnet-8360a9e7
變更 Classic Load Balancer 的可用區域
  1. 在您變更負載平衡器的可用區域之前,最好先更新 Auto Scaling 群組的可用區域,以確認指定區域中的執行個體類型是否可用。

    若要更新 Auto Scaling 群組的可用區域,請使用下列update-auto-scaling-group命令。將範例子網路IDs取代為要啟用IDs的可用區域中的子網路。指定的子網路會取代先前啟用的子網路。用您的群組名稱取代 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 命令,為 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

分離您的目標群組或 Classic Load Balancer

當您不再需要時,下列detach-traffic-sources指令會將目標群組從「Auto Scaling」群組中分離出來。

對於 --auto-scaling-group-name 選項,請用您的群組名稱取代 my-asg。對於此選--traffic-sources項,請將範例ARN取代為應用程式 Load Balancer、Network Load Balancer 或閘道負載平衡器的目標群組。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"

若要從群組中分離 Classic Load Balancer,請指定 --traffic-sources--type 選項,如下列範例所示。將 my-classic-load-balancer 取代為 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"

如需詳細資訊,請參閱Auto Scaling 群組中的執行個體運作狀態檢查

舊版命令

下列範例顯示如何使用舊版CLI命令來連接、卸離和描述負載平衡器和目標群組。它們仍保留在本文件中,供任何想要使用的客戶做參考。我們會繼續支援舊版CLI指令,但建議您使用新的「流量來源」CLI 指令,這些命令可以附加和中斷多個流量來源類型。您可以在同一個 Auto Scaling 群組上同時使用舊版CLICLI指令和「流量來源」指令。

連接目標群組

下列create-auto-scaling-group指令會建立具有連結目標群組的「Auto Scaling」群組。為應用程式 Load Balancer、Network Load Balancer 或閘道負載平衡器指定目標群組的 Amazon 資源名稱 (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"
連接 Classic Load Balancer

下列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
描述 Classic Load Balancer

若要描述與 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命令會在您不再需要 Classic Load Balancer 時,將傳統負載平衡器從 Auto Scaling 群組中分離出來。

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