Elastic Beanstalk 環境的容量組態 - AWS Elastic Beanstalk

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

Elastic Beanstalk 環境的容量組態

本主題說明為 Elastic Beanstalk 環境設定 Auto Scaling 容量的不同方法。您可以使用 Elastic Beanstalk 主控台、EB CLI AWS CLI、 或 命名空間選項。

重要

EnableSpot 選項設定可能會導致 Elastic Beanstalk 使用啟動範本建立環境,或將現有環境從啟動組態更新為啟動範本。這樣做需要必要的許可來管理啟動範本。這些許可包含在我們的 受管政策中。如果您使用自訂政策,而不是我們的受管政策,當您為環境啟用 Spot 執行個體時,環境建立或更新可能會失敗。如需詳細資訊和其他考量事項,請參閱 啟動 Elastic Beanstalk 環境的範本

使用主控台執行組態

您可以在 Elastic Beanstalk 主控台的環境組態頁面上編輯容量,以設定 Auto Scaling 群組的容量管理。

在 Elastic Beanstalk 主控台中設定 Auto Scaling 群組容量
  1. 開啟 Elastic Beanstalk 主控台,然後在區域清單中選取您的 AWS 區域。

  2. 在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。

    注意

    如果您有許多環境,請使用搜尋列來篩選環境清單。

  3. 在導覽窗格中,選擇 Configuration (組態)。

  4. Capacity (容量) 組態類別中,選擇 Edit (編輯)

  5. Auto Scaling group (Auto Scaling 群組) 區段,設定下列設定。

    • Environment type (環境類型) ‒ 選取 Load balanced (負載平衡)

    • Min instances (最少執行個體) ‒ 該群組應隨時包含的 EC2 執行個體數量下限。群組以計數下限開始,當滿足擴展觸發條件時,將新增執行個體。

    • Max instances (最大執行個體) ‒ 該群組應隨時包含的 EC2 執行個體數量上限。

      注意

      若您採用滾動更新,請確保執行個體計數上限高於滾動更新的 Minimum instances in service (服務中執行個體數量下限) 設定

    • 機群組成 – 預設為隨需執行個體。選取 Combined purchase options and instances (組合的購買選項和執行個體) 以啟用 Spot Instance (Spot 執行個體) 請求。

      重要

      EnableSpot 選項設定可能會導致 Elastic Beanstalk 使用啟動範本建立環境,或將現有環境從啟動組態更新為啟動範本。這樣做需要必要的許可來管理啟動範本。這些許可包含在我們的 受管政策中。如果您使用自訂政策,而不是我們的受管政策,當您為環境啟用 Spot 執行個體時,環境建立或更新可能會失敗。如需詳細資訊和其他考量事項,請參閱啟動 Elastic Beanstalk 環境的範本

      如果您選取啟用 Spot 執行個體 (Spot 執行個體) 請求,便會啟用下列選項:

      • Spot 配置策略 - 根據可用容量、價格和執行個體類型的選擇,決定在環境中管理和佈建 Spot 執行個體的方法。從容量最佳化 (預設)、價格容量最佳化容量最佳化優先順序最低價格中選取。如需每個配置策略的描述和詳細資訊,請參閱 Spot 執行個體配置策略

      • 最高 Spot 價格 – 如需 Spot 執行個體最高價格選項的建議,請參閱《Amazon EC2 使用者指南》中的 Spot 執行個體定價歷史記錄

      • On-Demand base (隨需執行個體基本數量) – 隨著環境擴展,在考慮使用 Spot 執行個體前,Auto Scaling 群組要佈建的最小隨需執行個體數量。

      • On-Demand above base (超過基本數量的隨需執行個體) – 隨需執行個體百分比 (Auto Scaling 群組超出隨需執行個體基本數量所怖建的一部分額外容量)。

        注意

        On-Demand base (隨需執行個體基本數量) 和 On-Demand above base (超過基本數量的隨需執行個體) 選項與前面列出的執行個體 Min (下限) 和 Max (上限) 選項關聯。如需有關這些選項和範例的詳細資訊,請參閱 支援 Elastic Beanstalk 環境的 Spot 執行個體

      • 容量重新平衡 – 此選項只有在 Auto Scaling 群組中至少有一個 Spot 執行個體時才相關。啟用此功能時,EC2 會自動嘗試在中斷前取代 Auto Scaling 群組中的 Spot 執行個體,將對應用程式的 Spot 執行個體中斷降至最低。如需詳細資訊,請參閱《Amazon EC2 Auto Scaling 使用者指南》中的容量重新平衡

    • 架構 – EC2 執行個體的處理器架構。處理器架構會決定下一個欄位中可用的 EC2 執行個體類型。

    • 執行個體類型 – 啟動以執行應用程式的 Amazon EC2 執行個體類型。如需詳細資訊,請參閱 執行個體類型

    • AMI ID ‒ Elastic Beanstalk 用來在您環境中啟動 Amazon EC2 執行個體的機器映像。如需詳細資訊,請參閱 AMI ID

    • Availability Zones (可用區域) ‒ 選擇您環境執行個體可散佈到的可用區域數。根據預設,Auto Scaling 群組會在所有可用區域中平均啟動執行個體。欲將您的執行個體集中於較少區域,請選擇欲使用的區域數量。以生產環境而言,請使用至少兩個區域,以確保您的應用程式在其中一個可用區域服務中斷時仍能使用。

    • Placement (置放) (選用) ‒ 選擇欲使用的可用區域。如果若您的執行個體需要連線至特定區域的資源,或者您已購買區域特定的預留執行個體,請使用此設定。若您於自訂 VPC 啟動環境,您無法設定此選項。於自訂 VPC 中,您可以針對指派給您環境的子網路,選擇其可用區域。

    • Scaling cooldown (擴展冷卻) ‒ 擴展之後,在繼續評估觸發前等待執行個體啟動或終止的時間 (以秒計)。如需詳細資訊,請參閱擴展冷卻

  6. 若要儲存變更,請選擇頁面底部的儲存變更

使用命名空間選項的組態

Elastic Beanstalk 在以下兩個命名空間中提供 Auto Scaling 設定的組態選項aws:autoscaling:asgaws:ec2:instances

aws:autoscaling:asg 命名空間

aws:autoscaling:asg 命名空間提供了可用於整體擴展和可用性的選項。

下列組態檔案範例會設定 Auto Scaling 群組,以使用二到四個執行個體、特定可用區域,以及 12 分鐘 (720 秒) 的冷卻時間。它啟用 Spot 執行個體的容量重新平衡EnableCapacityRebalancing 此選項只有在aws:ec2:instances命名空間true中設定為 EnableSpot 時才會生效,如以下範例所示。

option_settings: aws:autoscaling:asg: Availability Zones: Any Cooldown: '720' Custom Availability Zones: 'us-west-2a,us-west-2b' MaxSize: '4' MinSize: '2' EnableCapacityRebalancing: true

aws:ec2:instances 命名空間

注意

當您更新環境資訊並從 InstanceTypes 選項中移除一或多個執行個體類型時,Elastic Beanstalk 會終止在已移除的執行個體類型上執行的任何 Amazon EC2 執行個體。然後,您環境的 Auto Scaling 群組會視需要啟動新執行個體,以使用目前指定的執行個體類型來完成所需的容量。

aws:ec2:instances 命名空間提供了與環境的執行個體相關的選項,包括 Spot 執行個體管理。這與 aws:autoscaling:launchconfigurationaws:autoscaling:asg 相輔相成。

以下組態檔案範例會設定 Auto Scaling 群組,為您的環境啟用 Spot 執行個體請求。它指定三種可用的執行個體類型。至少將一個隨需執行個體用於基準容量,以及將認可的 33% 隨需執行個體用於額外容量。

組態會將 Spot 配置策略設定為 capacity-optimized-prioritized。此特定配置策略會根據 InstanceTypes選項中指定的執行個體類型的順序,排定執行個體從集區啟動的優先順序。如果SpotAllocationStrategy未指定 ,則預設為 capacity-optimized

option_settings: aws:ec2:instances: EnableSpot: true InstanceTypes: 't2.micro,t3.micro,t3.small' SpotAllocationStrategy: capacity-optimized-prioritized SpotFleetOnDemandBase: '1' SpotFleetOnDemandAboveBasePercentage: '33'

如要選擇 Spot 執行個體類型,請使用 Spot Instance Advisor

重要

EnableSpot 選項設定可能會導致 Elastic Beanstalk 使用啟動範本建立環境,或從啟動組態更新現有環境以啟動範本。這樣做需要必要的許可來管理啟動範本。這些許可包含在我們的 受管政策中。如果您使用自訂政策,而不是我們的受管政策,當您為環境啟用 Spot 執行個體時,環境建立或更新可能會失敗。如需詳細資訊和其他考量事項,請參閱 啟動 Elastic Beanstalk 環境的範本

使用 的組態 AWS CLI

本節提供如何使用 AWS CLI create-environment 命令,透過這些章節中所述的 Auto Scaling 和 Capacity 選項來設定環境的範例。您會注意到 aws:autoscaling:asg和 的命名空間設定aws:ec2:instances,如先前命名空間組態選項一節所述,也會使用此範例進行設定。

Command AWS Line Interface 提供建立和設定 Elastic Beanstalk 環境的命令。使用 --option-settings選項,您可以傳入 Elastic Beanstalk 支援的命名空間選項。這表示先前描述的命名空間組態選項可以傳入適用的 AWS CLI 命令,以設定 Elastic Beanstalk 環境。

注意

您也可以搭配 使用 update-environment 命令--option-settings來新增或更新命名空間選項。如果您需要從環境中移除任何命名空間選項,請使用 update-environment命令搭配 --options-to-remove

下列範例會建立新的環境。如需傳入選項的更多內容,請參閱上一個主題命名空間組態選項。

aws:autoscaling:launchconfiguration命名空間IamInstanceProfile中列出的 fist 選項是 Elastic Beanstalk 執行個體描述檔。當您建立新的環境時,這是必要的。

範例 — 具有 Auto Scaling 選項的 create-environment (內嵌命名空間選項)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2023 v4.3.0 running Python 3.12" \ --option-settings \ Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role Namespace=aws:autoscaling:asg,OptionName=Availability Zones,Value=Any \ Namespace=aws:autoscaling:asg,OptionName=Cooldown,Value=720 \ Namespace=aws:autoscaling:asg,OptionName=Custom Availability Zones,Value=us-west-2a,us-west-2b \ Namespace=aws:autoscaling:asg,OptionName=MaxSize,Value=4 \ Namespace=aws:autoscaling:asg,OptionName=MinSize,Value=2 \ Namespace=aws:autoscaling:asg,OptionName=EnableCapacityRebalancing,Value=true \ Namespace=aws:ec2:instances,OptionName=EnableSpot,Value=true \ Namespace=aws:ec2:instances,OptionName=InstanceTypes,Value=t2.micro,t3.micro,t3.small \ Namespace=aws:ec2:instances,OptionName=SpotAllocationStrategy,Value=capacity-optimized-prioritized \ Namespace=aws:ec2:instances,OptionName=SpotFleetOnDemandBase,Value=1 \ Namespace=aws:ec2:instances,OptionName=SpotFleetOnDemandAboveBasePercentage,Value=33

重要

EnableSpot 選項設定可能會導致 Elastic Beanstalk 使用啟動範本建立環境,或從啟動組態更新現有環境以啟動範本。這樣做需要必要的許可來管理啟動範本。這些許可包含在我們的 受管政策中。如果您使用自訂政策,而不是我們的受管政策,當您為環境啟用 Spot 執行個體時,環境建立或更新可能會失敗。如需詳細資訊和其他考量事項,請參閱 啟動 Elastic Beanstalk 環境的範本

或者,您也可以使用 options.json 檔案來指定命名空間選項,而非透過內嵌方式一併包含於其中。

範例 —使用 Auto Scaling 選項建立環境 (options.json檔案中的命名空間選項)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2023 v4.3.0 running Python 3.12" --option-settings file://options.json
### example options.json ### [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" }, { "Namespace": "aws:autoscaling:asg", "OptionName": "Availability Zones", "Value": "Any" }, { "Namespace": "aws:autoscaling:asg", "OptionName": "Cooldown", "Value": "720" }, { "Namespace": "aws:autoscaling:asg", "OptionName": "Custom Availability Zones", "Value": "us-west-2a,us-west-2b" }, { "Namespace": "aws:autoscaling:asg", "OptionName": "MaxSize", "Value": "4" }, { "Namespace": "aws:autoscaling:asg", "OptionName": "MinSize", "Value": "2" }, { "Namespace": "aws:autoscaling:asg", "OptionName": "EnableCapacityRebalancing", "Value": "true" }, { "Namespace": "aws:ec2:instances", "OptionName": "EnableSpot", "Value": "true" }, { "Namespace": "aws:ec2:instances", "OptionName": "InstanceTypes", "Value": "t2.micro,t3.micro,t3.small" }, { "Namespace": "aws:ec2:instances", "OptionName": "SpotAllocationStrategy", "Value": "capacity-optimized-prioritized" }, { "Namespace": "aws:ec2:instances", "OptionName": "SpotFleetOnDemandBase", "Value": "1" }, { "Namespace": "aws:ec2:instances", "OptionName": "SpotFleetOnDemandAboveBasePercentage", "Value": "33" } ]

使用 EB CLI 的組態

使用 eb create 命令建立環境時,您可以指定與您環境 Auto Scaling 群組相關的幾個選項。這些是可協助您控制環境的容量的其中一些選項。

--single

建立有一個 Amazon EC2 執行個體且沒有負載平衡器的環境。如果您未使用此選項,系統會將負載平衡器新增至建立的環境環境。

--enable-spot

為您的環境啟用 Spot 執行個體請求。

重要

enable-spot 選項設定可能會導致 Elastic Beanstalk 使用啟動範本建立環境,或將現有環境從啟動組態更新為啟動範本。這樣做需要必要的許可來管理啟動範本。這些許可包含在我們的 受管政策中。如果您使用自訂政策,而不是我們的受管政策,當您為環境啟用 Spot 執行個體時,環境建立或更新可能會失敗。如需詳細資訊和其他考量事項,請參閱 啟動 Elastic Beanstalk 環境的範本

eb create 命令的下列選項僅可搭配 --enable-spot 使用。

--instance-types

列出您要讓環境使用的 Amazon EC2 執行個體類型。

--spot-max-price

您願意為 Spot 執行個體支付的每單位小時最高價格 (以美元為單位)。如需 Spot 執行個體最高價格選項的建議,請參閱《Amazon EC2 使用者指南》中的 Spot 執行個體定價歷史記錄

--on-demand-base-capacity

隨著環境擴展,Auto Scaling 群組在考量 Spot 執行個體前佈建的最小隨需執行個體數量。

--on-demand-above-base-capacity

隨需執行個體百分比 (Auto Scaling 群組超出 --on-demand-base-capacity 選項所指定之執行個體數量所怖建的一部分額外容量)。

以下範例會建立環境並將 Auto Scaling 群組設為針對新環境啟用 Spot 執行個體請求。以這個例子來說,有三個執行個體類型可使用。

$ eb create --enable-spot --instance-types "t2.micro,t3.micro,t3.small"
重要

還有另一個名稱類似的選項 --instance-type (沒有“s”),EB CLI 僅在處理隨需執行個體時才會區分這類選項名稱。請勿將 --instance-type (沒有 "s") 與 --enable-spot 選項搭配使用。如果搭配使用,EB CLI 會加以忽略。反之,請將 --instance-types (有 "s") 與 --enable-spot 選項搭配使用。