このチュートリアルでは、Auto Scaling のライフサイクルフックを使用して Elastic Compute Service (ECS) インスタンスを待機状態にし、CloudOps Orchestration Service (OOS) のテンプレートを使用して、AnalyticDB for MySQL クラスターの IP アドレスホワイトリストにインスタンスを自動で追加または削除する方法を説明します。
前提条件
-
スケーリンググループが作成され、有効になっています。
-
AnalyticDB for MySQL クラスターが作成されていること。
-
CloudOps Orchestration Service (OOS) 用の RAM ロールを作成する必要があります。この RAM ロールは、エンティティとして Alibaba Cloud サービス を、信頼できるサービスとして CloudOps Orchestration Service を信頼する必要があります。また、このロールには OOS テンプレートを実行する権限も付与されている必要があります。詳細については、「OOS 用の RAM ロールを作成して権限を付与する」をご参照ください。
説明このトピックでは、OOSServiceRole RAM ロールを例として使用します。カスタム RAM ロールを使用することも可能です。
背景情報
スケーリンググループは Server Load Balancer (SLB) インスタンスおよび ApsaraDB RDS インスタンスと関連付けることができますが、AnalyticDB for MySQL クラスターとは関連付けることができません。ビジネスデータが AnalyticDB for MySQL クラスターにある場合、ECS インスタンスの IP アドレスホワイトリストを手動で管理するのは非効率的です。このプロセスを自動化するには、ライフサイクルフックと OOS テンプレートを使用します。
操作手順
このチュートリアルでは、ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist パブリック OOS テンプレートを使用して、スケールアウトイベント時に ECS インスタンスを AnalyticDB for MySQL クラスターの IP アドレスホワイトリストに追加する方法を説明します。次の手順に従ってください。
スケールインイベント時に AnalyticDB for MySQL クラスターの IP アドレスホワイトリストから ECS インスタンスを自動的に削除するには、スケールインイベント用のライフサイクルフックを作成してから、スケールインを開始してください。
ステップ 1:RAM ロールへの OOS 権限の付与
OOS テンプレートを実行するには、必要な権限が必要です。ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist テンプレートには、ECS、Auto Scaling、および AnalyticDB for MySQL リソースに対する操作を実行する権限が必要です。
-
RAM コンソールにログインします。
-
ポリシーを作成します。
-
左側のナビゲーションウィンドウで、 を選択します。
-
ポリシーの作成 をクリックします。
-
ポリシーの作成 ページで [JSON] タブをクリックしてパラメーターを設定してから、OK をクリックします。
次の表に、このチュートリアルで使用するパラメータを示します。その他のパラメータは、デフォルト値を使用します。
パラメーター
説明
[ポリシー名]
ESSHookPolicyForAnalyticDBWhitelist と入力します。
[ポリシードキュメント]
次の内容を入力します。
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeInstances" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "adb:ModifyDBClusterAccessWhiteList" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ess:CompleteLifecycleAction" ], "Resource": "*", "Effect": "Allow" } ] }
-
-
OOSServiceRole RAM ロールにポリシーをアタッチします。
-
左側のナビゲーションウィンドウで、 を選択します。
-
OOSServiceRole を見つけて、操作 列の 権限の付与 をクリックします。
OOS が偽装する OOSServiceRole RAM ロールに必要な権限を付与します。これにより、権限付与が完了します。
-
権限の付与 ページで、パラメーターを設定し、[OK] をクリックします。
次の表に、このチュートリアルで使用するパラメータを示します。その他のパラメータは、デフォルト値を使用します。
パラメーター
説明
[権限付与の範囲]
[Alibaba Cloud アカウント] を選択します。
[アクセスポリシー]
ESSHookPolicyForAnalyticDBWhitelist カスタムポリシーを選択します。
-
ステップ 2:スケールアウトライフサイクルフックの作成とトリガー
Auto Scaling コンソールにログインします。
左側メニューで、スケーリンググループ をクリックします。
上部メニューで、リージョンを選択します。
管理するスケーリンググループを見つけて、次のいずれかの方法で詳細ページを開きます。
スケーリンググループ名/ID 列で、スケーリンググループの ID をクリックします。
操作 列で、詳細 をクリックします。
-
スケールアウトイベント用のライフサイクルフックを作成します。
ページの上部で、事件とリンクする タブをクリックします。
-
ライフサイクルフックの作成 をクリックします。
-
ライフサイクルフックのパラメーターを設定し、OK をクリックします。
次の表に、このチュートリアルで使用するパラメータを示します。その他のパラメータは、デフォルト値を使用します。
パラメーター
説明
[名前]
ESSHookForAddAnalyticDBWhitelist と入力します。
[スケーリングアクティビティタイプ]
スケールアウト を選択します。
[タイムアウト時間]
適切なタイムアウト期間(例:300 秒)を入力します。
説明タイムアウト期間は、カスタムアクションの実行に許可される時間です。アクションに必要な時間を見積もり、失敗を防ぐために適切なタイムアウトを設定してください。
[デフォルトの実行ポリシー]
続行 を選択します。
[フック中に実行されたアクション]
次のようにテンプレートを設定します。
-
通知方法: OOS テンプレート を選択します。
-
OOS テンプレートタイプ:パブリックテンプレート を選択します。
-
パブリックテンプレート:ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist を選択します。
ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist の実行パラメータを次のように設定します。
-
[dbClusterId]:AnalyticDB for MySQL クラスターの ID を入力します。
-
[modifyMode]:Append を選択します。これはスケールアウトイベントに適用され、ECS インスタンスを AnalyticDB for MySQL クラスターの IP アドレスホワイトリストに追加します。
-
[OOS が引き受ける RAM ロール]: OOSServiceRole を選択します。 手順では、OOSServiceRole RAM ロールに ECS、Auto Scaling、および AnalyticDB for PostgreSQL を管理するための権限が付与されています。 OOS サービスは、このロールを引き受けてこれらの権限を取得します。
-
-
スケールアウトイベントをトリガーします。
このチュートリアルでは、手動で実行するスケーリングルールを例として説明しますが、スケジュールされたタスクまたはイベントトリガータスクでスケールアウトイベントをトリガーすることもできます。
説明スケーリングルールを手動で実行すると、結果として発生するスケーリングアクティビティを通じてライフサイクルフックがトリガーされます。ただし、ECS インスタンスを手動で追加または削除しても、ライフサイクルフックはトリガーされません。
-
スケーリングルールとアラートタスク タブをクリックします。
-
スケーリングルール タブで、スケーリングルールの作成 をクリックします。
-
スケーリングルールのプロパティを設定し、OK をクリックします。
次の表に、このチュートリアルで使用するパラメータを示します。その他のパラメータは、デフォルト値を使用します。
パラメーター
説明
[ルール名]
Add1 と入力します。
[ルールタイプ]
シンプルスケーリングルール を選択します。
[操作]
インスタンスを 1 つ追加するように設定します。
-
スケーリングルールリストで、作成した Add1 スケーリングルールを見つけ、操作 列の 曜日に一回実行 をクリックします。
-
OK をクリックします。
スケーリングルールが実行されると、1 つの ECS インスタンスが自動的に作成されます。スケーリンググループに ESSHookForAddAnalyticDBWhitelist ライフサイクルフックが作成されているため、インスタンスは待機状態になります。その後、OOS に通知され、ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist テンプレートで定義された操作が実行されます。
-
ステップ 3:AnalyticDB for MySQL IP アドレスホワイトリストの確認
-
AnalyticDB for MySQL コンソールにログインします。
-
左側のナビゲーションペインで、クラスターリスト をクリックします。
-
対象のクラスターを探し、[クラスター ID/説明] 列でその ID をクリックします。
-
左側のナビゲーションペインで、データセキュリティ をクリックします。
-
新しい ECS インスタンスのプライベート IP アドレスが AnalyticDB for MySQL クラスターの IP アドレスホワイトリストに表示される場合、ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist パブリックテンプレートは正しく動作しています。
-
ECS インスタンスが作成されたにもかかわらず、そのプライベート IP アドレスが IP アドレスホワイトリストに表示されない場合は、OOS コンソールでタスクの実行ステータスを確認します。 詳細については、「(オプション) ステップ 4: OOS の実行詳細を表示する」をご参照ください。
-
(オプション) ステップ 4:OOS 実行詳細の表示
-
OOS コンソールにログインします。
-
左側のナビゲーションウィンドウで、 を選択します。
-
開始時刻で実行を検索し、詳細 を 操作 列からクリックします。
-
実行の詳細ページで、実行情報を表示します。
例えば、基本情報 セクションで実行 ID とステータスを表示できます。 また、実行結果 セクションでタスクノードをクリックして、その詳細を表示することもできます。 詳細については、「実行の詳細を表示する」をご参照ください。
説明実行が失敗した場合、実行の詳細ページにエラーメッセージが表示されます。
よくある質問
オーケストレーションタスクが失敗した場合は、その実行結果に表示されるエラーメッセージを参照してトラブルシューティングを行ってください。詳細については、「よくある質問」をご参照ください。
以下の表は、一般的なエラーメッセージを示しています。
|
エラーメッセージ |
原因 |
解決方法 |
|
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 テンプレートで定義されたオーケストレーションタスクが完了するのに十分な長さに設定されていることを確認してください。 |