本教程介紹如何使用彈性伸縮生命周期掛鉤掛起ECS實例,并結合系統運維管理 OOS(CloudOps Orchestration Service)的模板,實現將ECS實例自動加入和移出AnalyticDB集群白名單。
前提條件
已創建伸縮組,并且伸縮組處于啟用狀態。
已創建AnalyticDB集群。
已為OOS服務創建RAM角色。該RAM角色的可信實體必須為阿里云服務,受信服務為系統運維管理,并且擁有執行OOS模板的權限。具體操作,請參見為OOS服務設置RAM權限。
說明本教程中使用的示例RAM角色為OOSServiceRole,您也可以使用其他自定義的RAM角色。
背景信息
伸縮組支持關聯負載均衡實例和RDS實例,但是暫時不能關聯AnalyticDB集群。如果您有業務數據存儲在AnalyticDB集群上,手動配置ECS實例加入或移出AnalyticDB集群白名單,操作效率較低。您可以通過生命周期掛鉤和OOS模板將ECS實例自動加入和移出AnalyticDB集群白名單。
操作步驟
本教程以OOS公共模板ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist為例,實現在擴容時將ECS實例加入AnalyticDB集群白名單。步驟如下:
如果需要在縮容時將ECS實例移出AnalyticDB集群白名單,創建適用于彈性收縮活動的生命周期掛鉤并觸發縮容即可。
步驟一:對RAM角色授予OOS服務權限
您需要擁有OOS的執行權限才能執行OOS的模板。執行ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist中定義的運維操作時涉及云服務器ECS、彈性伸縮、云原生數據倉庫 AnalyticDB MySQL 版的資源。
登錄RAM控制臺。
創建權限策略。
在左側導航欄,單擊 。
單擊創建權限策略。
在創建權限策略頁面,選擇權限策略的配置模式為腳本編輯后,設置其他參數項,然后單擊確定。
本教程中使用的配置如下表所示,未提及的配置保持默認即可。
配置項
說明
名稱
填寫ESSHookPolicyForAnalyticDBWhitelist。
策略內容
輸入以下內容:
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeInstances" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "adb:ModifyDBClusterAccessWhiteList" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ess:CompleteLifecycleAction" ], "Resource": "*", "Effect": "Allow" } ] }
為OOSServiceRole授予權限策略。
在左側導航欄,單擊 。
找到OOSServiceRole,在操作列,單擊新增授權。
為OOS服務扮演的RAM角色OOSServiceRole添加所需權限即可完成授權。
在新增授權頁面,指定資源范圍和權限配置,然后單擊確認新增授權。
本教程中使用的配置如下表所示,未提及的配置保持默認即可。
配置項
說明
資源范圍
選擇賬號級別。
權限策略
添加自定義策略ESSHookPolicyForAnalyticDBWhitelist。
步驟二:為擴容活動創建生命周期掛鉤并觸發擴容
- 登錄彈性伸縮控制臺。
- 在左側導航欄中,單擊伸縮組管理。
- 在頂部菜單欄處,選擇地域。
- 找到待操作的伸縮組,選擇任一種方式打開伸縮組詳情頁面。
- 在伸縮組名稱/ID列,單擊伸縮組ID。
- 在操作列,單擊查看詳情。
為擴容活動創建生命周期掛鉤。
- 在頁面上方,單擊生命周期掛鉤頁簽。
單擊創建生命周期掛鉤。
指定生命周期掛鉤配置,然后單擊確認。
本教程中使用的配置如下表所示,未提及的配置保持默認即可。
配置項
說明
名稱
輸入ESSHookForAddAnalyticDBWhitelist。
適用的伸縮活動類型
選擇彈性擴張活動。
超時時間
輸入適當的超時時間,例如300秒。
說明超時時間即用于執行自定義操作的時間,若超時時間過短,可能導致自定義操作失敗,請評估自定義操作耗時并設置適當的超時時間。
默認執行策略
選擇繼續。
掛鉤期間執行的動作
模板配置如下:
通知方式:選擇OOS模板。
OOS模板類型:選擇公共模板。
公共模板:選擇ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist。
ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist的執行參數配置如下:
AnalyticDB集群ID:輸入AnalyticDB集群的ID。
修改IP白名單的方式:選擇Append,對應彈性擴張活動,將ECS實例加入AnalyticDB集群白名單。
OOS扮演的RAM角色:選擇OOSServiceRole,操作步驟中已為RAM角色OOSServiceRole添加操作ECS、彈性伸縮、云原生數據倉庫的權限,OOS服務扮演該RAM角色即可擁有相關權限。
觸發擴容。
本教程中以手動執行伸縮規則為例,您也可以通過定時任務、報警任務等方式觸發擴容。
說明手動執行伸縮規則觸發擴縮容時,生命周期掛鉤會生效,但手動添加或移出已有ECS實例時,生命周期掛鉤不會生效。
在頁面上方,單擊伸縮規則與報警任務頁簽。
在伸縮規則頁簽下,單擊創建伸縮規則。
設置伸縮規則的屬性,然后單擊確認。
本教程中使用的配置如下表所示,未提及的配置保持默認即可。
配置項
說明
規則名稱
輸入Add1。
伸縮規則類型
選擇簡單規則。
執行的操作
設置為增加1臺。
在伸縮規則列表下,找到新建的伸縮規則Add1,在操作區域,單擊執行。
單擊確定。
執行伸縮規則后自動創建1臺ECS實例,由于伸縮組內已創建生命周期掛鉤ESSHookForAddAnalyticDBWhitelist,ECS實例會被掛起,同時自動通知OOS服務執行ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist中定義的運維操作。
步驟三:查看AnalyticDB集群白名單
在左側導航欄,單擊集群列表。
找到Analytic集群,在集群ID/集群描述區域,單擊集群ID。
在左側導航欄,單擊數據安全。
如果Analytic集群白名單中加入了新建ECS實例的私有IP,符合使用公共模板ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist的預期。
如果成功創建了ECS實例,但是新建ECS實例的私有IP并沒有加入AnalyticDB集群白名單,請前往OOS控制臺查看運維任務執行情況。具體操作,請參見(可選)步驟四:查看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模板中定義的運維任務。 |