適用於您 Elastic Beanstalk 環境的 Auto Scaling 群組 - AWS Elastic Beanstalk

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

適用於您 Elastic Beanstalk 環境的 Auto Scaling 群組

您的 AWS Elastic Beanstalk 環境包含 Auto Scaling 群組,可管理您的環境中的 Amazon EC2 執行個體。在單一執行個體環境中,Auto Scaling 群組可確保隨時都有一個執行個體正在執行。在負載平衡的環境中,您可以設定群組欲執行的各種執行個體,而 Auto Scaling 會依據負載視需要新增或移除執行個體。

Auto Scaling 群組也會為您環境中的執行個體套用啟動組態。您可以修改啟動組態來變更執行個體類型、金鑰對、Amazon Elastic Block Store (Amazon EBS) 儲存,以及其他僅能於執行個體啟動時進行的設定。

Auto Scaling 群組會使用兩個 Amazon CloudWatch 警示觸發擴展操作。當每個執行個體的平均傳出網路流量,在五分鐘期間高於 6 MiB 或低於 2 MiB 時,預設的觸發條件就會擴展。如要有效地使用 Auto Scaling,請根據您的應用程式、執行個體類型和服務需求,設定適用的觸發。您可以根據多項統計資料來進行擴展,包括延遲、磁碟 I/O、CPU 使用率和請求計數。

如要在可預測的尖峰流量期間最佳化您環境使用 Amazon EC2 執行個體的情況,請設定您的 Auto Scaling 群組來透過排程變更其執行個體計數。您可以排程您群組組態每日或每週的變更,或排程一次性變更以因應將大幅提升至您網站流量的行銷活動。

做為一個選項,Elastic Beanstalk 可以為您的環境結合隨需和 Spot 執行個體。您可以啟用容量重新平衡,以設定 Amazon EC2 Auto Scaling 來監控並自動回應影響 Spot 執行個體可用性的變更。

Auto Scaling 亦會針對其啟動的每個 Amazon EC2 執行個體,監控其運作狀態。如果有任何執行個體未預期終止,Auto Scaling 會偵測到終止狀況,並啟動替代執行個體。如要設定群組使用負載平衡器的運作狀態檢查機制,請參閱Auto Scaling 運作狀態檢查設定

您可以使用 Elastic Beanstalk 主控台EB CLI組態選項,設定您環境的 Auto Scaling。

Spot 執行個體支援

如要利用 Amazon EC2 Spot 執行個體,您可以為您的環境啟用 Spot 選項。然後您環境的 Auto Scaling 群組會結合 Amazon EC2 購買選項,並維持隨需和 Spot 執行個體的混合。

本主題說明為環境啟用 Spot 執行個體請求的下列方法:

重要

Spot 執行個體的需求可能會隨時產生極大的變化,而取決於有多少可用的未使用 Amazon EC2 執行個體,Spot 執行個體的可用性也可能會有顯著的變化。Spot 執行個體隨時都有可能中斷。

為了協助將這些中斷對應用程式的影響降至最低,您可以啟用 Amazon EC2 Auto Scaling 包含的容量重新平衡選項。啟用此功能後,EC2 會在中斷前自動嘗試取代 Auto Scaling 群組中的 Spot 執行個體。使用 Elastic Beanstalk 主控台設定 Auto Scaling 群組來啟用此功能。您也可以在 aws:autoscaling:asg 命名空間中將 Elastic Beanstalk EnableCapacityRebalancing 組態選項設定為 true

如需詳細資訊,請參閱 Amazon EC2 Auto Scaling 使用者指南中的容量重新平衡適用於 Linux 執行個體的 Amazon EC2 使用者指南中的 Spot 執行個體中斷

Elastic Beanstalk 提供支援 Spot 功能的多個組態選項。下列各節將探討設定 Auto Scaling 群組的組態選項。

aws:ec2:instances 命名空間,其中兩個選項應特別注意:

  • SpotFleetOnDemandBase

  • SpotFleetOnDemandAboveBasePercentage

這兩個選項與 aws:autoscaling:asg 命名空間中的 MinSize 選項相互關聯:

  • 只有 MinSize 會決定您環境的初始容量,亦即您要執行的最少執行個體數量。

  • SpotFleetOnDemandBase 不會影響初始容量。啟用 Spot 時,此選項僅會決定在考慮使用 Spot 執行個體前,要佈建的隨需執行個體數量。

  • SpotFleetOnDemandBase 小於 MinSize 時考慮。你仍會獲得 MinSize 個執行個體做為初始容量。其中至少 SpotFleetOnDemandBase 個必須是隨需執行個體。

  • SpotFleetOnDemandBase 大於 MinSize 時考慮。隨著環境擴展,這可保證您至少能取得相當於兩個值之差的額外執行個體數量。亦即保證在達到 SpotFleetOnDemandBase 個的數量要求前,您至少能取得 (SpotFleetOnDemandBase - MinSize) 個額外的隨需執行個體。

在生產環境中,做為可擴展且有負載平衡環境中一部分的 Spot 執行個體格外實用。不建議您將 Spot 用於單一執行個體環境。如果沒有可用的 Spot 執行個體,您可能會失去環境的整個容量 (單一執行個體)。您可能仍會想要將 Spot 執行個體用於單一執行個體環境,以進行開發或測試。當您這麼做時,請務必將 SpotFleetOnDemandBaseSpotFleetOnDemandAboveBasePercentage 同時設為零。任何其他設定都會產生隨選執行個體。

備註
  • 某些較舊的 AWS 帳戶可能會為 Elastic Beanstalk 提供不支援 Spot 執行個體的預設執行個體類型 (例如 t1.micro)。如果您啟用了 Spot 執行個體請求,並且看到 None of the instance types you specified supports Spot (您指定的執行個體類型皆不支援 Spot) 錯誤,請務必設定可支援 Spot 的執行個體類型。如要選擇 Spot 執行個體類型,請使用 Spot Instance Advisor

  • 啟用 Spot 執行個體請求需要使用 Amazon EC2 啟動範本。當您在環境建立或更新期間設定此類功能,Elastic Beanstalk 便會嘗試設定您的環境來使用 Amazon EC2 啟動範本 (如果環境尚未使用這些範本)。在此情況下,如果您的使用者政策缺乏必要的許可,環境建立或更新可能會失敗。因此我們建議您使用我們的受管使用者政策,或將所需的許可新增至您的自訂政策。如需所需許可的詳細資訊,請參閱建立自訂使用者政策

以下範例示範設定各種擴展選項的不同情況。所有範例均假設使用已啟用 Spot 執行個體請求的負載平衡環境。

範例 1:做為初始容量一部分的隨需和 Spot
選項設定
選項 命名空間 Value (值)

MinSize

aws:autoscaling:asg

10

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

在此範例中,環境是從十個執行個體開始,其中七個是隨需 (四個是基本數量,50% 的六個高於基本數量),其中三個是 Spot。環境最多可擴展到 24 個執行個體。隨著環境擴展,高於四個基本數量隨需執行個體機群部分中的隨需部分會保持在 50%,整體最多 24 個執行個體,其中 14 個是隨需 (四個基本數量,50% 的 20 個高於基本數量),其中十個是 Spot。

範例 2:所有隨需初始容量
選項設定
選項 命名空間 Value (值)

MinSize

aws:autoscaling:asg

4

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

在此範例中,環境是從四個執行個體開始,全部都是隨需。環境最多可擴展到 24 個執行個體。隨著環境擴展,高於四個基本數量隨需執行個體機群部分中的隨需部分會保持在 50%,整體最多 24 個執行個體,其中 14 個是隨需 (四個基本數量,50% 的 20 個高於基本數量),其中十個是 Spot。

範例 3:超過初始容量的額外隨需基本數量
選項設定
選項 命名空間 Value (值)

MinSize

aws:autoscaling:asg

3

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

在此範例中,環境是從三個執行個體開始,全部都是隨需。環境最多可擴展到 24 個執行個體。超過初始三個的第一個額外執行個體是隨需,可讓四個基本數量隨需執行個體變得完整。隨著環境進一步擴展,高於四個基本數量隨需執行個體機群部分中的隨需部分會保持在 50%,整體最多 24 個執行個體,其中 14 個是隨需 (四個基本數量,50% 的 20 個高於基本數量),其中十個是 Spot。

使用 Elastic Beanstalk 主控台設定 Auto Scaling 群組

您可以在 Elastic Beanstalk 主控台中,於環境的 Configuration (組態) 頁面上編輯 Capacity (容量),以設定 Auto Scaling 的運作方式。

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

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

    注意

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

  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 執行個體) 請求。

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

      • Maximum spot priceSpot (價格上限) – 如需有關 Spot 執行個體最高價選項的建議,請參閱適用於 Linux 執行個體的 Amazon EC2 使用者指南中的 Spot 執行個體定價歷史記錄

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

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

        注意

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

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

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

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

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

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

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

    
            Elastic Beanstalk Auto Scaling 組態視窗
  6. 若要儲存變更,請選擇頁面底部的儲存變更

使用 EB CLI 設定 Auto Scaling 群組

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

--single

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

--enable-spot

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

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

--instance-types

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

--spot-max-price

您願意為 Spot 執行個體支付的每單位小時最高價格 (以美元為單位)。如需有關 Spot 執行個體最高價選項的建議,請參閱適用於 Linux 執行個體的 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 選項搭配使用。

組態選項

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

aws:autoscaling:asg 命名空間

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

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

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 命名空間

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

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

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

option_settings: aws:ec2:instances: EnableSpot: true InstanceTypes: 't2.micro,t3.micro,t3.small' SpotFleetOnDemandBase: '1' SpotFleetOnDemandAboveBasePercentage: '33'

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