HA クラスターの構築、低コストのフェールオーバーの実装、きめ細かいネットワーク管理の実現と同時に、パブリックネットワークアクセスを提供する必要がある場合、スケールアウトイベント中に、Elastic IP アドレス (EIP) を持つセカンダリ Elastic Network Interface (ENI) を新しい Elastic Compute Service (ECS) インスタンスに自動的にアタッチできます。 スケーリンググループ内の ECS インスタンスに EIP を持つセカンダリ ENI がすでにアタッチされている場合でも、(例えば、ビジネスがオフピーク期間に入った場合など) ECS リソースを適時に解放する必要がある場合や、パブリックネットワークアクセスが不要になった場合は、スケールインイベント中に不要になったセカンダリ ENI と EIP を自動的に解放して、リソース使用率を最適化し、コストを削減できます。
ENI は、仮想プライベートクラウド (VPC) 内の ECS インスタンスにアタッチできる仮想ネットワークカードです。 ENI はプライマリ ENI とセカンダリ ENI に分類されます。 詳細については、「概要」をご参照ください。
EIP は、個別に購入して所有できるパブリック IP アドレスリソースであり、パブリック IP アドレスを長期間保持するために使用されます。 ビジネス要件に基づいて、EIP を ECS インスタンスや ENI などのリソースに関連付けたり、これらのリソースから EIP の関連付けを解除したりできます。 詳細については、「クラウドリソースとの EIP の関連付け」をご参照ください。
前提条件
-
スケーリンググループを作成し、有効 状態であることを確認します。詳細については、「スケーリンググループの作成」をご参照ください。
-
CloudOps Orchestration Service (OOS) に他のクラウドサービスへのアクセス権限を付与してください。詳細については、「RAM ロールを設定し、OOS に権限を付与する」をご参照ください。
-
RAM ロールを作成します。
RAM ロールの信頼できるサービスを [OOS] に設定します。このトピックでは、RAM ロール名として
OOSServiceRoleを使用します。 -
RAM ロールにポリシーをアタッチします。
OOS がタスクを実行する際、ECS、Auto Scaling、および EIP リソースへのアクセスが必要です。したがって、次のシステムポリシーを
OOSServiceRoleロールにアタッチしてください。-
AliyunECSFullAccess
-
AliyunESSFullAccess
-
AliyunEIPFullAccess
-
-
スケールアウトイベント中の EIP を持つセカンダリ ENI の ECS インスタンスへの自動アタッチ
ライフサイクルフックを作成します。
次の表に、主な設定項目を示します。 説明のない設定項目は、デフォルト値のままにします。 詳細については、「ライフサイクルフックの設定」をご参照ください。
設定項目
説明
[名前]
ESSHookForAttachNicWithEipと入力します。[適用するスケーリングアクティビティタイプ]
[スケールアウトイベント] を選択します。
[タイムアウト]
適切なタイムアウト期間 (例:300 秒) を入力します。
重要このパラメーターは、カスタム操作の実行に許容される時間を指定します。 タイムアウト期間が短すぎると、カスタム操作が失敗する可能性があります。 カスタム操作に必要な時間を見積もり、適切なタイムアウト期間を設定してください。
[フック期間中に実行するアクション]
アクションとして [OOSテンプレート] を選択します。 次の手順を実行します:
OOS テンプレートタイプに パブリックテンプレート を選択します。
スケールアウトイベント中に EIP を持つセカンダリ ENI を ECS インスタンスに自動的にアタッチするには、OOS パブリックテンプレート
ACS-ESS-LifeCycleCreateNetworkInterfaceAndEipAndAttachToInstanceを選択します。ACS-ESS-LifeCycleCreateNetworkInterfaceAndEipAndAttachToInstanceテンプレートの横にある パラメーター設定 をクリックします。 ここでは、例として次のパラメーターを設定します。 説明のないパラメーターは、デフォルト値のままにします。[EIP 課金方法]:
PayByBandwidthは帯域幅による課金、PayByTrafficはトラフィックによる課金を意味します。 ここでは、例としてPayByBandwidthを使用します。[最大 EIP 帯域幅]:ここでは、例として
5を使用します。これは、EIP の最大帯域幅が 5 Mbit/s であることを示します。[OOS が使用する RAM ロール]:
OOSServiceRoleを選択します。
ESS がスケールアウトイベントをトリガーします。
このステップでは、スケーリングルールを手動で実行して ECS インスタンスを 1 つ追加する例を説明します。 スケジュールされたタスクまたはイベントトリガー型タスクを使用して、スケールアウトイベントをトリガーすることもできます。 詳細については、「スケーリングルールの設定」をご参照ください。
スケーリングルールを手動で実行してスケールアウトイベントをトリガーすると、ライフサイクルフックが有効になります。 ただし、既存の ECS インスタンスを手動で追加した場合は、ライフサイクルフックは有効になりません。
スケールアウトイベントが正常にトリガーされると、スケーリンググループは自動的に 1 つの ECS インスタンスをスケールアウトします。 ライフサイクルフック
ESSHookForAttachNicWithEipがスケーリンググループに作成されているため、ECS インスタンスは中断状態になり、OOS は O&M オペレーションを実行するように自動的に通知されます。つまり、セカンダリ ENI を作成し、ENI に EIP を自動的に割り当て、その ENI を ECS インスタンスにアタッチします。スケーリングアクティビティが [失敗] 状態で、次のエラーが報告された場合は、OOS コンソールに移動して O&M タスクの実行ステータスを表示します。 詳細については、「(オプション) OOS の実行ステータスの表示」をご参照ください。 スケーリングアクティビティの詳細ページには、アクティビティのステータスが [失敗]、変更後のインスタンスの総数が [-] と表示され、アクティビティが失敗した原因としてライフサイクルフックが Abandon 結果を返しインスタンスがロールバックされたことが示されます。
EIP を持つセカンダリ ENI がスケールアウトされた ECS インスタンスに自動的にアタッチされているかどうかを確認します。
スケーリンググループの インスタンス セクションの [自動作成] タブで、自動作成された ECS インスタンスの [ECSインスタンスID/名前] 列にあるインスタンス ID をクリックします。
ECS インスタンスの詳細ページで、ENI タブをクリックして、ECS インスタンスにアタッチされている ENI を表示します。
1 つのセカンダリ ENI が ECS インスタンスに自動的にアタッチされ、EIP がそのセカンダリ ENI に割り当てられていることを確認します。 ENI のリストで、割り当てられた EIP アドレスがセカンダリ ENI の [パブリックIPアドレス] 列に表示されていれば、EIP がセカンダリ ENI に正常にアタッチされたことを意味します。
ECS インスタンスは正常に作成されたが、セカンダリ ENI または EIP が自動的にアタッチされていない場合は、OOS コンソールに移動して O&M タスクの実行ステータスを表示します。
(オプション) OOS の実行ステータスを表示します。
タスク実行の詳細ページで実行情報を表示します。 基本情報 セクションで実行 ID と実行ステータスを表示し、[実行ステップと結果] セクションで実行の詳細と対応するログを表示できます。 詳細については、「実行の詳細」をご参照ください。
重要実行が失敗した場合、関連するエラー情報も実行の詳細ページに表示されます。
(オプション) セカンダリ ENI を設定します。
セカンダリ ENI が ECS インスタンスにアタッチされた後、一部のイメージはセカンダリ ENI の IP アドレスを自動的に認識してルートを追加できない場合があり、セカンダリ ENI が使用できなくなることがあります。 詳細については、「セカンダリ ENI の設定」をご参照ください。
スケールインイベント中の ECS インスタンスからの EIP を持つセカンダリ ENI の自動解放
ライフサイクルフックを作成します。
次の表に、主な設定項目を示します。 説明のない設定項目は、デフォルト値のままにします。 詳細については、「ライフサイクルフックの設定」をご参照ください。
設定項目
説明
[名前]
ESSHookForDeleteNicAndEipと入力します。[適用するスケーリングアクティビティタイプ]
[スケールインイベント] を選択します。
[タイムアウト]
適切なタイムアウト期間 (例:300 秒) を入力します。
重要タイムアウト期間は、カスタム操作の実行に許容される時間を指定します。 タイムアウト期間が短すぎると、カスタム操作が失敗する可能性があります。 カスタム操作に必要な時間を見積もり、適切なタイムアウト期間を設定してください。
[フック期間中に実行するアクション]
アクションとして [OOSテンプレート] を選択します。 次の手順を実行します:
OOS テンプレートタイプに パブリックテンプレート を選択します。
OOS パブリックテンプレート
ACS-ESS-LifeCycleDetachNetworkInterfaceAndDeleteEipを選択して、スケールインイベント中に EIP を持つセカンダリ ENI を ECS インスタンスから自動的に解放します。ACS-ESS-LifeCycleDetachNetworkInterfaceAndDeleteEipテンプレートの横にある パラメーター設定 をクリックします。 [OOSが使用するRAM ロール] をOOSServiceRoleに設定し、他のパラメーターはデフォルト値のままにします。
ESS がスケールインイベントをトリガーします。
このステップでは、スケーリングルールを手動で実行して ECS インスタンスを 1 つ削除する例を説明します。 スケジュールされたタスクまたはイベントトリガー型タスクを使用して、スケールインイベントをトリガーすることもできます。 詳細については、「スケーリングルールの設定」をご参照ください。
スケーリングルールを手動で実行してスケールインイベントをトリガーすると、ライフサイクルフックが有効になります。 ただし、既存の ECS インスタンスを手動で削除した場合は、ライフサイクルフックは有効になりません。
スケールインイベントが正常にトリガーされると、スケーリンググループは自動的に 1 つの ECS インスタンスを削除します。 ライフサイクルフック
ESSHookForDeleteNicAndEipがスケーリンググループに作成されているため、ECS インスタンスは中断状態になり、OOS は O&M オペレーションを実行するように自動的に通知されます。つまり、ECS インスタンスからセカンダリ ENI と EIP を解放します。セカンダリ ENI と EIP が削除対象の ECS インスタンスから自動的に解放されたかどうかを確認します。
Elastic Network Interface ページと Elastic IP アドレスページに移動して、対応するセカンダリ ENI と EIP を確認します。 それらが一覧にない場合は、セカンダリ ENI と EIP は解放済みです。
ECS インスタンスは正常に削除されたが、セカンダリ ENI と EIP が解放されない場合は、OOS コンソールに移動して O&M タスクの実行ステータスを表示します。
(オプション) 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 テンプレートで定義されたオーケストレーションタスクが完了するのに十分な長さに設定されていることを確認してください。 |
参考資料
EIP の課金項目には、パブリックネットワーク料金、EIP 設定料金 (パブリック IP 保持料金)、および EIP 関連付け料金が含まれます。 詳細については、「EIP 課金の概要」をご参照ください。
スケールアウトイベント中に新しい ECS インスタンスに EIP を自動的にアタッチしてサービスにアクセス可能な状態を維持し、スケールインイベント中に不要になった EIP を自動的に解放してリソース使用率を最適化し、コストを削減できます。 詳細については、「EIP の自動アタッチと解放」をご参照ください。