このトピックでは、ライフサイクルフックの概念、ワークフロー、シナリオ、および制限について説明します。
ライフサイクルフックとは何ですか?
ライフサイクルフックは、スケーリンググループ内のElastic Compute Service (ECS) インスタンスまたはelastic containerインスタンスのライフサイクルを管理するために使用されるツールです。 Auto Scalingがスケーリングアクティビティを実行すると、ライフサイクルフックをトリガーして、スケーリングアクティビティに関与するECSインスタンスまたはエラスティックコンテナインスタンスを [保留中の追加] または [保留中の削除] 状態にすることができます。 ライフサイクルフックがタイムアウトするまで、ECSインスタンスまたはエラスティックコンテナインスタンスに対してカスタム操作を実行できます。
次の表に、ライフサイクルフックの設定項目を示します。
ライフサイクルフックの機能については、「ライフサイクルフックの管理」トピックの「手順」セクションを参照してください。
設定アイテム | 説明 |
スケーリングアクティビティ | ライフサイクルフックを適用するスケーリングアクティビティのタイプ。 指定されたタイプのスケーリングアクティビティが発生すると、ライフサイクルフックがトリガーされ、ECSインスタンスまたはエラスティックコンテナインスタンスは [保留中の追加] または [保留中の削除] の状態になります。 有効な値: スケールインイベントおよびスケールアウトイベント。 例:
|
タイムアウト期間 | インスタンスが [保留中の追加] または [保留中の削除] の状態になったときに、ECSインスタンスまたはエラスティックコンテナインスタンスに対してカスタム操作を実行できる期間。 ビジネス要件に基づいてタイムアウト期間を設定することを推奨します。 タイムアウト期間が終了すると、Auto Scalingはデフォルトの実行ポリシーを実行します。 ライフサイクルフックを削除するか、CompleteLifecycleAction APIを呼び出して、タイムアウト期間をスケジュールより早く手動で終了できます。 |
デフォルトの実行ポリシー | ライフサイクルフックのタイムアウト期間が終了した後にAuto Scalingを実行するアクション。 有効な値: [続行] および [拒否] 。
説明 ライフサイクルフックの [ライフサイクルフックが有効になるときに通知を送信] パラメーターをOOSテンプレートに設定した場合、ライフサイクルフックがタイムアウトする前にCloudOps Orchestration Service (OOS) テンプレートを実行する必要があります。 デフォルトの実行ポリシーは、OOSテンプレートの実行結果によって異なります。 実行が成功した場合、スケーリングアクティビティは続行されます。 実行が失敗した場合、スケールアウトはロールバックされ、スケールインは続行されます。 |
ライフサイクルフックが有効になったときに通知を送信する | ライフサイクルフックが有効になったときに通知を送信する方法。 たとえば、このパラメーターをMNSトピックまたはMNSキューに設定できます。 これにより、ライフサイクルフックがトリガーされた後すぐに通知を受け取り、インスタンスで操作を実行できます。 このパラメーターをOOSテンプレートに設定して、タスクを自動的に実行することもできます。 説明 MNSの使用に対して課金されます。 詳細については、「MNS料金」をご参照ください。 |
ワークフロー
次の図では、ECSインスタンスを使用してライフサイクルフックのワークフローを説明します。 ワークフローは、エラスティックコンテナインスタンスに適用されるライフサイクルフックと同様です。
図2スケールインフローチャート
次の表に、前の図に表示されている概念を示します。
コンセプト | 説明 |
ライフサイクルフック | スケーリンググループ内のECSインスタンスまたはエラスティックコンテナインスタンスのライフサイクルを管理するために使用されるツール。 詳細については、「ライフサイクルフックとは何ですか? 」をご参照ください。 |
スケーリンググループを使用して、インスタンスのライフサイクルを管理します。 | スケーリンググループを使用して、ECSインスタンスまたはエラスティックコンテナインスタンスのライフサイクルを管理します。 ECSインスタンスまたはエラスティックコンテナインスタンスのライフサイクルについては、「インスタンスライフサイクル」をご参照ください。 ECSインスタンスまたはエラスティックコンテナインスタンスのステータスは、インスタンスの作成方法によって異なります。
|
インスタンスのライフサイクルを手動で管理する | スケーリンググループを使用して、手動でスケーリンググループに追加されたECSインスタンスまたはエラスティックコンテナインスタンスのライフサイクルを管理することはできません。 この場合、Auto Scalingは、スケールイン中にスケーリンググループからECSインスタンスまたはエラスティックコンテナインスタンスのみを削除します。 ECSインスタンスまたはelasticコンテナインスタンスはリリースされません。 説明 スケーリンググループを使用して、スケーリンググループに追加されたサブスクリプションECSインスタンスのライフサイクルを管理することはできません。 |
シナリオ
次のシナリオでは、ライフサイクルフックを作成して、ECSインスタンスまたはelasticコンテナインスタンスを [保留中の追加] または [保留中の削除] 状態にし、タイムアウト期間が終了する前にインスタンスに対して操作を実行できます。
スケールアウトに使用されるECSインスタンスまたはエラスティックコンテナインスタンスは、すぐにサービスを提供できません。
たとえば、ECSインスタンスをApsaraDB RDSインスタンスに関連付ける必要がある場合、またはセカンダリelastic network Interface (ENI) にバインドする必要がある場合は、ライフサイクルフックを作成できます。 ECSインスタンスにデプロイされたアプリケーションがサービスを提供する前に起動に時間がかかる場合は、ライフサイクルフックを作成することもできます。
スケールインに使用されるECSインスタンスまたはエラスティックコンテナインスタンスは、スケーリンググループからすぐに削除することはできません。
たとえば、ECSインスタンスまたはエラスティックコンテナインスタンスのデータをバックアップしたり、インスタンスログをコピーしたり、ECSインスタンスまたはエラスティックコンテナインスタンスがすべてのリクエストの処理を完了するまで待ってから、スケーリンググループからインスタンスを削除する必要がある場合は、ライフサイクルフックを作成できます。
詳細については、「ライフサイクルフックとOOSテンプレートのベストプラクティスの概要」および「ライフサイクルフックを使用してサービスの可用性を確保する」をご参照ください。
制限事項
スケーリンググループごとに最大10個のライフサイクルフックを作成できます。
スケーリングアクティビティがスケーリンググループでトリガーされると、期待されるインスタンス数機能が有効になっているかどうかによって、そのスケーリンググループで他のスケーリングアクティビティを実行できるかどうかが決まります。
スケーリンググループの [期待インスタンス数] 機能が無効になっている場合、Auto scalingは他のスケーリングアクティビティを拒否します。
スケーリンググループで [期待インスタンス数] 機能が有効になっている場合、進行中のスケーリングアクティビティが並列スケーリングアクティビティである場合にのみ、Auto scalingは他のスケーリングアクティビティを実行できます。 並列スケーリングアクティビティの決定方法については、「Terms」をご参照ください。
ライフサイクルフックの管理
次の表に、ライフサイクルフックと関連リンクで実行できる操作を示します。
ユーザーガイド | 操作 | API参照 |
ライフサイクルフックの作成 | ||
ライフサイクルフックの変更 | ||
ライフサイクルフックの削除 |