伸縮組內執行個體指ECS執行個體或ECI執行個體,執行個體從建立到釋放的過程可能處於不同的狀態,這些狀態組成了執行個體的生命週期。生命週期掛鈎功能可提供控制伸縮組內ECS執行個體或ECI執行個體建立和移出的能力,以便您靈活地管理執行個體的生命週期。本文介紹伸縮組內執行個體的生命週期管理方式、健全狀態檢查以及可能的生命週期狀態。
伸縮組內執行個體的生命週期管理方式
根據ECS執行個體或ECI執行個體加入伸縮組的方式,ECS執行個體或ECI執行個體可以分為自動建立的執行個體和手動建立的執行個體,對應的生命週期管理方式如下表所示。
執行個體類型 | 添加方式 | 生命週期管理方式 |
自動建立的執行個體 | 根據伸縮組的執行個體配置資訊來源自動建立的ECS執行個體或ECI執行個體。 | Auto Scaling管理ECS執行個體或ECI執行個體的全生命週期,彈性擴張時負責建立ECS執行個體或ECI執行個體,彈性收縮時負責停止和釋放ECS執行個體或ECI執行個體。 |
手動建立的執行個體 | 由您手動建立ECS執行個體或ECI執行個體,然後再手動將建立好的ECS執行個體或ECI執行個體添加至伸縮組。 | 由是否將ECS執行個體或ECI執行個體的生命週期託管給伸縮組決定:
說明 支援將訂用帳戶ECS執行個體添加至伸縮組,但不支援託管訂用帳戶ECS執行個體。 |
伸縮組內執行個體的健全狀態檢查
Auto Scaling管理ECS執行個體或ECI執行個體的生命週期時,會定期檢查ECS執行個體或ECI執行個體的運行狀態,如果發現一台ECS執行個體或ECI執行個體未處於運行中狀態,則判定該ECS執行個體或ECI執行個體不健康,伸縮組會及時將不健康的ECS執行個體或ECI執行個體移出或者釋放。
ECS執行個體或ECI執行個體的運行狀態是ECS執行個體或ECI執行個體從建立開始到釋放結束的可能狀態,並非ECS執行個體或ECI執行個體在伸縮組內的服務狀態。
您可以在建立伸縮組時開啟或關閉健全狀態檢查,也可以為已建立的伸縮組開啟或關閉健全狀態檢查,具體操作,請參見配置伸縮組和修改伸縮組。
開啟健全狀態檢查後,Auto Scaling管理伸縮組內ECS執行個體或ECI執行個體的生命週期時,會檢查ECS執行個體或ECI執行個體是否健康,並及時移出甚至釋放不健康的ECS執行個體或ECI執行個體,具體說明如下所示:
如果ECS執行個體或ECI執行個體由Auto Scaling自動建立,或者由您手動添加至伸縮組但生命週期已託管給伸縮組,Auto Scaling會移出並釋放ECS執行個體或ECI執行個體。
如果ECS執行個體或ECI執行個體由您手動添加至伸縮組且生命週期未託管給伸縮組,Auto Scaling會從伸縮組移出ECS執行個體或ECI執行個體,但不會釋放該ECS執行個體或ECI執行個體。
移出不健康的ECS執行個體或ECI執行個體時不受最小執行個體數的限制,可能導致伸縮組內執行個體數低於最小執行個體數。此時Auto Scaling會自動建立對應數量的ECS執行個體或ECI執行個體,使得伸縮組內執行個體數等於最小執行個體數。
警告請確保帳號可用額度充足。如果帳號欠費,所有後付費的ECS執行個體(包括隨用隨付執行個體和搶佔式執行個體)都會停機,甚至被釋放。欠費後伸縮組內ECS執行個體狀態變化,請參見欠費說明。
伸縮組內執行個體的生命週期狀態
根據伸縮組是否添加生命週期掛鈎,伸縮組內ECS執行個體或ECI執行個體的生命週期狀態有所差異,具體說明如下所示。
ECS執行個體或ECI執行個體本身的生命週期是ECS執行個體或ECI執行個體從建立開始到釋放結束的過程,與伸縮組內ECS執行個體或ECI執行個體的生命週期不同,更多資訊,請參見執行個體的生命週期。
本節以伸縮組內的ECS執行個體為例,展示伸縮組內執行個體的生命週期狀態關係和執行個體可能所處的服務狀態。
伸縮組未添加生命週期掛鈎時,伸縮組內ECS執行個體可能的生命週期狀態關係如下圖所示:
圖中括弧內表示API中執行個體的狀態。通過API擷取伸縮組中執行個體狀態,請參見DescribeScalingInstances - 查詢伸縮組內ECS執行個體列表。
伸縮組中添加生命週期掛鈎時,伸縮組內ECS執行個體可能的生命週期狀態如下圖所示:
圖中括弧內表示API中執行個體的狀態。通過API擷取伸縮組中執行個體狀態,請參見DescribeScalingInstances - 查詢伸縮組內ECS執行個體列表。
從加入伸縮組到移出伸縮組,伸縮組內ECS執行個體可能的服務狀態具體說明如下表所示。
下表格服務狀態列下括弧中的內表示在API中執行個體的狀態。通過API擷取伸縮組中執行個體狀態,請參見DescribeScalingInstances - 查詢伸縮組內ECS執行個體列表。
服務狀態 | 狀態說明 | 相關操作 |
加入中(Pending) | ECS執行個體正在加入伸縮組,包括加入Server Load Balancer執行個體的後端伺服器、RDS執行個體的訪問白名單等過程。 以下狀態的ECS執行個體可加入伸縮組:
|
|
加入掛起中(Pending:Wait) | 如果伸縮組內建立了適用於彈性擴張活動的生命週期掛鈎,ECS執行個體在加入伸縮組時被掛起並等待掛鈎逾時結束。 您可以在掛起期間對ECS執行個體進行預裝軟體或其他自訂動作,例如,綁定輔助彈性網卡、添加Redis執行個體白名單等。 說明 伸縮組中添加生命週期掛鈎功能時,伸縮組內的ECS執行個體才會出現該服務狀態。 | |
服務中(InService) | ECS執行個體已成功加入伸縮組並正常提供服務。 如果出現以下任一種情況,ECS執行個體將不再保持服務中(In Service) 狀態:
| 服務中(In Service) 狀態的ECS執行個體可轉為停用狀態、備用狀態,或者手動移出或刪除執行個體,更多資訊,請參見手動調整執行個體狀態。 |
備用中(Standby) | ECS執行個體不提供服務,負載平衡權重被置為零,Server Load Balancer執行個體停止向ECS執行個體轉寄流量,且Auto Scaling不管理ECS執行個體的生命週期,而是由您手動進行管理。 在備用狀態下,您可以進行排查ECS執行個體異常、更新ECS執行個體鏡像等操作,然後重新將ECS執行個體投入使用中,可再次加入伸縮組。 說明 備用中的ECS執行個體在重新投入使用前,不再屬於您應用程式的有效部分。 | |
保護中(Protected) |
| |
移出中(Removing) | ECS執行個體正在移出伸縮組,包括移出Server Load Balancer執行個體的後端伺服器、RDS執行個體的訪問白名單等過程。 移出後的ECS執行個體獨立於伸縮組內的ECS執行個體,您也可以將ECS執行個體加入到其他伸縮組中。 |
|
移出掛起中(Removing:Wait) | 如果伸縮組內建立了適用於彈性收縮活動的生命週期掛鈎,ECS執行個體在移出伸縮組時被掛起並等待掛鈎逾時時間結束。 您可以在掛起期間對ECS執行個體進行卸載軟體或其他自訂動作,例如,拷貝日誌、清理資料等。 說明 伸縮組中添加生命週期掛鈎功能時,伸縮組內的ECS執行個體才會出現該服務狀態。 | |
停用中(Stopped) | 完成生命週期的管理後,ECS執行個體已進入停用狀態,不提供服務。ECS執行個體處於停用狀態時,vCPU、記憶體和固定公網IP會被回收,因此vCPU、記憶體和固定公網頻寬不再收費,但是雲端硬碟、Elastic IP Address等資源仍然保留並收費。發生彈性擴張活動時,會優先啟用伸縮組中處於停用狀態的ECS執行個體。 說明 如果您需要將ECS執行個體轉為停用狀態,請確保在建立伸縮組時將執行個體回收模式設定為停機回收模式。 |