本文将為您介紹如何通過LifecycleHook實作彈性伸縮組中執行個體啟動/釋放時執行指令
相關介紹
lifecycleHook通過關聯OOS模闆的方式來實作到執行個體執行指令的工作,關于lifecycleHook與OOS如何協作,你可以檢視兄弟文章
AutoScaling 通過lifecycleHook自動添加Redis白名單。
關聯模闆
ACS-ESS-LifeCycleRunCommand模闆負責執行指令的操作。
模闆具有如下行為:
- 根據指定的執行個體ID清單并發到執行個體執行指令
該模闆同時支援回調功能:
- 執行成功時,通過回調通知lifecycleHook繼續執行挂起的伸縮活動;
- 執行失敗時,通過回調通知lifecycleHook復原挂起的伸縮活動;
- 當無回調時,lifecycleHook挂起的伸縮活動将在逾時後,hook指定的政策。
參數指定
使用者可以建立類型為OOS的lifecycleHook,并選擇OOS系統模闆ACS-ESS-LifeCycleRunCommand。在選擇了指定的系統模闆之後,你需要為模闆運作配置合适的參數,例如指令的内容,指令的類型,lifecycleHook ID資訊等。由于執行個體ID清單,lifecycleHook ID等資訊隻有在運作時才能擷取到,你需要通過僞參數的提供占位符資訊,支援的僞參數資訊如下:
- ${scalingGroupId},目前伸縮活動所屬的伸縮組id;
- ${instanceIds},目前伸縮活動關聯的執行個體清單;
- ${regionId},目前伸縮活動執行的地域;
- ${lifecycleActionToken},伸縮活動的等待狀态辨別符,用于提前結束目前的挂起活動;
- ${lifecycleHookId},關聯生命周期挂鈎id。
注意事項
使用ACS-ESS-LifeCycleRunCommand模闆時您需要注意:
當指定生命周期挂鈎關聯一個OOS模闆時,使用者需要通過生命周期挂鈎的通知辨別(NotificationMetadata,簡稱metadata)為建立OOS執行指定所需的參數。針對OOS模闆的metadata,你需要注意:
- metadata必須為JSON字元串格式;
- metadata中的鍵,必須與OOS模闆參數一一對應;
- OOS模闆中不存在預設值的參數必須指定,存在預設值的參數可選擇是否指定以覆寫預設值
角色配置
OOS服務使用OOSServiceRole做為預設角色,您需要建立并給該角色相應的權限以使OOS完成相應的操作
配置步驟如下:
1.在Ram控制台建立角色并指定受信服務為運維編排服務

2.為OOS配置相應的權限 這裡需要ECS和ESS的Full權限
操作步驟
手動将執行個體擴容到4台 然後看看執行結果
執行後我們可以看到在OOS控制台有相應的一條執行并執行成功了,可以點詳情看執行内容
總結
至此我們完成了在執行個體啟動時到執行個體執行指令的整個操作,相應的,您還可以再移除執行個體之前到執行個體執行指令,借此您可以完成安裝軟體和優雅停機的整個過程。