このトピックでは、ライフサイクルフックの概念、ワークフロー、ユースケース、および制限事項について説明します。
ライフサイクルフックとは
ライフサイクルフックは、スケーリンググループ内の ECS インスタンスまたは ECI インスタンスのライフサイクルを管理するツールです。Auto Scaling がスケーリングアクティビティをトリガーすると、ライフサイクルフックは影響を受けるインスタンスを待機状態にします。この一時停止により、フックのタイムアウト期間が終了する前にカスタムアクションを実行する時間を確保できます。
ライフサイクルフックは、次の設定をサポートします:
ライフサイクルフックの設定方法については、「ライフサイクルフックの作成」をご参照ください。
機能 | 説明 |
スケーリングアクティビティのタイプ | ライフサイクルフックをトリガーしてインスタンスを待機状態にするスケーリングアクティビティのタイプです。 スケールアウトとスケールインのアクティビティのみをサポートしています。例:
|
タイムアウト期間 | ライフサイクルフックがタイムアウトする前に、インスタンスが待機状態でいられる時間です。この期間を利用して、カスタムアクションを実行できます。 ビジネス要件に応じてタイムアウト期間を設定してください。タイムアウト期間内にカスタムアクションが完了しない場合、システムは [デフォルトの実行ポリシー] を実行します。ライフサイクルフックを削除するか、CompleteLifecycleAction API を呼び出すことで、いつでも待機状態を終了できます。 |
デフォルトの実行ポリシー | インスタンスの待機状態がタイムアウトした後に実行されるアクションです。スケーリングアクティビティを続行するか、破棄するかを選択できます。
説明 この注記は、ライフサイクルフックの [通知方法] が OOS テンプレートに設定されている場合にのみ適用されます。OOS テンプレートの実行がタイムアウト期間の終了前に完了した場合、後続のアクションはテンプレートの実行結果のみによって決まります。テンプレートの実行が成功した場合、スケーリングアクティビティは続行します。失敗した場合、スケールアウトアクティビティはロールバックしますが、スケールインアクティビティは続行します。 |
通知 | ライフサイクルフックがトリガーされると、通知を送信するか、追加のアクションを自動的に実行するかを選択できます。 たとえば、MNS を使用して手動介入のための通知を受信したり、OOS テンプレートを使用してタスクを自動化したりできます。 説明 MNS を使用すると料金が発生します。詳細については、「MNS の料金」をご参照ください。 |
ワークフロー
次のフローチャートでは、ECS インスタンスを例として使用しています。ECI インスタンスのワークフローも同様です。
図 1. スケールアウトプロセス
図 2. スケールインのフローチャート
次の表では、図中の主要な概念について説明します:
概念 | 説明 |
ライフサイクルフック | スケーリンググループ内の ECS インスタンスまたは ECI インスタンスのライフサイクルを管理するツールです。詳細については、「ライフサイクルフックとは」をご参照ください。 |
スケーリンググループによって管理されるインスタンスのライフサイクル | インスタンスのライフサイクルは、スケーリンググループによって完全に管理されます。インスタンスのライフサイクルの詳細については、「インスタンスのライフサイクル」をご参照ください。動作は、インスタンスの作成方法によって異なります。
|
スケーリンググループによって管理されないインスタンスのライフサイクル | 手動で作成された ECS インスタンスまたは ECI インスタンスがスケーリンググループに追加されますが、そのライフサイクル全体がグループによって管理されるわけではありません。スケールイン中に、Auto Scaling はインスタンスをグループから削除しますが、解放はしません。 説明 サブスクリプションの ECS インスタンスをスケーリンググループに追加できますが、グループはそれらのライフサイクルを管理できません。 |
ユースケース
ライフサイクルフックは、ECS インスタンスまたは ECI インスタンスがサービスに投入される前、または終了する前にカスタムアクションを必要とするシナリオに最適です。
スケールアウト中に追加されたインスタンスは、すぐにはクライアントリクエストを処理できる状態にはなりません。
たとえば、ECS インスタンスは ApsaraDB RDS インスタンスへの接続、セカンダリ Elastic Network Interface のアタッチ、またはアプリケーションの起動待ちが必要になる場合があります。
スケールイン中に削除されるインスタンスは、すぐに終了すべきではありません。
たとえば、データのバックアップ、ログのコピー、またはインスタンスが処理中のクライアントリクエストを完了するのを待つことが必要になる場合があります。
詳細については、「ライフサイクルフックと OOS テンプレートのベストプラクティスの概要」および「ライフサイクルフックを使用したサービス可用性の確保」をご参照ください。
制限事項
各スケーリンググループにつき最大 10 個のライフサイクルフックを作成できます。
スケーリングアクティビティの進行中に他のスケーリングアクティビティを実行できるかどうかは、希望インスタンス数機能が設定されているかどうかによって異なります。
スケーリンググループに希望インスタンス数が設定されていない場合、グループは他のスケーリングアクティビティを拒否します。
スケーリンググループに希望インスタンス数が設定されている場合、現在のアクティビティが並列スケーリングアクティビティである場合にのみ、グループは他のスケーリングアクティビティを実行できます。並列スケーリングアクティビティの詳細については、「基本概念」をご参照ください。
ライフサイクルフックの設定方法
次の表に、ライフサイクルフックを設定するためのドキュメントを示します:
コンソールドキュメント | アクション | API リファレンス |
ライフサイクルフックの作成 | ||
ライフサイクルフックの変更 | ||
ライフサイクルフックの削除 |