應用程式架構的 Auto Scaling 優勢 - Amazon EC2 Auto Scaling

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

應用程式架構的 Auto Scaling 優勢

將 Amazon EC2 Auto Scaling 新增至您的應用程式架構是最大化 AWS 雲端優勢的一種方式。當您使用 Amazon EC2 Auto Scaling 時,您的應用程式將獲得以下好處:

  • 較佳的容錯能力。Amazon EC2 Auto Scaling 可以偵測執行個體何時運作狀態不佳、將其終止,然後啟動執行個體以取代它。您也可以將 Amazon EC2 Auto Scaling 設定為使用多個可用區域。如果一個可用區域無法使用,Amazon EC2 Auto Scaling 可以在另一個可用區域中啟動執行個體以補償

  • 較佳的可用性。Amazon EC2 Auto Scaling 可協助確保您的應用程式始終具有適當的容量來處理目前的流量需求。

  • 較佳的成本管理。Amazon EC2 Auto Scaling 可視需要動態增加和減少容量。由於您需要為使用的EC2執行個體付費,因此可以在需要執行個體時啟動執行個體,並在不需要執行個體時終止執行個體來節省成本。

範例:涵蓋變數需求

若要展示 Amazon EC2 Auto Scaling 的一些優點,請考慮在上執行的基本 Web 應用程式 AWS。這個應用程式可讓員工搜尋想要用來開會的會議室。在一週開始和結束時,此應用程式使用最少。在週間時,許多員工會利用此排程會議,因此大幅提高此應用程式的需求。

下圖顯示一週間,此應用程式所使用的容量。

應用程式容量需求範例。

按照傳統做法,有兩種方式可以針對這些容量做變化。第一個選擇是新增足夠的伺服器,讓應用程式永遠有足夠的容量,可以滿足需求。不過,此選項有缺點在於當有天應用程式不再需要這麼多的容量時。未使用的多餘容量,會使維持應用程式執行的成本提高。

顯示的範例從成本角度來看,說明為何購買多過於所需的容量會造成沒效率。

第二個選擇是擁有足夠的容量來處理應用程式的平均需求。此選擇較便宜,因為您未購買偶爾使用的設備。不過,當應用程式需求超過其容量時,會有使客戶體驗品質下降的風險。

範例說明為何購買低於所需容量,會導致不佳的客戶體驗品質。

透過將 Amazon EC2 Auto Scaling 新增至此應用程式,您可以使用第三個選項。您可以在需要時新增新的執行個體到應用程式上,且能在不需要它們的時候,將其終止。由於 Amazon EC2 Auto Scaling 使用EC2執行個體,因此您只需為使用的執行個體付費。您現在擁有成本效益的架構,可供客戶體驗最佳的使用品質,同時又能減少費用。

顯示 Amazon EC2 Auto Scaling 如何視需要調整容量的範例。

範例:Web 應用程式架構

在常見的 Web 應用程式案例中,您可同時執行多個應用程式的複本,以涵蓋客戶流量的磁碟區。這些應用程式的多個副本託管在相同的EC2執行個體 (雲端伺服器) 上,每個副本都會處理客戶要求。

Amazon EC2 Auto Scaling 會代表您管理這些EC2執行個體的啟動和終止。您可以定義一組準則 (例如 Amazon CloudWatch 警示),以決定 Auto Scaling 群組何時啟動或終止EC2執行個體。將 Auto Scaling 群組新增到您的網路架構,有助於提高應用程式的可用性和容錯能力。

具有 Auto Scaling 群組的三層基本架構。

您可以視需要建立任意數量的 Auto Scaling 群組。例如,您可以為每個層級建立 Auto Scaling 群組。

若要將流量分散到 Auto Scaling 群組中的執行個體間,您可以在架構中引進負載平衡器。如需詳細資訊,請參閱Elastic Load Balancing

範例:跨可用區域分配執行個體

可用區域是給定 AWS 區域內的隔離位置。每個區域都有多個可用區域,旨在為該區域提供高可用性。可用區域是獨立的,因此當您將應用程式設計為使用多個區域時,可提高應用程式的可用性。如需詳細資訊,請參閱Amazon EC2 Auto Scaling 的彈性

可用區域由 AWS 區域 程式碼後面接著字母識別碼 (例如,us-east-1a) 來識別。如果您建立VPC和子網路而非使用預設值VPC,則可以在每個可用區域中定義一或多個子網路。各個子網必須完全位於某一可用區域內,不得跨越多個區域。有關更多信息,請參閱 Amazon VPC用戶指南中的 Amazon 如何VPC工作

當您建立自動調整比例群組時,您必須選擇要在其中VPC部署 Auto Scaling 群組的子網路。Amazon EC2 Auto Scaling 會在您選擇的子網路中建立您的執行個體。因此,每個執行個體都會與 Amazon EC2 Auto Scaling 選擇的特定可用區域相關聯。啟動執行個體時,Amazon EC2 Auto Scaling 會嘗試在區域之間平均分配它們,以實現高可用性和可靠性。

下圖顯示跨三個可用區域部署的多層架構概觀。

橫跨三個可用區域的典型 Auto Scaling 群組。

執行個體分佈

Amazon EC2 Auto Scaling 會自動嘗試在每個已啟用的可用區域中維護相等數量的執行個體。Amazon EC2 Auto Scaling 會嘗試在具有最少執行個體的可用區域中啟動新執行個體來達到此目的。如果為可用區域選擇了多個子網路,Amazon EC2 Auto Scaling 會隨機從可用區域選取一個子網路。但是,如果嘗試失敗,Amazon EC2 Auto Scaling 會嘗試在另一個可用區域啟動執行個體,直到成功為止。

在可用區域運作狀態不佳或無法使用的情況下,執行個體在各可用區域之間的分佈可能會變得不均勻。當可用區域復原時,Amazon EC2 Auto Scaling 會自動重新平衡自 Auto Scaling 群組。方法為在已啟用且具有最少執行個體的可用區域中啟動執行個體並終止其他地方的執行個體。

重新平衡活動

重新平衡活動分為兩類:可用區域重新平衡和容量重新平衡。

可用區域重新平衡

在特定動作發生後,Auto Scaling 群組會在可用區域間呈現不平衡狀態。Amazon EC2 Auto Scaling 透過重新平衡可用區域來進行補償。以下動作可以觸發重新平衡活動:

  • 您變更與您 Auto Scaling 群組相關聯的可用區域。

  • 您明確終止或分開執行個體,或將執行個體置於待命狀態,然後群組就變得不平衡。

  • 先前容量不足的可用區域恢復,現在具有額外的容量。

  • 先前可用區域的 Spot 價格高過最高價,現在 Spot 價格則低於最高價格。

重新平衡時,Amazon EC2 Auto Scaling 會先啟動新執行個體,然後再終止舊執行個體。以此方式,重新平衡不會影響您應用程式的性能或可用性。

由於 Amazon EC2 Auto Scaling 會在終止舊版執行個體之前嘗試啟動新執行個體,因此達到或接近指定的最大容量可能會阻礙或完全停止重新平衡活動。

若要避免這個問題,在重新平衡活動期間,系統可以暫時超過指定的群組最大容量。預設方法為採用 10% 的餘裕或一個執行個體 (以較大者為準)。只有當群組達到最大容量或接近最大容量且需要重新平衡時,才會擴大餘裕。只要需要重新平衡群組,邊界就會延伸 (通常只會持續幾分鐘)。

或者,您也可以使用執行個體維護政策為 Auto Scaling 群組建立閾值,而群組只能在該閾值範圍內增減容量。這樣,您就可以控制群組重新平衡自身的速度。如需詳細資訊,請參閱執行個體維護政策

容量重新平衡

使用 Spot 執行個體時,您可以打開 Auto Scaling 群組的容量重新平衡功能。這可讓 Amazon EC2 Auto Scaling 在 Amazon EC2 報告競價型執行個體存在中斷風險較高時嘗試啟動競價型執行個體。啟動新的執行個體後,即會終止之前的執行個體。如需詳細資訊,請參閱使用容量重新平衡來處理 Amazon EC2 Spot 中斷