すべてのプロダクト
Search
ドキュメントセンター

:ECSインスタンスのEIPを自動的にリリース

最終更新日:Sep 11, 2024

ECS (Elastic Compute Service) インスタンスのAuto Scalingのライフサイクルフック機能を有効にすると、ECSインスタンスが停止する前にECSインスタンスでカスタム操作を実行できます。 これにより、ECSインスタンスに割り当てられているelastic IPアドレス (EIP) をリリースする機会が提供されます。 ライフサイクルフック機能をCloudOps Orchestration Service (OOS) テンプレートと組み合わせると、ECSインスタンスのEIPをリリースするプロセスがより簡素化され、自動化されます。

前提条件

  • スケーリンググループが作成されます。 スケーリンググループの状態は有効です。 スケーリンググループの作成方法については、「スケーリンググループの作成」をご参照ください。

  • EIPは、スケーリンググループのECSインスタンスにバインドされます。 EIPのバインド方法については、「EIPの関連付けまたは関連付けの解除」をご参照ください。

  • CloudOps Orchestration Service (OOS) 用にRAMロールが作成されます。 RAMロールの信頼できるエンティティはAlibaba Cloud Service、信頼できるサービスはCloudOps Orchestration Service、RAMロールはOOSテンプレートで操作を実行する権限を持っている必要があります。 詳細については、「RAMを使用してOOSに権限を付与する」をご参照ください。

    説明

    このトピックでは、OOSServiceRole RAMロールを例として使用します。 他のロールを使用することもできます。

手順

EIPがスケーリンググループのECSインスタンスにバインドされている場合、ECSインスタンスを削除してもEIPは自動的にリリースされません。 この場合、EIPを自動的にリリースする場合は、ライフサイクルフック機能をOOSテンプレートと組み合わせることができます。 このトピックでは、スケールイン中にEIPの自動リリースを実装する例として、ACS-ESS-LifeCycleReleaseEipAddressFromInstanceパブリックテンプレートを使用します。 次の手順を完了する必要があります。

ステップ1: RAMロールにOOSの権限を付与

OOSテンプレートを実行する権限が必要です。 ACS-ESS-LifeCycleReleaseEipAddressFromInstance OOSテンプレートには、O&Mの目的で、ECSインスタンス、Auto Scalingリソース、およびEIPのリソースが含まれています。

  1. RAMコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、アイデンティティ > ロールを選択します。

  3. OOSServiceRole RAMロールを見つけて、アクション列の権限付与をクリックします。

    OOSが承認を完了するために引き受けるOOSServiceRole RAMロールに必要な権限を追加します。

  4. 権限付与パネル、ビジネス要件に基づいて構成を完了し、権限の付与をクリックします。

    この例で使用されるパラメーターを次の表に示します。 表に記載されていないパラメーターについては、デフォルト設定を使用します。

    パラメーター

    説明

    リソース範囲

    値を [アカウント] に設定します。

    ポリシー

    AliyunECSFullAccessAliyunESSFullAccess、およびAliyunEIPFullAccessのシステムポリシーを選択します。

ステップ2: スケールイン型のライフサイクルフックを作成し、スケールインをトリガーする

  1. Auto Scalingコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、スケーリンググループをクリックします。

  3. 上部のナビゲーションバーで、リージョンを選択します。

  4. 目的のスケーリンググループを見つけ、次のいずれかの方法でスケーリンググループの詳細ページを開きます。

    • スケーリンググループ名 /ID列のスケーリンググループのIDをクリックします。

    • [操作] 列の [詳細] をクリックします。

  5. ライフサイクルフックを作成します。

    1. 詳細ページの上部で、ライフサイクルフックタブをクリックします。

    2. [ライフサイクルフックの作成] をクリックします。

    3. ビジネス要件に基づいてパラメーターを設定し、OKをクリックします。

      この例で使用されるパラメーターを次の表に示します。 表に記載されていないパラメーターについては、デフォルト設定を使用します。

      パラメーター

      説明

      名前

      ESSHookForReleaseEipを入力してください。

      スケーリングアクティビティ

      [スケールインイベント] を選択します。

      タイムアウト期間

      ビジネス要件に基づいてTimeout Periodパラメーターを設定します。 単位は秒です。 この例では、Timeout Periodパラメーターは300に設定されています。

      説明

      タイムアウト期間は、ECSインスタンスでカスタム操作を実行できる期間です。 タイムアウト期間がカスタム操作の実行に必要な期間よりも短い場合、操作は失敗する可能性があります。 必要な時間を評価し、ビジネス要件に基づいてTimeout Periodパラメーターを設定することを推奨します。

      デフォルトの実行ポリシー

      [続行] を選択します。

      ライフサイクルフックが有効になったときに通知を送信

      この例では、次の設定が使用されています。

      • [OOSテンプレート] を選択します。

      • [パブリックテンプレート] を選択します。

      • ACS-ESS-LifeCycleReleaseEipAddressFromInstanceパブリックテンプレートを選択します。

      ACS-ESS-LifeCycleReleaseEipAddressFromInstanceパブリックテンプレートで、OOSAssumeRoleのOOSServiceRoleを選択します。 ステップ1では、ECS、Auto Scaling、およびEIPの権限がOOSServiceRole RAMロールに付与されます。 OSSは、OOSServiceRole RAMロールを引き受けた後、これらの権限を取得します。

  6. スケールインをトリガーします。

    この例では、スケーリングルールを手動で実行することによってスケールインがトリガーされます。 スケジュールタスクまたはイベントトリガータスクを使用してスケールインをトリガーすることもできます。

    説明

    スケーリングルールを手動で実行したときにスケーリングアクティビティがトリガーされると、ライフサイクルフックが有効になります。 スケーリンググループにECSインスタンスを手動で追加または削除する場合、ライフサイクルフックは有効になりません。

    1. 表示されるページの上部で、スケーリングルールとイベントトリガータスクタブをクリックします。

    2. スケーリングルールタブで、スケーリングルールの作成をクリックします。

    3. [スケーリングルールの作成] ダイアログボックスで、ビジネス要件に基づいてパラメーターを設定し、OKをクリックします。

      この例で使用されるパラメーターを次の表に示します。 表に記載されていないパラメーターについては、デフォルト設定を使用します。

      パラメーター

      説明

      ルール名

      Delete1を入力します。

      ルールタイプ

      [シンプルスケーリングルール] を選択します。

      操作

      値を [1インスタンスの削除] に設定します。

    4. [スケーリングルール] タブで、Delete1スケーリングルールを見つけ、アクション列の実行をクリックします。

    5. [スケーリングルールの実行] メッセージで、[OK] をクリックします。

    Delete1スケーリングルールが実行された後、1つのECSインスタンスが削除されます。 ESSHookForReleaseEipライフサイクルフックにより、ECSインスタンスはPending状態になり、Auto ScalingはACS-ESS-LifeCycleReleaseEipAddressFromInstanceパブリックテンプレートで定義されたO&M操作を実行するようにOOSに通知します。

  7. 実行結果が期待どおりかどうかを確認します。

    Elastic IPアドレスページに移動して、対応するEIPが存在するかどうかを確認できます。 EIPが存在しない場合、操作は成功です。

    説明

    ECSインスタンスが削除されてもEIPがリリースされていない場合は、OOSコンソールに移動してO&Mタスクの実行を確認します。

(オプション) 手順3: O&Mタスクの実行の確認

  1. OOSコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、自動タスク > タスク実行管理を選択します。

  3. 開始時間でO&Mタスクをフィルターし、アクション列の詳細をクリックします。

  4. 表示される実行詳細ページで、関連情報を表示します。

    たとえば、[基本情報] セクションで実行IDと実行ステータスを確認できます。 [実行手順と結果] ページの [出力] または [ログ] をクリックして、実行の詳細またはログを表示することもできます。 詳細については、「実行の詳細の表示」をご参照ください。

    重要

    O&Mタスクが失敗した場合、実行詳細ページにエラーメッセージが表示されます。

よくある質問

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タスクが割り当てられた制限時間内に完了できることを確認します。

関連ドキュメント