このチュートリアルでは、Auto Scaling のライフサイクルフックを使用して Elastic Compute Service (ECS) インスタンスを中断させ、CloudOps Orchestration Service (OOS) のテンプレートを使用して自動スナップショットポリシーをインスタンスに自動的に適用する方法について説明します。
前提条件
-
スケーリンググループを作成済みで、そのステータスが [有効] であること。詳細については、「スケーリンググループの管理」をご参照ください。
-
自動スナップショットポリシーを作成済みであること。詳細については、「自動スナップショットポリシーの作成」をご参照ください。
-
CloudOps Orchestration Service (OOS) 用の RAM ロールを作成する必要があります。この RAM ロールは、エンティティとして Alibaba Cloud サービス を、信頼できるサービスとして CloudOps Orchestration Service を信頼する必要があります。また、このロールには OOS テンプレートを実行する権限も付与されている必要があります。詳細については、「OOS 用の RAM ロールを作成して権限を付与する」をご参照ください。
説明このトピックでは、OOSServiceRole RAM ロールを例として使用します。カスタム RAM ロールを使用することも可能です。
背景情報
自動スナップショットポリシーは、ECS インスタンスのスナップショットを定期的に作成することで、データのセキュリティと運用のフォールトトレランスを向上させます。スケーリング設定の作成時に自動スナップショットポリシーを関連付けることはできませんが、ライフサイクルフックと OOS テンプレートを使用して、このプロセスを自動化できます。この方法は、新しく作成された各 ECS インスタンスに手動でポリシーを適用するよりも効率的です。
自動スナップショットポリシーは、スケジュールに従って定期的にスナップショットを作成し、システムディスクとデータディスク上のデータを保護します。詳細については、「自動スナップショットポリシー」をご参照ください。
操作手順
このチュートリアルでは、OOS のパブリックテンプレート ACS-ESS-LifeCycleApplyAutoSnapshotPolicy を例に、スケールアウト時に自動スナップショットポリシーを ECS インスタンスに自動的に適用する方法を説明します。手順は以下の通りです。
ステップ 1: OOS RAM ロールへの権限の付与
OOS テンプレートを実行するには、必要な権限が必要です。ACS-ESS-LifeCycleApplyAutoSnapshotPolicy で定義されている運用保守操作を実行するには、ECS および Auto Scaling のリソースが関連します。
-
RAM コンソールにログインします。
-
権限ポリシーを作成します。
-
左側のナビゲーションウィンドウで、 を選択します。
-
ポリシーの作成 をクリックします。
-
ポリシーの作成 ページで、[JSON] タブをクリックし、次のポリシー内容を入力して OK をクリックします。
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeDisks", "ecs:ApplyAutoSnapshotPolicy", "ecs:DescribeInstances" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ess:CompleteLifecycleAction" ], "Resource": "*", "Effect": "Allow" } ] } -
ポリシーの作成 ダイアログボックスで、ポリシーの名前を入力します。
ポリシー名は
ESSHookPolicyForApplyAutoSnapshotPolicyです。説明ポリシーの内容を修正する必要がある場合は、キャンセル をクリックして権限ポリシーの編集を続行します。
-
OK をクリックします。
-
-
OOSServiceRole RAM ロールに権限ポリシーをアタッチします。
-
左側のナビゲーションウィンドウで、 を選択します。
-
OOSServiceRole を見つけて、操作 列の 権限の付与 をクリックします。
OOS が偽装する OOSServiceRole RAM ロールに必要な権限を付与します。これにより、権限付与が完了します。
-
権限の付与 ページで設定を行い、[OK] をクリックします。
次の表は、このチュートリアルで使用するパラメーターを示しています。記載されていないパラメーターについては、デフォルト値を使用してください。基本情報
パラメーター
説明
[権限付与の範囲]
[Alibaba Cloud アカウント] を選択します。
[権限ポリシー]
カスタムポリシー
ESSHookPolicyForApplyAutoSnapshotPolicyを追加します。
-
ステップ 2: ライフサイクルフックの作成とスケールアウトのトリガー
Auto Scalingコンソールにログインします。
左側のナビゲーションウィンドウで、スケーリンググループをクリックします。
上部のナビゲーションバーで、リージョンを選択します。
目的のスケーリンググループを見つけ、次のいずれかの方法でスケーリンググループの詳細ページを開きます。
スケーリンググループ名 /ID列のスケーリンググループのIDをクリックします。
[操作] 列の [詳細] をクリックします。
-
スケールアウトイベント用のライフサイクルフックを作成します。
詳細ページの上部で、ライフサイクルフックタブをクリックします。
-
ライフサイクルフックの作成 をクリックします。
-
ライフサイクルフックを設定し、OK をクリックします。
次の表は、このチュートリアルで使用するパラメーターを示しています。記載されていないパラメーターについては、デフォルト値を使用してください。
パラメーター
説明
[名前]
ESSHookForApplyAutoSnapshotPolicyを入力します。[スケーリングアクティビティタイプ]
スケールアウト を選択します。
[タイムアウト時間]
適切なタイムアウト期間 (例:300 秒) を入力します。
説明タイムアウト期間は、カスタムアクションが完了するまでに許容される最大時間です。この期間内にアクションが終了しない場合、アクションは失敗します。アクションが正常に実行されるのに十分な長さのタイムアウトを設定してください。
[デフォルトの実行ポリシー]
続行 を選択します。
[フック中に実行されたアクション]
テンプレートを次のように設定します。
-
通知方法: OOS テンプレート を選択します。
-
OOS テンプレートタイプ: パブリックテンプレート を選択します。
-
パブリックテンプレート:
ACS-ESS-LifeCycleApplyAutoSnapshotPolicyを選択します。
ACS-ESS-LifeCycleApplyAutoSnapshotPolicyの実行パラメーターは次のとおりです。-
[autoSnapshotPolicyId]: 自動スナップショットポリシーの ID を入力します。
-
[OOSAssumeRole]:
OOSServiceRoleを選択します。ステップ 1 で、この RAM ロールに ECS および Auto Scaling リソースを管理するために必要な権限を付与しました。OOS はこのロールを借用してこれらの権限を取得します。
-
-
スケールアウトイベントをトリガーします。
このチュートリアルでは、手動でスケーリングルールを実行してスケールアウトイベントをトリガーします。スケジュールされたタスクやイベントトリガー型タスクなど、他の方法も使用できます。
説明ライフサイクルフックはスケーリングルールを実行するとトリガーされますが、既存の ECS インスタンスをスケーリンググループに手動で追加または削除した場合はトリガーされません。
-
ページ上部で、スケーリングルールとアラートタスク タブをクリックします。
-
スケーリングルール タブで、スケーリングルールの作成 をクリックします。
-
スケーリングルールを設定し、OK をクリックします。
次の表は、このチュートリアルで使用するパラメーターを示しています。記載されていないパラメーターについては、デフォルト値を使用してください。
パラメーター
説明
[ルール名]
Add1を入力します。[ルールタイプ]
シンプルスケーリングルール を選択します。
[操作]
1 つのインスタンスを追加するように設定します。
-
スケーリングルールのリストで、
Add1ルールを見つけ、曜日に一回実行 列の 操作 をクリックします。 -
OK をクリックします。
スケーリングルールが実行されると、1 つの ECS インスタンスが自動的に作成されます。その後、スケーリンググループのライフサイクルフック
ESSHookForApplyAutoSnapshotPolicyが ECS インスタンスを中断させ、同時に OOS サービスに通知してACS-ESS-LifeCycleApplyAutoSnapshotPolicyで定義された運用保守操作を実行します。 -
-
自動スナップショットポリシーが新しい ECS インスタンスに適用されていることを確認します。
詳細ページの上部で、インスタンスタブをクリックします。
-
新しく作成された ECS インスタンスを見つけ、ECS インスタンス ID/名前 列でその ID をクリックします。
-
インスタンスの詳細 ページで、[ブロックストレージ] タブをクリックします。
クラウドディスクを見つけ、操作 列で [スナップショットポリシーの設定] をクリックします。
-
下の図は、クラウドディスクに対して自動スナップショットポリシーが有効になっていることを示しています。このポリシーは、ライフサイクルフックの作成時に設定した [自動スナップショットポリシー ID] に対応しており、これはパブリックテンプレート
ACS-ESS-LifeCycleApplyAutoSnapshotPolicyを使用した場合の期待される動作です。
-
ECS インスタンスは作成されたものの、自動スナップショットポリシーが適用されなかった場合は、OOS コンソールにアクセスしてタスクの実行ステータスを確認してください。
-
(オプション) ステップ 3: OOS 実行ステータスの表示
よくある質問
オーケストレーションタスクが失敗した場合は、その実行結果に表示されるエラーメッセージを参照してトラブルシューティングを行ってください。詳細については、「よくある質問」をご参照ください。
以下の表は、一般的なエラーメッセージを示しています。
|
エラーメッセージ |
原因 |
解決方法 |
|
Forbidden.Unauthorized message: A required authorization for the specified action is not supplied. |
Auto Scaling に指定された操作を実行するための必要な権限が付与されていません。 |
OOSServiceRole RAM ロールに必要な権限が付与されているか確認してください。 |
|
Forbidden.RAM message: User not authorized to operate on the specified resource, or this API doesn't support RAM. |
RAM ユーザーまたは RAM ロールに、指定されたリソースに対する操作権限がありません。 |
OOS テンプレートで指定されたリソースを管理するために、OOSServiceRole RAM ロールに必要な権限が付与されていることを確認してください。たとえば、OOS のサンプル権限をロールに付与できます。 |
|
LifecycleHookIdAndLifecycleActionToken.Invalid message: The specified lifecycleActionToken and LifecycleHookId you provided does not match any in process lifecycle action. |
進行中のライフサイクルアクションが期限切れになったか、中止されました。 |
ライフサイクルフックのタイムアウト値を確認し、OOS テンプレートで定義されたオーケストレーションタスクが完了するのに十分な長さに設定されていることを確認してください。 |
関連トピック
Auto Scaling のライフサイクルフックと CloudOps Orchestration Service (OOS) テンプレートを使用して、スケールインまたはスケールアウトイベント中に ECS インスタンスでスクリプトを自動的に実行することもできます。詳細については、「ECS インスタンスでのスクリプトの自動実行」をご参照ください。