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

Auto Scaling:スケールアウトイベント中にEIPをECSインスタンスに自動的にバインドし、スケールインイベント中にECSインスタンスのEIPをリリースする

最終更新日:Sep 11, 2024

スケーリンググループでスケールアウトされているelastic Compute Service (ECS) インスタンスにEIPアドレス (EIP) を割り当てない場合、インターネット経由でECSインスタンスにアクセスすることはできません。 サービスの可用性を確保するには、スケールアウトイベント中に自動EIPバインディングを有効にする必要があります。 オフピーク時にEIPがバインドされているECSインスタンスをリリースする場合、またはECSインスタンスがインターネットアクセスを必要としない場合は、不要なリソース使用量とコストを防ぐために、対応するEIPをリリースすることを推奨します。 リソース使用率を最大化し、リソースコストを最小化するために、スケールインイベント中に自動EIPリリースを有効にできます。

説明

EIPは、購入して独立したリソースとして使用できるパブリックIPアドレスです。 EIPをECSインスタンスにバインドしたり、EIPを柔軟にリリースしたりできます。 詳細については、「Elastic IPアドレスとは何ですか? 」をご参照ください。

前提条件

  • スケーリンググループが作成され、[有効] 状態になります。 詳細については、「スケーリンググループの管理」をご参照ください。

  • 他のクラウドリソースにアクセスする権限は、CloudOps Orchestration Service (OOS) に付与されます。 詳細については、「RAMを使用してOOSに権限を付与する」をご参照ください。

    1. RAM (Resource Access Management) ロールが作成されます。

      RAMロールの信頼済みサービスはCloudOps Orchestration serviceです。 RAMロールの名前はOOSServiceRoleです。

    2. 必要なポリシーはRAMロールにアタッチされます。

      OOSを使用してタスクを実行する場合、ECS、Auto Scaling、およびEIPリソースが使用されます。 次のシステムポリシーをOOSServiceRoleロールにアタッチする必要があります。

      • AliyunECSFullAccess

      • AliyunESSFullAccess

      • AliyunEIPFullAccess

スケールアウトイベント中に自動EIPバインディングを有効にする

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

    この例で使用するパラメーター設定を次の表に示します。 次の表に含まれていないパラメーターについては、デフォルト設定を保持します。 詳細については、「ライフサイクルフックの管理」をご参照ください。

    パラメーター

    説明

    名前

    ESSHookForAttachEipを入力します。

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

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

    タイムアウト期間

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

    重要

    タイムアウト期間は、インスタンスに対してカスタム操作を実行できる期間です。 タイムアウト期間がカスタム操作の実行に必要な期間よりも短い場合、操作は失敗する可能性があります。 インスタンスでカスタム操作を実行するために必要な期間を見積もり、見積もりに基づいてタイムアウト期間パラメーターを設定することを推奨します。

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

    [OOSテンプレート] を選択し、次の操作を実行します。

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

    2. ACS-ESS-LifeCycleAllocateEipAddressAndAttachToInstanceを選択して、スケールアウトイベント中に自動EIPバインドを有効にします。

    3. ACS-ESS-LifeCycleAllocateEipAddressAndAttachToInstanceの横にある [パラメーターの設定] をクリックします。

      この例で使用するパラメーター設定を次に示します。 次のリストに含まれていないパラメーターについては、デフォルト設定を保持します。

      • InternetChargeType: このパラメーターは、PayByBandwidthまたはPayByTrafficに設定できます。 PayByBandwidthは、指定された帯域幅に基づいて課金されることを指定します。 PayByTrafficは、実際のトラフィックに基づいて課金されることを指定します。 この例では、PayByBandwidthが使用されます。

      • 帯域幅: この例では、このパラメーターは5に設定され、EIPのピーク帯域幅が5 Mbit/sであることを指定します。

      • EipTags: 自動的に作成されたEIPにタグを追加して、EIP管理を容易にすることができます。

      • OOSAssumeRole: この例では、OOSServiceRoleが選択されています。

        ECS、Auto Scaling、およびEIPリソースを管理する権限は、OOSServiceRole RAMロールに付与されます。 OSSがこのロールを引き受けた後、OOSは対応するリソースにアクセスできます。

  2. スケールアウトイベントをトリガーします。

    この例では、スケールアウトイベントは、スケーリングルールを手動で実行して1つのECSインスタンスをスケーリンググループに追加することによってトリガーされます。 スケジュールタスクまたはイベントトリガータスクを実行して、スケールアウトイベントを自動的にトリガーすることもできます。 詳細については、「スケーリングルールの管理」をご参照ください。

    説明

    スケーリングルールを手動で実行してスケールアウトイベントをトリガーすると、ライフサイクルフック機能が有効になります。 ECSインスタンスを手動でスケーリンググループに追加した場合、ライフサイクルフック機能は有効になりません。

    スケールアウトイベントがトリガーされると、Auto Scalingは1つのECSインスタンスをスケーリンググループに追加します。 ESSHookForAttachEipライフサイクルフックを使用すると、ECSインスタンスは [保留中の追加] 状態になり、Auto ScalingはOOSにEIPの作成とEIPのECSインスタンスへのバインドを通知します。

    次のエラーが報告された場合、スケールアウトイベントは失敗しました。 この場合、OOSコンソールに移動して、O&M操作の実行状況を確認できます。 詳細については、「(オプション) OOSテンプレートの実行ステータスを表示します。」をご参照ください。

    scaling-failed

  3. EIPが自動的にECSインスタンスにバインドされているかどうかを確認します。

    スケーリンググループの詳細ページで、[インスタンス] > [自動作成] を選択して、自動的に作成されたECSインスタンスを見つけます。 次に、ECSインスタンスのIDをクリックして、ECSインスタンスの詳細ページに移動します。 詳細については、「スケーリンググループのインスタンスの手動設定」をご参照ください。

    次の図に示すように、インスタンス詳細ページの [基本情報] セクションで、EIPパラメーターの値を確認して、EIPがECSインスタンスに自動的にバインドされているかどうかを確認します。

    primary-eip

    説明

    ECSインスタンスが作成されていてもEIPがバインドされていない場合は、OOSコンソールに移動してO&M操作の実行を確認できます。

  4. (オプション) OOSテンプレートの実行ステータスを表示します。

    実行詳細ページでは、関連情報を表示できます。 [基本情報] セクションでは、実行IDとステータスを表示できます。 [実行手順と結果] セクションでは、実行の詳細と対応するログを表示できます。 詳細については、「実行の詳細の表示」をご参照ください。

    重要

    実行が失敗した場合は、実行の詳細ページにエラーメッセージが表示されます。

スケールインイベント中に自動EIPリリースを有効にする

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

    この例で使用するパラメーター設定を次の表に示します。 次の表に含まれていないパラメーターについては、デフォルト設定を保持します。 詳細については、「ライフサイクルフックの管理」をご参照ください。

    パラメーター

    説明

    名前

    ESSHookForReleaseEipを入力します。

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

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

    タイムアウト期間

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

    重要

    タイムアウト期間は、インスタンスに対してカスタム操作を実行できる期間です。 タイムアウト期間がカスタム操作の実行に必要な期間よりも短い場合、操作は失敗する可能性があります。 インスタンスでカスタム操作を実行するために必要な期間を見積もり、見積もりに基づいてタイムアウト期間パラメーターを設定することを推奨します。

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

    [OOSテンプレート] を選択し、次の操作を実行します。

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

    2. [ACS-ESS-LifeCycleReleaseEipAddressFromInstance] を選択して、スケールインイベント中に自動EIPリリースを有効にします。

    3. [ACS-ESS-LifeCycleReleaseEipAddressFromInstance] の横にある [パラメーターの設定] をクリックします。

      OOSAssumeRoleパラメーターをOOSServiceRoleに設定し、他のパラメーターのデフォルト設定を保持します。 ECS、Auto Scaling、およびEIPリソースを管理する権限は、OOSServiceRole RAMロールに付与されます。 OOSがRAMロールを引き受けた後、OOSは対応するリソースにアクセスできます。

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

    この例では、スケーリングルールを手動で実行して、スケーリンググループから1つのECSインスタンスを削除することで、スケールインイベントがトリガーされます。 スケジュールタスクまたはイベントトリガータスクを実行して、スケールインイベントを自動的にトリガーすることもできます。 詳細については、「スケーリングルールの管理」をご参照ください。

    説明

    スケーリングルールを手動で実行してスケールインイベントをトリガーすると、ライフサイクルフック機能が有効になります。 スケーリンググループから1つのECSインスタンスを手動で削除した場合、ライフサイクルフック機能は有効になりません。

    スケールインイベントがトリガーされると、Auto Scalingはスケーリンググループから1つのECSインスタンスを削除します。 ESSHookForReleaseEipライフサイクルフックを使用すると、ECSインスタンスはPending Remove状態になり、Auto Scalingは、ECSインスタンスにバインドされているEIPを自動的にリリースするようにOOSに通知します。

  3. ECSインスタンスにバインドされているEIPが自動的にリリースされているかどうかを確認します。

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

    説明

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

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

関連ドキュメント

  • ライフサイクルフックは、スケーリンググループ内のECSインスタンスのライフサイクルを管理するために使用されるツールです。 このツールを使用すると、インスタンスが停止する前にインスタンスに対してカスタム操作を実行できます。 詳細については、ライフサイクルフックの「概要」をご参照ください。

  • OOSは、Alibaba Cloudが提供する自動O&Mサービスで、クラウドでのO&Mタスクの管理と実行を支援します。 詳細については、「OOSとは何ですか? 」をご参照ください。

  • 低コストのフェールオーバーなどの効率的なネットワーク管理を確保したり、インターネットアクセスを有効にしたりする場合は、スケールアウトイベント中にEIPを持つセカンダリelastic network Interface (ENI) をECSインスタンスに自動接続できるようにします。 オフピーク時にECSインスタンスをリリースする場合、またはインターネットアクセスを必要としない場合は、スケールインイベント中にECSインスタンスのセカンダリENIおよびEIPの自動リリースを有効にできます。 詳細については、「EIPを持つセカンダリENIをECSインスタンスに自動的にアタッチまたはデタッチ」をご参照ください。