本教程介紹如何使用彈性伸縮的生命周期掛鉤功能掛起ECS實例,并結合系統運維管理 OOS(CloudOps Orchestration Service)的模板,實現為ECS實例自動應用自動快照策略。
前提條件
已創建伸縮組,且伸縮組處于啟用狀態。如未創建伸縮組,具體操作,請參見配置伸縮組。
已創建自動快照策略。具體操作,請參見創建自動快照策略。
已為OOS服務創建RAM角色。該RAM角色的可信實體必須為阿里云服務,受信服務為系統運維管理,并且擁有執行OOS模板的權限。具體操作,請參見為OOS服務設置RAM權限。
說明本教程中使用的示例RAM角色為OOSServiceRole,您也可以使用其他自定義的RAM角色。
背景信息
自動快照策略可以為ECS實例定期創建快照,提高數據安全和操作容錯率。目前創建伸縮配置時暫時不支持關聯自動快照策略,但您可以通過生命周期掛鉤和OOS模板為ECS實例自動應用自動快照策略,相比創建ECS實例后再手動應用自動快照策略,效率更高。
自動快照策略可以在預設的時間點周期性地創建快照,以保護系統盤和數據盤的數據。更多信息,請參見自動快照概述。
操作步驟
本教程以OOS公共模板ACS-ESS-LifeCycleApplyAutoSnapshotPolicy
為例,實現在擴容時自動為ECS實例應用自動快照策略。具體操作如下:
步驟一:對RAM角色授予OOS服務權限
您需要擁有OOS的執行權限才能執行OOS的模板。執行ACS-ESS-LifeCycleApplyAutoSnapshotPolicy
中定義的運維操作時涉及云服務器ECS、彈性伸縮的資源。
登錄RAM控制臺。
創建權限策略。
在左側導航欄,單擊 。
單擊創建權限策略。
在創建權限策略頁面,選擇權限策略的配置模式為腳本編輯后,輸入權限策略內容,然后單擊確定。
策略內容如下所示:
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeDisks", "ecs:ApplyAutoSnapshotPolicy", "ecs:DescribeInstances" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ess:CompleteLifecycleAction" ], "Resource": "*", "Effect": "Allow" } ] }
在創建權限策略對話框中,輸入策略名稱,并確認策略內容是否正確。
策略名稱為
ESSHookPolicyForApplyAutoSnapshotPolicy
說明如果策略內容需要修改,您可以單擊取消,修改后重新創建權限策略。
單擊確定。
為OOSServiceRole授予權限策略。
在左側導航欄,單擊 。
找到OOSServiceRole,在操作列,單擊新增授權。
為OOS服務扮演的RAM角色OOSServiceRole添加所需權限即可完成授權。
在新增授權頁面,指定權限配置,然后單擊確認新增授權。
本教程中使用的配置如下表所示,未提及的配置保持默認即可。
配置項
說明
資源范圍
選擇賬號級別。
權限策略
添加自定義策略
ESSHookPolicyForApplyAutoSnapshotPolicy
。
步驟二:為擴容活動創建生命周期掛鉤并觸發擴容
登錄彈性伸縮控制臺。
在左側導航欄中,單擊伸縮組管理。
在頂部菜單欄處,選擇地域。
找到待操作的伸縮組,選擇任一種方式打開伸縮組詳情頁面。
在伸縮組名稱/ID列,單擊伸縮組ID。
在操作列,單擊查看詳情。
為擴容活動創建生命周期掛鉤。
在頁面上方,單擊生命周期掛鉤頁簽。
單擊創建生命周期掛鉤。
指定生命周期掛鉤配置,然后單擊確認。
本教程中使用的配置如下表所示,未提及的配置保持默認即可。
配置項
說明
名稱
輸入ESSHookForApplyAutoSnapshotPolicy。
適用的伸縮活動類型
選擇彈性擴張活動。
超時時間
輸入適當的超時時間,例如300秒。
說明超時時間即用于執行自定義操作的時間,若超時時間過短,可能導致自定義操作失敗,請評估自定義操作耗時并設置適當的超時時間。
默認執行策略
選擇繼續。
掛鉤期間執行的動作
模板配置如下:
通知方式:選擇OOS模板。
OOS模板類型:選擇公共模板。
公共模板:選擇
ACS-ESS-LifeCycleApplyAutoSnapshotPolicy
。
ACS-ESS-LifeCycleApplyAutoSnapshotPolicy
的執行參數配置如下:自動快照策略ID:輸入自動快照策略的ID。
OOS扮演的RAM角色:選擇OOSServiceRole,步驟一:對RAM角色授予OOS服務權限中已為RAM角色OOSServiceRole添加操作云服務器ECS、彈性伸縮資源的權限,OOS服務扮演該RAM角色即可擁有相關權限。
觸發擴容伸縮活動。
本教程中以手動執行伸縮規則為例,您也可以通過定時任務、報警任務等方式觸發擴容。
說明手動執行伸縮規則觸發擴縮容時,生命周期掛鉤會生效,但手動添加或移出已有ECS實例時,生命周期掛鉤不會生效。
在頁面上方,單擊伸縮規則與報警任務頁簽。
在伸縮規則頁簽下,單擊創建伸縮規則。
設置伸縮規則的屬性,然后單擊確認。
本教程中使用的配置如下表所示,未提及的配置保持默認即可。
配置項
說明
規則名稱
輸入Add1。
伸縮規則類型
選擇簡單規則。
執行的操作
設置為增加1臺。
在伸縮規則列表下,找到新建的伸縮規則Add1,在操作區域,單擊執行。
單擊確定。
執行伸縮規則后自動創建1臺ECS實例,由于伸縮組內已創建生命周期掛鉤
ESSHookForApplyAutoSnapshotPolicy
,ECS實例會被掛起,同時自動通知OOS服務執行ACS-ESS-LifeCycleApplyAutoSnapshotPolicy
中定義的運維操作。查看自動創建的ECS實例是否符合預期。
在頁面上方,單擊實例列表頁簽。
找到自動創建的ECS實例,在云服務器ID/名稱區域,單擊實例ID。
在實例詳情頁面,單擊塊存儲(云盤)。
找到云盤,在操作區域,單擊設置快照策略。
下圖表示云盤已打開和應用了自動快照策略開關,該策略為創建生命周期掛鉤時設置自動快照策略ID對應的自動快照策略,符合使用公共模板
ACS-ESS-LifeCycleApplyAutoSnapshotPolicy
的預期。如果成功創建了ECS實例,但ECS實例并沒有自動應用自動快照策略,請前往OOS控制臺查看運維任務執行情況。
(可選)步驟三:查看OOS執行情況
常見問題
如果運維任務執行失敗,請根據執行結果中的報錯信息排查原因。更多信息,請參見常見問題。
常見的報錯信息如下:
報錯信息 | 原因 | 解決方案 |
Forbidden.Unauthorized message: A required authorization for the specified action is not supplied. | 您并未向彈性伸縮授權操作當前Action。 | 請檢查是否為RAM角色OOSServiceRole添加了相應的權限。 |
Forbidden.RAM message: User not authorized to operate on the specified resource, or this API doesn't support RAM. | RAM用戶或RAM角色沒有操作對應資源的權限。 | 請檢查是否為RAM角色OOSServiceRole添加了相應的權限。例如為RAM角色授予OOS服務的示例權限。您需要為RAM角色添加操作權限,確保OOS服務能夠操作OOS模板中涉及的資源。 |
LifecycleHookIdAndLifecycleActionToken.Invalid message: The specified lifecycleActionToken and lifecycleActionId you provided does not match any in process lifecycle action. | 正在進行的生命周期動作已經過期或中止。 | 請評估生命周期掛鉤的超時時間,確保在超時時間內可以執行完OOS模板中定義的運維任務。 |
相關文檔
使用彈性伸縮的生命周期掛鉤功能掛起ECS實例,并結合系統運維管理 OOS(CloudOps Orchestration Service)的模板,可以實現擴縮容時在ECS實例中自動執行腳本。具體操作,請參見在ECS實例中自動執行腳本。