一般問題

問:什麼是 Amazon EC2 Auto Scaling?

Amazon EC2 Auto Scaling 是全受管服務,旨在自動啟動或終止 Amazon EC2 執行個體,以確保您擁有足夠的 Amazon EC2 執行個體數量來處理應用程式負載。Amazon EC2 Auto Scaling 可協助您透過 EC2 執行個體的叢集管理來維護應用程式可用性,叢集管理可偵測並替換運作狀態不良的執行個體,並根據您定義的條件,自動擴展或縮減 Amazon EC2 容量。您可以使用 Amazon EC2 Auto Scaling 在需求尖峰期間自動增加 Amazon EC2 執行個體的數量以維護效能,並在需求平淡期自動減少容量以降低成本。

問:何時應該使用 Amazon EC2 Auto Scaling 和AWS Auto Scaling?

您應該使用 AWS Auto Scaling 管理跨多個服務的多個資源擴展。AWS Auto Scaling 可讓您使用預先定義的擴展策略定義多個 EC2 Auto Scaling 群組或其他資源的動態擴展政策。相較於使用個別服務主控台管理每個資源的擴展政策,使用 AWS Auto Scaling 設定應用程式所有可擴展資源的擴展政策是較快的方法。而且也較為容易,因為 AWS Auto Scaling 包含預先定義的擴展策略,可簡化擴展政策的設定程序。如果您想針對 EC2 資源建立預測擴展,您還應使用 AWS Auto Scaling。

如果您只需要擴展 Amazon EC2 Auto Scaling 群組,或只是想維護 EC2 叢集的運作狀態,應使用 EC2 Auto Scaling。如果您需要建立或設定 Amazon EC2 Auto Scaling 群組,或需要設定排定或階段式擴展政策,也應使用 EC2 Auto Scaling (因為 AWS Auto Scaling 僅支援目標追蹤擴展政策)。

EC2 Auto Scaling 群組必須在 AWS Auto Scaling 外部建立和設定,像是透過 EC2 主控台、Auto Scaling API 或 CloudFormation。AWS Auto Scaling 可協助您設定現有 EC2 Auto Scaling 群組的動態擴展政策。

問:使用 Amazon EC2 Auto Scaling 的好處是什麼?

Amazon EC2 Auto Scaling 可協助您維護 Amazon EC2 執行個體的可用性。無論是只執行一個或上千個 Amazon EC2 執行個體,您都可以使用 Amazon EC2 Auto Scaling 來偵測受損的 Amazon EC2 執行個體,並由系統自動替換這些執行個體,無須您介入。這可確保應用程式擁有您預期的運算容量。您可以使用 Amazon EC2 Auto Scaling,按照應用程式的需求曲線自動擴展 Amazon EC2 叢集,省去事先手動佈建 Amazon EC2 容量的需求。例如,您可以設定一個條件,在 Amazon EC2 叢集達到高平均使用率時,以遞增方式將新的 Amazon EC2 執行個體新增到 ASG;同樣地,也可以設定一個條件,在 CPU 使用率低時,以相同的量遞減移除執行個體。您也可以使用 Amazon CloudWatch 傳送警示以觸發擴展活動,並使用 Elastic Load Balancing (ELB) 將流量分配給 ASG 內的執行個體。如果您的負載變化是可預測的,則可透過 Amazon EC2 Auto Scaling 設定排程,以規劃您的擴展活動。Amazon EC2 Auto Scaling 讓您能夠以最佳使用率執行 Amazon EC2 叢集。

問:什麼是叢集管理,它與動態擴展有何不同?

如果您的應用程式在 Amazon EC2 執行個體上執行,則您擁有的就是「叢集」。叢集管理是指自動替換運作狀態不良的執行個體,以維持所需叢集容量的功能。Amazon EC2 Auto Scaling 叢集管理可確保您的應用程式能接收流量,以及執行個體本身運作正常。當 Auto Scaling 偵測到故障的運作狀態檢查,便會自動替換執行個體。

Amazon EC2 Auto Scaling 的動態擴展能力,是指依據負載或其他指標自動增加或減少容量的功能。例如,如果 CPU 峰值超過 80% (且您已設定警示),Amazon EC2 Auto Scaling 可動態新增執行個體。

問:什麼是目標追蹤?

目標追蹤是一種新的擴展政策類型,讓您以幾個簡單的步驟,即可用於設定應用程式的動態擴展。使用目標追蹤,即可為應用程式選取負載指標 (像是 CPU 使用率或請求數)、設定目標值,而 Amazon EC2 Auto Scaling 會視需求調整 ASG 中的 EC2 執行個體數,以維持您所設的目標。這項功能的運作方式就像是家用恆溫調節器,會自動調整系統以維持舒適的環境溫度。例如,您可以設定目標追蹤,將 Web 伺服器叢集的 CPU 使用率持續控制在 50%。這樣一來,Amazon EC2 Auto Scaling 就會視情況啟動或終止 EC2 執行個體,將平均 CPU 使用率維持在 50%。

問:什麼是 EC2 Auto Scaling 群組 (ASG)?

Amazon EC2 Auto Scaling 群組 (ASG) 包含一組特性相似的 EC2 執行個體,而系統會將這組執行個體視為邏輯群組,以達成叢集管理和動態擴展的目的。例如,如果單一應用程式會在多個執行個體上運作,您可能想增加該群組中的執行個體數量來改善應用程式效能,或是在需求不高時減少數量以降低成本。Amazon EC2 Auto Scaling 會按照您指定的條件或在執行個體運作狀態不良時,自動調整群組中的執行個體數量,將執行個體維持在固定的數量。您可以參閱 Amazon EC2 Auto Scaling 使用者指南,了解有關 ASG 的詳細資訊。

問:如果刪除 ASG,我的 Amazon EC2 執行個體會發生什麼情況?

如果您的 EC2 Auto Scaling 群組 (ASG) 有執行中的執行個體,而您選擇刪除該 ASG,則會終止執行個體並刪除 ASG。

問:如何知道 EC2 Auto Scaling 何時啟動或終止 EC2 Auto Scaling 群組中的 EC2 執行個體?

當您使用 Amazon EC2 Auto Scaling 自動調整應用程式規模時,掌握 EC2 Auto Scaling 何時啟動或終止 EC2 Auto Scaling 群組中的 EC2 執行個體,這項資訊相當有用。Amazon SNS 可協調和管理要交付或傳送給訂閱用戶端或端點的通知。您可以設定 EC2 Auto Scaling 在 EC2 Auto Scaling 群組擴展時,隨時傳送 SNS 通知給您。Amazon SNS 可透過 HTTP 或 HTTPS POST、電子郵件 (SMTP,以純文字或 JSON 格式) 或在 Amazon SQS 佇列張貼訊息的形式交付通知。例如,如果您設定 EC2 Auto Scaling 群組使用 autoscaling: EC2_INSTANCE_TERMINATE 通知類型,則當您的 EC2 Auto Scaling 群組終止執行個體時,系統就會傳送通知電子郵件。此電子郵件包含已終止執行個體的詳細資訊,例如執行個體 ID 和執行個體終止的原因。

如需詳細資訊,請參閱 Getting SNS Notifications when your EC2 Auto Scaling Group Scales

問:什麼是啟動組態?

啟動組態是 EC2 Auto Scaling 群組用來啟動 EC2 執行個體的範本。當您建立啟動組態時,可指定執行個體的資訊,像是 Amazon 機器映像 (AMI) 的 ID、執行個體類型、金鑰對、一或多個安全群組,以及區塊型設備映射。如果您之前已經啟動一個 EC2 執行個體,您可指定同樣的資訊以再次啟動該執行個體。您建立 EC2 Auto Scaling 群組時,必須指定啟動組態。您可以指定啟動組態搭配多個 EC2 Auto Scaling 群組。不過,一次只能為一個 EC2 Auto Scaling 群組指定一個啟動組態,而且建立之後不能修改啟動組態。因此,如果您要變更 EC2 Auto Scaling 群組的啟動組態,就必須先建立啟動組態,再使用新的啟動組態更新 EC2 Auto Scaling 群組。變更 EC2 Auto Scaling 群組的啟動組態時,新的執行個體會使用新組態參數啟動,但不會影響現有的執行個體。如需詳細資訊,您可以參閱 EC2 Auto Scaling 使用者指南的啟動組態一節。

問:EC2 Auto Scaling 群組可以包含多少個執行個體?

您可以在 EC2 Auto Scaling 群組加入 EC2 配額允許的執行個體數上限。

問:如果擴展活動導致達到我的 Amazon EC2 執行個體數限制,會發生什麼情況?

Amazon EC2 Auto Scaling 不會擴展超過您可執行的 Amazon EC2 執行個體數限制。如果需要執行更多數量的 Amazon EC2 執行個體,請填寫 Amazon EC2 執行個體申請表

問:EC2 Auto Scaling 群組是否可以跨多個 AWS 區域?

EC2 Auto Scaling 群組為區域性建構。它們可以跨可用區域,但無法跨 AWS 區域。

問:要如何在 EC2 Auto Scaling 群組中跨多個執行個體實作變更?

您可以使用 AWS CodeDeploy 或 CloudFormation,在 EC2 Auto Scaling 群組的多個執行個體之間協調程式碼變更。

問:如果我先在 EC2 Auto Scaling 群組中安裝資料,之後才動態建立了一個新的執行個體,資料是否會複製到新的執行個體?

資料不會從現有的執行個體自動複製到新的執行個體。您可以使用生命週期勾點來複製資料,或是使用含有複本的 Amazon RDS 資料庫。

問:如果從現有的執行個體建立 EC2 Auto Scaling 群組,這是否會建立新的 AMI (Amazon 機器映像)?

從現有的執行個體建立 Auto Scaling 群組並不會建立新的 AMI。如需詳細資訊,請參閱 Creating an Auto Scaling Group Using an EC2 Instance

問:Amazon EC2 Auto Scaling 如何平衡容量?

平衡各個可用區域之間的資源是架構良好應用程式的最佳實務,因為這樣做可大幅提升彙總系統的可用性。當您在 EC2 Auto Scaling 群組設定中設定多個區域時,Amazon EC2 Auto Scaling 會自動平衡各個區域之間的 EC2 執行個體。Amazon EC2 Auto Scaling 會隨時啟動新執行個體,這樣即可在整個叢集中盡可能將負載平均分配到各個區域。更重要的是,Amazon EC2 Auto Scaling 只會在可提供所需執行個體類型容量的可用區域中啟動執行個體。

問:什麼是生命週期勾點?

生命週期勾點可讓您在執行個體開始運作或終止之前採取行動。如果您沒有要在 Amazon 機器映像 (AMI) 之中預製軟體環境,這項功能相當有用。例如,啟動勾點可在執行個體上執行軟體組態,以在 Amazon EC2 Auto Scaling 開始將執行個體連接至負載平衡器之前,確保一切準備就緒,能夠處理流量。要達成此目的的其中一個方式,便是為勾點啟動可在執行個體上呼叫 RunCommand 的 AWS Lambda 函數。如要在執行個體移除之前收集相關資料,則很適合使用終止勾點。例如,您可以使用終止勾點,在執行個體終止服務之前,將叢集的日誌檔複製到 Amazon S3 儲存貯體,以保留您的日誌檔。

如需詳細資訊,請參閱 Amazon EC2 Auto Scaling 使用者指南的生命週期勾點

問:「運作狀態不良」執行個體的特性為何?

運作狀態不良的執行個體,是指執行個體的硬體因某些原因 (磁碟損毀等) 受損,或是無法通過使用者設定的 ELB 運作狀態檢查。Amazon EC2 Auto Scaling 會在個別 EC2 執行個體上定期執行運作狀態檢查,如果執行個體已連線至 Elastic Load Balancing 負載平衡器,也可以執行 ELB 運作狀態檢查

問:我可以自訂運作狀態檢查嗎?

可以,有個稱為 SetInstanceHealth 的 API,可讓您將執行個體的狀態變更為 UNHEALTHY,進而進行終止和替換程序。

問:我可以暫停運作狀態檢查嗎 (例如,為了評估運作狀態不良的執行個體)?

可以,您可以使用 SuspendProcesses API 暫停 Amazon EC2 Auto Scaling 運作狀態檢查。您可以使用 ResumeProcesses API 恢復自動運作狀態檢查。

問:我應選取哪一種運作狀態檢查?

如果您是以 Elastic Load Balancing (ELB) 搭配群組使用,則應選取 ELB 運作狀態檢查。如果您不是以 ELB 搭配群組使用,則應選取 EC2 運作狀態檢查。

問:如果我沒有使用 Elastic Load Balancing (ELB),是否可以使用 Amazon EC2 Auto Scaling 進行運作狀態檢查,以替換運作狀態不良的執行個體?

您不必使用 ELB,也能使用 Auto Scaling 功能。您可以使用 EC2 運作狀態檢查來找出並替換運作狀態不良的執行個體。

問:Elastic Load Balancing (ELB) 運作狀態檢查是否可搭配 Application Load Balancer 和 Network Load Balancer 使用? 如果與執行個體關聯的任何目標群組運作狀態不良,執行個體是否也會被標示為運作狀態不良?

會,Amazon EC2 Auto Scaling 可與 Application Load Balancer 和 Network Load Balancer 搭配使用,包含它們的運作狀態檢查在內。

問:有沒有任何方法能只用 Amazon EC2 Auto Scaling 新增磁碟區,而不新增執行個體?

磁碟區在新增時就會連接至新執行個體。Amazon EC2 Auto Scaling 不會在現有磁碟區快達到容量上限時自動新增磁碟區。您可以使用 EC2 API 在現有的執行個體中新增磁碟區。

問:「狀態執行個體」一詞指的是什麼?

所謂的狀態執行個體,指的是上面有資料的執行個體,且資料只存在於該執行個體。一般而言,終止狀態執行個體就意味著其中的資料 (或狀態資訊) 也會遺失。您可以考慮在執行個體終止之前,使用生命週期勾點將狀態執行個體的資料複製出來,或是啟用執行個體保護以避免 Amazon EC2 Auto Scaling 終止該執行個體。

替換受損的執行個體

問:Amazon EC2 Auto Scaling 如何替換受損的執行個體?

運作狀態檢查期間發現受損的執行個體時,Amazon EC2 Auto Scaling 會自動終止該執行個體,並使用新的執行個體進行替換。如果您正在使用 Elastic Load Balancing 負載平衡器,Amazon EC2 Auto Scaling 會妥善地將受損的執行個體和負載平衡器先中斷連接,再佈建並連接新的執行個體到負載平衡器。這工作會自動完成,因此需要替換執行個體時,您不需要手動回應。

問:如何控制 Amazon EC2 Auto Scaling 在縮減規模時只終止特定執行個體,以及如何保護執行個體上的資料?

使用每個 Amazon EC2 Auto Scaling 群組時,您可以控制 Amazon EC2 Auto Scaling 在您的群組中新增執行個體 (又稱為擴展) 或移除執行個體 (又稱為縮減) 的時機。透過連接和中斷連接執行個體,您就可以手動調整群組規模,或者您也可以運用擴展政策將這個程序自動化。當您讓 Amazon EC2 Auto Scaling 自動縮減時,您必須決定 Amazon EC2 Auto Scaling 要優先終止哪些執行個體。您可以使用終止政策來設定此優先順序。您也可以使用執行個體保護功能,防止 Amazon EC2 Auto Scaling 在縮減規模時選中並刪除特定執行個體。如果您在執行個體上存有資料,而且該資料在縮減規模時仍需保留,那麼您就可以使用像是 S3、RDS 或 DynamoDB 這類服務,確保這些資料存放在執行個體以外的位置。

問:在偵測到運作狀態不良伺服器之後,Amazon EC2 Auto Scaling 需要多久的準備時間來啟動狀態為 inService 的新執行個體?

準備時間只需幾分鐘。大多數的替換作業都能在 5 分鐘內完成,平均而言,所需時間明顯短於 5 分鐘。準備時間取決於各式各樣的因素,包括啟動執行個體 AMI 所需的時間在內。

問:如果 Elastic Load Balancing (ELB) 判斷執行個體運作狀態不良,並將其設為離線,那麼先前傳送到該故障執行個體的請求,是否會排入佇列並重新路由給群組中的其他執行個體?

當 ELB 發現某個執行個體的運作狀態不良時,就會停止將請求路由給它。不過,在發現執行個體運作狀態不良的情形之前傳送給該執行個體的部分請求將會失敗。

問:如果沒有使用 Elastic Load Balancing (ELB),系統在發生錯誤時會如何將使用者導向群組中的其他伺服器?

您可以使用 Route53 (Amazon EC2 Auto Scaling 目前並未支援立即可用此功能,但有許多客戶都會使用) 來進行整合。您也可以使用自己的反向代理;若是微型服務,則可以使用服務探索解決方案。

安全性

問:如何控制 Amazon EC2 Auto Scaling 資源的存取?

Amazon EC2 Auto Scaling 已與 AWS Identity and Access Management (IAM) 整合,而此服務可協助您完成下列工作:

  • 在您組織的 AWS 帳戶底下建立使用者與群組
  • 將唯一安全登入資料指派給 AWS 帳戶底下的每位使用者
  • 控制每個使用者使用 AWS 資源執行任務的許可
  • 允許另一個 AWS 帳戶內的使用者共用您的 AWS 資源
  • 為您的 AWS 帳戶建立角色,並定義可擔任這些角色的使用者或服務
  • 使用您企業現有的身分,以授與使用 AWS 資源執行任務的許可

例如,您可以建立 IAM 政策,只授與管理員群組使用 DescribeAutoScalingGroupsDescribeLaunchConfigurationsDescribeScalingActivitiesDescribePolicies API 操作的許可。管理員群組中的使用者就可以用任何 Amazon EC2 Auto Scaling 群組和啟動組態來使用那些操作。使用 Amazon EC2 Auto Scaling 資源層級許可時,您可以限制特定 EC2 Auto Scaling 群組或啟動組態的存取。

如需詳細資訊,請參閱 Amazon EC2 Auto Scaling 使用者指南的 Controlling Access to Your Auto Scaling Resources 一節。

問:可以使用 Amazon EC2 Auto Scaling 在 Windows 執行個體上定義預設管理員密碼嗎?

您可以對 CreateLaunchConfiguration 使用 Key Name 參數,為金鑰對與您的執行個體建立關聯。然後在 EC2 中使用 GetPasswordData API。您也可以透過 AWS 管理主控台使用。

問:在建立 Amazon EC2 Auto Scaling 群組時,是否會在 EC2 執行個體上自動安裝 CloudWatch Agent?

如果您的 AMI 包含 CloudWatch Agent,就會在您建立 EC2 Auto Scaling 群組時,自動安裝在 EC2 執行個體上。但若使用儲存 Amazon Linux AMI,則需自行安裝 (建議透過 yum)。

成本優化

問:我是否可以建立單一 ASG 來擴展不同購買選項的執行個體?

是。您可以在單一 Auto Scaling 群組跨不同的 EC2 執行個體類型、可用區域和在隨需、預留和 Spot 購買選項之間佈建和自動擴展 EC2 容量。您可以定義如何分割隨需和 Spot 容量、選取要在應用程式使用哪種執行個體類型,以及指定 EC2 Auto Scaling 在每個購買模式內分配 ASG 容量的偏好方式。

問:我是否可以使用 ASG 來啟動和管理僅 Spot 執行個體或僅隨需執行個體和 RI?

是。您可以設定 ASG 將所有容量指定為僅 Spot 執行個體,或將所有容量指定為僅隨需執行個體和 RI。

問:我是否可以擁有一個隨需執行個體和 RI 的基本容量,然後在 Spot 執行個體上擴展 ASG?

是。設定 ASG 以組合購買模式時,您可以指定隨需執行個體要滿足的群組基本容量。隨著 ASG 縮減或擴展,EC2 Auto Scaling 可確保以隨需執行個體滿足基本容量,而超過基本容量的部分,則會以僅 Spot 執行個體或是指定百分比的隨需或 Spot 執行個體組合來滿足。

問:我是否可以修改 ASG 的組態,以更新有關組合購買模式以及指定多個執行個體類型的不同屬性?

是。與其他 ASG 參數類似,客戶可以更新現有的 ASG,以修改有關組合購買模式以及指定多個執行個體類型的某個或全部參數,包括執行個體類型、隨需執行個體的優先順序、隨需和 Spot 執行個體之間的百分比分割以及分配策略。

問:我是否可以針對在 ASG 中的隨需執行個體使用 RI 折扣?

是。例如,如果您有 C4 執行個體的 RI,而且 EC2 Auto Scaling 啟動 C4,則您將收到針對隨需執行個體的 RI 定價。

問:我是否可以在 Auto Scaling 群組中指定不同大小的執行個體 (CPU 核心、記憶體)?

是。您可以指定某一區域中可用的任何執行個體類型。此外,您可以選擇性地為每個執行個體類型指定權重,定義每個執行個體為應用程式效能貢獻的容量單位。

問:如果我想用的執行個體類型在某一可用區域中無法使用,該怎麼辦?

如果可用區域中沒有指定的執行個體類型可用,則 Auto Scaling 會在其他與 Auto Scaling 群組相關的可用區域中重新設定啟動目標。如果所有執行個體類型在可用區域中都無法使用,則 Auto Scaling 通常偏好在可用區域之間平衡運算,並重新設定目標。

定價

問:使用 Amazon EC2 Auto Scaling 的成本是多少?

EC2 執行個體的 Amazon EC2 Auto Scaling 叢集管理不需額外費用。Amazon EC2 Auto Scaling 的動態擴展功能是由 Amazon CloudWatch 啟用,因此也不會收取額外費用。Amazon EC2 與 Amazon CloudWatch 服務需要付費,且分別計費。

進一步了解 Amazon EC2 Auto Scaling 定價

瀏覽定價頁面
準備好開始使用了嗎?
註冊
還有其他問題嗎?
聯絡我們