阿里云云計算ACP認證重點梳理3—彈性伸縮

朱祺發表於2019-02-13

彈性伸縮:彈性伸縮是根據使用者的業務需求和策略,自動調整其彈性計算資源的管理服務。其能夠在業務增長時自動增加 ECS 例項,並在業務下降時自動減少 ECS 例項。

伸縮組:伸縮組是具有相同應用場景的 ECS 例項的集合。伸縮組定義了組內 ECS 例項數的最大值、最小值及其相關聯的負載均衡例項和 RDS 例項等屬性。

伸縮配置:伸縮配置定義了用於彈性伸縮的 ECS 例項的配置資訊。

伸縮規則:伸縮規則定義了具體的擴充套件或收縮操作,例如加入或移出 N 個 ECS 例項。

伸縮活動:伸縮規則成功觸發後,就會產生一條伸縮活動。伸縮活動主要用來描述伸縮組內 ECS 例項的變化情況。

伸縮觸發任務:用於觸發伸縮規則的任務,如定時任務、雲監控的報警任務。

冷卻時間:冷卻時間是指,在同一伸縮組內,一個伸縮活動執行完成後的一段鎖定時間。在這段鎖定時間內,該伸縮組不執行其他的伸縮活動。

自動建立的 ECS 例項

自動建立的 ECS 例項是指根據使用者的伸縮配置和伸縮規則,由彈性伸縮服務自動建立的 ECS 例項。彈性伸縮服務負責該型別 ECS 例項的全生命週期管理,即在伸縮組擴充套件活動中,負責該 ECS 例項的建立,在伸縮組的收縮活動中,負責停止和釋放該 ECS 例項

手工新增的 ECS 例項

手工新增的 ECS 例項是指不是由彈性伸縮服務建立,但由使用者手工新增到伸縮組中的 ECS 例項。彈性伸縮服務不負責該型別 ECS 例項的全生命週期管理,即該型別的 ECS 例項是在彈性伸縮服務之外建立,只能手工加入伸縮組,在伸縮組的收縮活動中或使用者手工移出該型別 ECS 例項時,彈性伸縮服務只負責將該 ECS 例項移出伸縮組,不會停止和釋放該 ECS 例項

例項狀態

ECS 例項在伸縮組中的生命週期,通過以下幾種狀態描述:

Pending – 表示 ECS 例項正在加入伸縮組,包括建立例項、加入負載均衡、新增 RDS 訪問名單等過程。

InService – 表示 ECS 例項已成功加入伸縮組,並正常提供服務。

Removing – 表示 ECS 例項正在移出伸縮組。

例項的健康狀態

ECS 例項在伸縮組中的健康狀態為:

Healthy(健康)

Unhealthy(不健康)

彈性伸縮會自動移出伸縮組中不健康的 ECS 例項。

對於自動建立的 ECS 例項,彈性伸縮會停止和釋放該 ECS 例項。

對於手工新增的 ECS 例項,彈性伸縮不會停止和釋放該 ECS 例項。

冷卻時間

冷卻時間指成功執行伸縮活動後的一段鎖定時間。您可以通過以下兩種方式配置冷卻時間:

在伸縮組中配置預設冷卻時間,預設冷卻時間不能為空。

在伸縮規則中配置冷卻時間,如果不配置,將使用預設冷卻時間。

如果同時在伸縮組和伸縮規則中配置了冷卻時間,彈性伸縮服務將優先使用伸縮規則中的冷卻時間。

伸縮組成功執行伸縮活動後,彈性伸縮服務開始計算冷卻時間。如果在伸縮活動中,多臺 ECS 例項加入或者移出伸縮組,則從最後一臺 ECS 例項加入或者移出伸縮組後開始計算冷卻時間

如果在伸縮活動中,沒有 ECS 例項成功加入或者移出伸縮組,則不會開始計算冷卻時間。

在冷卻時間內,伸縮組會拒絕由雲監控報警任務觸發的伸縮活動請求。但其他型別任務(手動執行任務、定時任務)觸發的伸縮活動可以立即執行,繞過冷卻時間。

如果您停用伸縮組,然後再次啟用伸縮組,冷卻時間將會失效。

冷卻時間僅鎖定同一個伸縮組的伸縮活動,不會對其他伸縮組的伸縮活動產生影響。

伸縮活動的流程

自動擴充套件

1、判斷伸縮組的健康狀態和邊界條件。
2、分配 ActivityId 和執行伸縮活動。
3、建立 ECS 例項。
4、修改 Total Capacity。
5、分配 IP。
6、新增 RDS 白名單。
7、啟動 ECS 例項,等待啟動完成。
8、掛載負載均衡,將權重設為建立伸縮配置時指定的 負載均衡權重。
9、伸縮活動完成,啟動 cooldown。

自動收縮

1、判斷伸縮組的健康狀態和邊界條件。
2、分配 ActivityId 和執行伸縮活動。
3、從負載均衡移除 ECS 例項。
4、停止 ECS 例項,等待停止完成。
5、從 RDS 白名單移除。
6、釋放 ECS 例項。
7、修改 Total Capacity。
8、伸縮活動完成,啟動 cooldown。

手工加入

1、判斷伸縮組的健康狀態、邊界條件和 ECS 例項的狀態、型別。
2、分配 ActivityId 和執行伸縮活動。
3、加入 ECS 例項。
4、修改 Total Capacity。
5、新增 RDS 白名單。
6、掛載負載均衡,將權重設為當前伸縮組中已啟用的伸縮配置上指定的負載均衡權重。
7、伸縮活動完成,啟動 cooldown。

手工移出

1、判斷伸縮組的健康狀態和邊界條件。
2、分配 ActivityId 和執行伸縮活動。
3、負載均衡停止向該 ECS 例項轉發流量。
4、等待 60 秒後,從負載均衡移除 ECS 例項。
5、從 RDS 白名單移除。
6、修改 Total Capacity。
7、從伸縮組移出。
8、伸縮活動完成,啟動 cooldown。

伸縮活動有 ECS 例項加入伸縮組失敗時,需要保持 ECS 例項級事務的完整性,而非伸縮活動級事務的完整性,即只進行 ECS 例項級回滾,而不是伸縮活動級回滾

例如,當伸縮組建立了 20 臺 ECS 例項,但只有 19 臺 ECS 例項成功加入負載均衡時,則只對不成功的 1 臺 ECS 例項進行自動釋放操作。

當 ECS 例項成功加入伸縮組後,彈性伸縮服務會定期掃描該 ECS 例項的執行狀態,如果發現該 ECS 例項為非執行中(Running)狀態,則會將該 ECS 例項移出伸縮組

對於彈性服務自動建立的 ECS 例項:將立即啟動移出和釋放該 ECS 例項操作。

對於使用者手工新增的 ECS 例項:將立即啟動移出該 ECS 例項操作,但不會停止和釋放該 ECS 例項。

移出不健康 ECS 例項,不受 MinSize 的限制,即移出不健康 ECS 例項後,有可能導致 Total Capacity 低於 MinSize,此時彈性伸縮服務會自動建立差額的 ECS 例項使得 Total Capacity 等於 MinSize。

同一個賬號一個地域下最多建立 50 個伸縮組。

一個伸縮組內最多建立 10 個伸縮配置。

一個伸縮組內最多建立 50 個伸縮規則。

一個賬號下最多建立 20 個定時任務。

在計算和執行過程中,伸縮規則可以根據伸縮組的 MinSize、MaxSize 進行自動調整其需要增加或減少的 ECS 例項數(例如:伸縮規則中指定將伸縮組的 ECS 例項數調整至 50 臺,但伸縮組 MaxSize 只有 45 臺,則整個伸縮規則會按調整至 45 臺來計算和執行。

同一伸縮組內、同一時刻只能有一個伸縮活動在執行。

伸縮活動不可以中斷。例如,某個建立 20 臺 ECS 例項的伸縮活動正在執行中,當建立到第 5 臺 ECS 例項時,您無法強行終止該伸縮活動。

由於彈性伸縮是藉助阿里雲的 RAM (Resource Access Management)服務,通過 ECS Open API代替使用者彈性伸縮 ECS 例項資源,所以回滾的 ECS 例項仍然會被扣費

由於在同一時刻一個伸縮組中只能存在一個伸縮活動,定時任務還提供了自動重試時間設定功能,避免因為單次執行伸縮規則失敗影響定時任務的結果。如果同一分鐘記憶體在多個待執行的定時任務,彈性伸縮會執行最新建立的定時任務


相關文章