同步啟動執行個體 - Amazon EC2 Auto Scaling

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

同步啟動執行個體

Amazon EC2 Auto Scaling 提供兩種在 Auto Scaling 群組中啟動執行個體的方法:使用 LaunchInstances API 的非同步擴展行為和同步佈建。

透過同步佈建,您可以使用 LaunchInstances API 來請求特定可用區域中的特定執行個體數量。同步佈建提供下列優點:

  • 針對特定可用區域中容量可用性的立即意見回饋

  • 精確控制哪些可用區域執行個體在 中啟動

  • 可立即在協同運作系統中使用的確定性執行個體 IDs

  • 根據實際容量限制的即時擴展決策

  • 透過消除非同步 Auto Scaling 啟動的等待時間,加快擴展速度

使用非同步 Auto Scaling 時,當您變更所需的容量或擴展政策觸發時,Amazon EC2 Auto Scaling 會處理擴展請求並在背景啟動執行個體。您必須監控擴展活動或描述 Auto Scaling 群組,以判斷執行個體何時成功啟動。

注意
  • LaunchInstances API 僅適用於使用啟動範本的 Auto Scaling 群組。不支援使用啟動組態的 Auto Scaling 群組。如果您的 Auto Scaling 群組使用啟動組態,您必須在使用同步佈建之前遷移至啟動範本。

  • LaunchInstances API 僅支援具有完全隨需或完全 Spot 購買選項的混合執行個體政策。不支援結合隨需執行個體和 Spot 執行個體的混合政策。

  • 對於涵蓋多個可用區域的 Auto Scaling 群組,您必須指定目標可用區域或子網路。對於單一可用區群組,此參數是選用的。

同步佈建和非同步擴展

同步佈建

當您使用 LaunchInstances API 時,Amazon EC2 Auto Scaling:

  • 立即嘗試使用 CreateFleet 啟動請求的執行個體

  • 在回應之前等待 CreateFleet 傳回執行個體 IDs

  • 傳回執行個體 IDs、執行個體類型和可用區域成功的相關資訊

  • 傳回特定錯誤代碼和失敗的詳細資訊

  • 提供即時意見回饋,實現即時擴展決策

非同步擴展

當您使用非同步 Auto Scaling 方法,例如變更所需的容量或使用擴展政策時,Amazon EC2 Auto Scaling:

  • 在 API 中更新所需的容量,但不會立即傳回執行個體

  • Plans 執行個體會自動跨可用區域啟動

  • 透過背景工作流程啟動執行個體

  • 自動分配容量到多個可用區域以平衡

  • 使用內建重試邏輯處理啟動失敗

您必須輪詢擴展活動或描述 Auto Scaling 群組,以檢查啟動操作的狀態。

限制及考量

使用同步佈建時,請記住下列注意事項和限制:

  • 啟動後的執行個體狀態 – API 傳回的執行個體處於擱置狀態。它們在後續工作流程或生命週期關聯期間仍可能會失敗。成功的 API 回應表示 EC2 已接受啟動請求並傳回執行個體 IDs。執行個體不會自動視為完全準備好用於工作負載,而且必須完成標準 EC2 和 Auto Scaling 生命週期程序。

  • 暖集區限制 – 目前不支援具有暖集區的 Auto Scaling 群組。如果您嘗試在已設定暖集區的 Auto Scaling 群組上呼叫 LaunchInstances API,API 會執行冷啟動,而不是使用暖集區執行個體,並傳回 UnsupportedOperation 錯誤。如需冷啟動的詳細資訊,請參閱暖集區的限制

  • API 逾時和重試 – 如果基礎 CreateFleet 操作所花費的時間超過預期,API 可能會逾時並傳回冪等字符。您可以使用相同的 ClientToken 來追蹤原始啟動操作,或使用 describe-instances 搭配用戶端字符來檢查啟動的執行個體。

  • 可用區域限制 – 如果您的 Auto Scaling 群組跨越多個可用區域,且已啟用可用區域重新平衡,則同步啟動執行個體可能會導致操作衝突:

    • 每次呼叫的單一可用區限制 – 每個 LaunchInstances API 呼叫只能以一個可用區域為目標,即使您的 Auto Scaling 群組跨越多個區域。

    • AZ 重新平衡衝突 - 如果您的 Auto Scaling 群組已啟用 AZ 重新平衡,跨不同 AZs循序呼叫可能會觸發額外的非同步啟動,導致執行個體超過預期。請考慮暫停 AZ 重新平衡,以精確控制容量。如需詳細資訊,請參閱暫停和繼續 Amazon EC2 Auto Scaling 程序

  • 部分成功案例 – 如果只有部分請求的容量可用,則 LaunchInstances API 可能會傳回部分成功,這是正常的 EC2 行為。API 會傳回成功啟動的執行個體,以及失敗啟動的錯誤詳細資訊。對於需要所有執行個體一起啟動的使用案例 (例如,應用程式需要相同 AZ 中的所有執行個體才能實現低延遲),您將需要終止部分啟動的執行個體,並在不同的 AZ 中重試。為容量敏感工作負載設計重試邏輯時,請考慮此行為。

  • 執行個體權重 – 如果您的 Auto Scaling 群組使用執行個體權重,RequestedCapacity 參數代表加權容量單位,而不是執行個體的數量。實際啟動的執行個體數量取決於選取的執行個體類型及其設定的權重。EC2 Auto Scaling 限制會針對每個 API 呼叫啟動至 100 個執行個體,無論請求的加權容量為何。

  • 混合執行個體類型 – LaunchInstances API 會使用 Auto Scaling 群組的現有混合執行個體政策來決定要啟動的執行個體類型。API 會根據您群組的配置策略和執行個體類型優先順序啟動執行個體。