本文将為您介紹如何通過lifecycleHook實作彈性伸縮組中執行個體自動加入/移除MongoDB白名單。
相關介紹
lifecycleHook通過關聯OOS模闆的方式來實作自動化管理MongoDB白名單的工作,關于lifecycleHook與OOS如何協作,你可以檢視兄弟文章
AutoScaling 通過lifecycleHook自動添加Redis白名單。
模闆介紹
ACS-ESS-LifeCycleModifyMongoDBIPWhitelist模闆負責添加/移除MongoDB白名單操作。當您需要實作自動化添加/移除MongoDB白名單操作時,您需要針對擴縮容流程分别設定兩條OOS類型lifecycleHook。
ACS-ESS-LifeCycleModifyMongoDBIPWhitelist模闆具有以下行為方式:
根據指定的執行個體ID清單擷取Private IP清單;
将Private IP清單添加/移除MongoDB執行個體白名單清單;
該模闆同時支援回調功能:
執行成功時,通過回調通知lifecycleHook繼續執行挂起的伸縮活動;
執行失敗時,通過回調通知lifecycleHook復原挂起的伸縮活動;
當無回調時,lifecycleHook挂起的伸縮活動将在逾時後,執行hook指定的政策。
參數指定
使用者可以建立類型為OOS的lifecycleHook,并選擇OOS系統模闆ACS-ESS-LifeCycleModifyMongoDBIPWhitelist。在選擇了指定的系統模闆之後,你需要為模闆運作配置合适的參數,例如目标MongoDB執行個體的ID,執行個體ID清單,lifecycleHook ID資訊等。由于執行個體ID清單,lifecycleHook ID等資訊隻有在運作時才能擷取到,你需要通過僞參數的提供占位符資訊,支援的僞參數資訊如下:
${scalingGroupId},目前伸縮活動所屬的伸縮組id;
${instanceIds},目前伸縮活動關聯的執行個體清單;
${regionId},目前伸縮活動執行的地域;
${lifecycleActionToken},伸縮活動的等待狀态辨別符,用于提前結束目前的挂起活動;
${lifecycleHookId},關聯生命周期挂鈎id。
注意事項
使用ACS-ESS-LifeCycleModifyMongoDBIPWhitelist模闆時您需要注意:
當您建立該模闆的lifecycleHook時,您需要将伸縮組中存量的執行個體清單手動添加到MongoDB白名單中,否則,當移除一個MongoDB白名單中不存在的執行個體私網IP時,将出現錯誤。
當指定生命周期挂鈎關聯一個OOS模闆時,使用者需要通過生命周期挂鈎的通知辨別(NotificationMetadata,簡稱metadata)為建立OOS執行指定所需的參數。針對OOS模闆的metadata,你需要注意:
- metadata必須為JSON字元串格式;
- metadata中的鍵,必須與OOS模闆參數一一對應;
- OOS模闆中不存在預設值的參數必須指定,存在預設值的參數可選擇是否指定以覆寫預設值。
最佳實踐
下面以控制台建立自動添加MongoDB白名單的OOS類型lifecycleHook為例進行使用介紹。

首先,針對擴容流程建立類型為OOS模闆的生命周期挂鈎,這時,彈框提示您選擇OOS模闆,這裡需要選擇系統模闆ACS-ESS-LifeCycleModifyMongoDBIPWhitelist。
接下來,您需要填充模闆使用的參數,此處已經為您自動填充了部分僞參數,您隻需要填寫目标MongoDB
執行個體ID,同時選擇modifyMode為Append。點選确認,核實您傳入的參數。
點選建立執行,将回到建立lifecycleHook的彈框。
點選建立生命周期挂鈎,完成建立。
此時您可以執行一條擴容伸縮規則,并在
OOS控制台觀察模闆的執行過程。
https://yqfile.alicdn.com/c157447eb79cbf46fd845faca9e2a8804cc98fb3.png