一般問題

問:什麼是 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?

如果想在定義應用程式擴展計劃時獲得更多指導,或是想擴展到 EC2 之外的多個資源,例如 Amazon DynamoDB 表格和索引或 Amazon ECS 任務,就應該使用 AWS Auto Scaling。目前,若要使用 AWS Auto Scaling,您必須透過 AWS CloudFormationAWS Elastic Beanstalk 建立應用程式。AWS Auto Scaling 可協助您在一個位置管理所有應用程式擴展政策,讓您以輕鬆且直覺的方式進行調校。

如果您只需要擴展 Amazon EC2 Auto Scaling 群組,或只是想維護 EC2 叢集的運作狀態,請使用 Amazon 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 執行個體新增到 Auto Scaling 群組;同樣地,也可以設定一個條件,在 CPU 使用率低時,以相同的量遞減移除執行個體。您也可以使用 Amazon CloudWatch 傳送警示以觸發擴展活動,並使用 Elastic Load Balancing (ELB) 將流量分配給 Amazon EC2 Auto Scaling 群組內的執行個體。如果您的負載變化是可預測的,則可透過 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 會視需求調整 EC2 Auto Scaling 群組中的 EC2 執行個體數,以維持您所設的目標。這項功能的運作方式就像是家用恆溫調節器,會自動調整系統以維持舒適的環境溫度。例如,您可以設定目標追蹤,將 Web 伺服器叢集的 CPU 使用率持續控制在 50%。這樣一來,Amazon EC2 Auto Scaling 就會視情況啟動或終止 EC2 執行個體,將平均 CPU 使用率維持在 50%。

問:什麼是 EC2 Auto Scaling 群組?

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

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

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

問:如何知道 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 群組中啟動不同類型的 EC2 執行個體嗎?

只在所有執行個體類型都相同時,EC2 Auto Scaling 才能進行優化。您可以使用 AttachInstances API,將不同的執行個體類型連接至 Auto Scaling 群組,也可以更新啟動組態,以在群組中啟動不同類型的新執行個體。不過,這不會影響任何現有的執行個體。

問:要如何在 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 終止該執行個體。

問:我的 EC2 執行個體是以 Ansible 指令碼建立的。我要如何搭配 Amazon EC2 Auto Scaling 使用 Ansible?

您可以前往 Ansible 網站,了解如何在 Auto Scaling 中使用 Ansible 的詳細資訊。

替換受損的執行個體

問: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)。

定價

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

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

進一步了解 Amazon EC2 Auto Scaling 定價

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