サービスのアクセシビリティを確保するため、スケールアウトイベント中に、新しく作成された各 Elastic Compute Service (ECS) インスタンスに Elastic IP アドレス (EIP) を自動的にアタッチできます。逆に、スケールインイベント中には、削除されるインスタンスから EIP を自動的にリリースできます。これは、オフピーク時やパブリックアクセスが不要になった場合に役立ちます。この方法は、リソースの使用を最適化し、アイドル状態のリソースに対する課金をなくすことでコストを削減します。
EIP は、個別に購入および管理できるパブリック IP アドレスです。必要に応じて、EIP を ECS インスタンスにアタッチしたり、ECS インスタンスからリリースしたりできます。詳細については、「Elastic IP アドレスとは」をご参照ください。
前提条件
-
スケーリンググループを作成し、有効 状態であることを確認します。詳細については、「スケーリンググループの作成」をご参照ください。
-
CloudOps Orchestration Service (OOS) に他のクラウドサービスへのアクセス権限を付与してください。詳細については、「RAM ロールを設定し、OOS に権限を付与する」をご参照ください。
-
RAM ロールを作成します。
RAM ロールの信頼できるサービスを [OOS] に設定します。このトピックでは、RAM ロール名として
OOSServiceRoleを使用します。 -
RAM ロールにポリシーをアタッチします。
OOS がタスクを実行する際、ECS、Auto Scaling、および EIP リソースへのアクセスが必要です。したがって、次のシステムポリシーを
OOSServiceRoleロールにアタッチしてください。-
AliyunECSFullAccess
-
AliyunESSFullAccess
-
AliyunEIPFullAccess
-
-
スケールアウト時の EIP の自動アタッチ
-
ライフサイクルフックを作成します。
次の表に、主要なパラメーターを示します。他のパラメーターはデフォルト値のままにすることができます。詳細については、「ライフサイクルフックの作成」をご参照ください。
パラメーター
説明
[名前]
ESSHookForAttachEipと入力します。[使用可能なスケーリング動作タイプ]
スケールアウトイベント を選択します。
[タイムアウト]
300 秒など、適切なタイムアウト期間を入力します。
重要このパラメーターは、カスタムアクションが完了するまでの最大時間を指定します。タイムアウト期間が短すぎると、アクションが失敗する可能性があります。カスタムアクションが完了するのに十分な長さのタイムアウト期間を設定してください。
[フック中に実行されたアクション]
OOS テンプレート を選択し、次のパラメーターを設定します。
-
OOS テンプレートタイプで、パブリックテンプレート を選択します。
-
パブリック OOS テンプレート
ACS-ESS-LifeCycleAllocateEipAddressAndAttachToInstanceを選択します。このテンプレートは、スケールアウトイベント中に EIP を ECS インスタンスに自動的にアタッチします。 -
ACS-ESS-LifeCycleAllocateEipAddressAndAttachToInstanceテンプレートの横にある パラメーター設定 をクリックします。以下は、主要なパラメーターの例です。他のパラメーターはデフォルト値のままにすることができます。
-
EIP の課金方法:
PayByBandwidthは帯域幅課金を指定します。PayByTrafficはトラフィック課金を指定します。このトピックでは、例としてPayByBandwidthを使用します。 -
EIP のピーク帯域幅: この例では値 5 を使用し、EIP のピーク帯域幅を 5 Mbit/s に設定します。
-
EIP タグ: 管理を簡素化するために EIP にタグを追加します。
-
[OOS が実行する RAM ロールです。]:
OOSServiceRoleを選択します。このロールは、OOS に ECS、Auto Scaling、および EIP リソースを管理するために必要な権限を付与します。
-
-
-
スケールアウトイベントをトリガーします。
この例では、スケーリングルールを手動で実行してスケールアウトイベントをトリガーします。スケジュールされたタスクやイベントトリガータスクを使用することもできます。詳細については、「スケーリングルールの実行」をご参照ください。
説明スケーリングルールを手動で実行してスケールアウトイベントをトリガーすると、ライフサイクルフックが有効になります。ただし、既存の ECS インスタンスを手動で追加した場合、ライフサイクルフックはトリガーされません。
スケールアウトイベントが正常にトリガーされると、スケーリンググループは ECS インスタンスを自動的に作成します。スケーリンググループには
ESSHookForAttachEipライフサイクルフックが作成されているため、ライフサイクルフックは ECS インスタンスを保留中状態にし、OOS にインスタンスに EIP を作成してアタッチするタスクを実行するように通知します。スケーリングアクティビティのステータスが 失敗 になり、以下のようなエラーが報告された場合は、OOS コンソールでタスクの実行詳細を確認してください。詳細については、「(オプション) OOS の実行詳細の表示」をご参照ください。
スケーリングアクティビティの詳細に次のエラーが表示されます:
Fail to create Instances into scaling group(code:"LifecycleActionResult.Abandon", msg:"Abandon lifecycleActionResult parameter caused the instance to rollback.") -
スケールアウトされた ECS インスタンスに EIP が自動的にアタッチされていることを確認してください。
スケーリンググループの タブで、自動的に作成された ECS インスタンスのインスタンス ID をクリックして、インスタンスの詳細ページに移動します。詳細については、「スケーリンググループのインスタンスリストの照会」をご参照ください。
ECS インスタンスの基本情報セクションで、EIP パラメーターを確認してください。このフィールドに IP アドレスが表示されていれば、EIP が正常にアタッチされたことを示します。
説明ECS インスタンスは作成されたが EIP がアタッチされていない場合は、OOS コンソールでタスクの実行詳細を確認してください。
-
(オプション) OOS の実行詳細を表示します。
タスクの実行詳細ページでは、基本情報 領域に実行 ID やステータスなどの情報が表示され、[実行手順と結果] 領域に実行の詳細とログが表示されます。詳細については、「タスク実行の詳細の表示」をご参照ください。
重要実行が失敗した場合、関連するエラーメッセージが実行詳細ページに表示されます。
スケールイン時の EIP の自動リリース
-
ライフサイクルフックを作成します。
次の表に、主要なパラメーターを示します。他のパラメーターはデフォルト値のままにすることができます。詳細については、「ライフサイクルフックの作成」をご参照ください。
パラメーター
説明
[名前]
ESSHookForReleaseEipと入力します。[使用可能なスケーリング動作タイプ]
スケールインイベント を選択します。
[タイムアウト]
300 秒など、適切なタイムアウト期間を入力します。
重要このパラメーターは、カスタムアクションが完了するまでの最大時間を指定します。タイムアウト期間が短すぎると、アクションが失敗する可能性があります。カスタムアクションが完了するのに十分な長さのタイムアウト期間を設定してください。
[フック中に実行されたアクション]
OOS テンプレート を選択し、次のパラメーターを設定します。
-
OOS テンプレートタイプで、パブリックテンプレート を選択します。
-
パブリック OOS テンプレート
ACS-ESS-LifeCycleReleaseEipAddressFromInstanceを選択します。このテンプレートは、スケールインイベント中に ECS インスタンスから EIP を自動的にリリースします。 -
ACS-ESS-LifeCycleReleaseEipAddressFromInstanceテンプレートの横にある パラメーター設定 をクリックします。OOS が実行する RAM ロールです。 を
OOSServiceRoleに設定し、他のパラメーターはデフォルト値のままにします。このロールは、OOS に ECS、Auto Scaling、および EIP リソースを管理するために必要な権限を付与します。
-
-
スケールインイベントをトリガーします。
この例では、スケーリングルールを手動で実行してスケールインイベントをトリガーします。スケジュールされたタスクやイベントトリガータスクを使用することもできます。詳細については、「スケーリングルールの実行」をご参照ください。
説明スケーリングルールを手動で実行してスケールインイベントをトリガーすると、ライフサイクルフックが有効になります。ただし、既存の ECS インスタンスを手動で削除した場合、ライフサイクルフックはトリガーされません。
スケールインイベントが正常にトリガーされると、スケーリンググループは ECS インスタンスを自動的に削除します。スケーリンググループには
ESSHookForReleaseEipライフサイクルフックが作成されているため、ライフサイクルフックは ECS インスタンスを保留中状態にし、OOS にインスタンスから EIP をリリースするタスクを実行するように通知します。 -
スケールインされた ECS インスタンスから EIP が自動的にリリースされたことを確認してください。
EIP の Elastic IP アドレス リストを確認してください。リストに EIP が表示されなくなっていれば、正常にリリースされています。
説明ECS インスタンスは削除されたが EIP がリリースされていない場合は、OOS コンソールでタスクの実行詳細を確認してください。
-
(オプション) OOS の実行詳細を表示します。
タスクの実行詳細ページでは、基本情報 領域に実行 ID やステータスなどの情報が表示され、[実行手順と結果] 領域に実行の詳細とログが表示されます。詳細については、「タスク実行の詳細の表示」をご参照ください。
重要実行が失敗した場合、関連するエラーメッセージが実行詳細ページに表示されます。
よくある質問
O&Mタスクの実行に失敗した場合は、実行結果のエラーメッセージに基づいて問題のトラブルシューティングを行います。 詳細は、「よくある質問」をご参照ください。
次の表に、一般的なエラーメッセージを示します。
エラーメッセージ | 原因 | 解決策 |
Forbidden.Unauthorizedメッセージ: 指定されたアクションに必要な権限が提供されていません。 | 現在のアクションの実行をAuto Scalingに許可していません。 | OOSServiceRole RAMロールに必要な権限があるかどうかを確認します。 |
Forbidden.RAMメッセージ: 指定されたリソースを操作する権限がユーザーにないか、このAPIがRAMをサポートしていません。 | RAMユーザーまたはRAMロールに、対応するリソースを操作する権限がありません。 | OOSServiceRole RAMロールに必要な権限があるかどうかを確認します。 たとえば、RAMロールにOOS権限を付与できます。 OOSがOOSテンプレートで宣言されたリソースを管理する前に、RAMロールに必要な権限を付与する必要があります。 |
LifecycleHookIdAndLifecycleActionToken.Invalid message: 指定したlifecycleActionTokenとlifecycleActionIdは、プロセスライフサイクル内のアクションと一致しません。 | 進行中のライフサイクルフックアクションが終了または停止されました。 | ライフサイクルフックのタイムアウト期間を評価して、OOSテンプレートで指定されたO&Mタスクが割り当てられた制限時間内に完了できることを確認します。 |
関連ドキュメント
-
ライフサイクルフックは、スケーリンググループ内のインスタンスのライフサイクルを管理するためのツールです。ライフサイクルフックを使用すると、インスタンスがサービスに投入される前または終了する前に、インスタンスに対してカスタムアクションを実行できます。詳細については、「ライフサイクルフックの概要」をご参照ください。
-
CloudOps Orchestration Service (OOS) は、Alibaba Cloud が提供する自動化された O&M サービスであり、タスクの管理と実行を自動化するために使用できます。詳細については、「CloudOps Orchestration Service とは」をご参照ください。
-
パブリックインターネットアクセスを必要とする低コストのフェイルオーバーソリューションの作成など、高度なネットワークシナリオでは、スケールアウトイベント中に、EIP を持つセカンダリ Elastic Network Interface (ENI) を ECS インスタンスに自動的にアタッチできます。逆に、スケールインイベント中には、インスタンスが終了したとき、またはパブリックアクセスが不要になったときに、セカンダリ ENI とそれに関連付けられた EIP を自動的にリリースできます。詳細については、「EIP を持つセカンダリ ENI の自動アタッチとリリース」をご参照ください。