![](/img/trans.png)
[英]AWS - Errors - Updating Auto Scaling group, Amazon CloudFormation, Failed to deploy configuration
[英]How can I replace a specific instance in an AWS Auto Scaling Group?
我正在尋找可用於替換AWS 規模組中特定實例的過程,同時保持 AZ“平衡”並且在等待新實例供應時不會減少容量。
有時,我們可能有理由終止規模組中的特定 EC2 實例,並且一直在努力尋找一個有效的程序來執行此操作。 我知道我可以直接終止實例並將其替換,但這會在等待新實例供應時暫時降低規模組的整體容量。 在我們的例子中,這是幾十分鍾,因為我們必須在 ALB 發送請求之前設置和部署我們的軟件
如果我們將desired_capacity
增加 1,我們可以提前准備一個新實例 - 但不能保證它會在與我們希望終止的實例相同的 AZ 中創建。 此外,如果我終止有問題的實例,並立即減少desired_capacity
,scalegroup 是否會終止另一個實例?
那么管理此過程的最佳方法是什么?
您可以暫時暫停和恢復特定的縮放過程。 使用此功能,您可以通過多種方式獲得所需的結果,我在下面介紹了其中兩種方式:
A:使用 Auto Scaling Group 的再平衡功能
Launch
縮放過程(這可以防止在下一步中自動啟動新實例)Launch
縮放過程。 如果剩余實例不平衡,Auto Scaling Group 的AZRebalance
進程將選擇它並逐漸在 AZ 之間重新平衡。B:在所需的 AZ 中顯式啟動一個新實例:
Terminate
縮放過程](這可以防止在下一步中自動終止附加實例)Terminate
縮放過程Auto Scaling 提供以下功能:
當分離、終止或置於備用狀態時,Auto Scaling 組的Desired Capacity可以自動遞減,因此不會啟動替代實例,或者可以保持不變,以便啟動替代實例。
讓 Auto Scaling 啟動任何新實例通常是個好主意,這樣所有實例都是相同的。 因此,如果您擔心容量下降,那么您應該增加 Desired Capacity以啟動新實例,然后終止 Auto Scaling 組中不需要的實例並減少容量以使該組恢復到之前的 Desired Capacity。
您是正確的,不能保證啟動的實例與被刪除的實例位於同一 AZ 中。 Auto Scaling 旨在平衡可用區。 它將在實例數最少的 AZ 中啟動一個實例。 假設有兩個具有相同數量實例的可用區,您希望從可用區 A 中刪除一個實例。增加所需容量可能會在可用區 B 中啟動一個實例。刪除不需要的實例后,這意味着可用區 B比 AZ A 多兩個實例。這是否是一個問題取決於 Auto Scaling 組中的實例總數。
建議使用多個 AZ 是為了處理 AZ 可能發生故障的情況。 此類故障將導致實例暫時丟失,同時 Auto Scaling 在剩余可用區中啟動新實例。 如果擔心這種下降,建議運行額外的實例來處理臨時容量下降。 因此,回到您的問題,您的 Auto Scaling 組應該有足夠的容量來處理一個正在刪除和替換的實例。 如果容量的暫時下降會影響您的系統,那么啟動額外的實例是個好主意,前提是實例可能/將會偶爾失敗。 這也有助於 AZ 發生故障的罕見情況,因為擁有額外的容量意味着系統不會立即損失所需最小容量的 50%。
底線:擁有足夠的容量,以便臨時替換壞實例不會對系統產生重大影響。 與如果僅持續部署最小容量而在可用區中斷中損失 50% 的容量的影響相比,對不平衡可用區的擔憂將是次要的(可用區之間最多 2 個不同的實例)。
歸根結底,這實際上歸結為成本與風險。 使用2 個以上的 AZ 可以減少 AZ 中斷的影響。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.