スケーリンググループをクラシックロードバランサー (CLB)、Application Load Balancer (ALB)、または Network Load Balancer (NLB) に関連付けた後、スケーリンググループ内のインスタンスは自動的にバックエンドサーバーグループに追加され、クライアントリクエストを処理します。ライフサイクルフックを使用すると、このプロセスを一時停止し、カスタム操作を実行して高可用性を確保する時間を確保できます。
基本概念
本トピックで使用される主な概念を次の表に示します。
|
パラメーター |
説明 |
参照先 |
|
ロードバランサー |
ロードバランサーは、受信トラフィックを複数のバックエンドサーバーに分散させることで、スループットを向上させ、単一障害点を排除し、可用性を高めます。 Alibaba Cloud Server Load Balancer (SLB) には、クラシックロードバランサー (CLB)、Application Load Balancer (ALB)、および Network Load Balancer (NLB) の 3 種類があります。 |
|
|
ライフサイクルフック |
ライフサイクルフックを使用すると、スケーリンググループ内の ECS または ECI インスタンスのライフサイクルを管理できます。 |
操作手順
以下の例では、CLB インスタンスに関連付けられたスケーリンググループを使用して、スケールアウトおよびスケールインイベント中にライフサイクルフックがアプリケーションサービスに与える影響を示します。
開始前に、スケーリンググループが CLB インスタンス、または ALB/NLB のバックエンドサーバーグループに関連付けられていることを確認してください。詳細については、「スケーリンググループへのロードバランサーの追加と削除」をご参照ください。
シナリオ 1:スケールアウト
影響の比較
次の表は、ライフサイクルフックの有無によるスケールアウトイベント中のアプリケーション動作の違いを比較したものです。
|
条件 |
説明 |
|
ライフサイクルフックなし |
スケールアウトイベント中、新しい ECS または ECI インスタンスはスケーリンググループに直接追加されます。これには、関連付けられた CLB インスタンスのバックエンドサーバーグループへの追加も含まれ、すぐにトラフィックを処理し始めます。ただし、インスタンス上のアプリケーションが起動するまでには時間がかかります。アプリケーションが準備完了前にリクエストを受信すると、そのリクエストは失敗します。 |
|
ライフサイクルフックあり |
スケールアウトイベント中、ECS または ECI インスタンスが CLB インスタンスのバックエンドサーバーグループに追加される前に、ライフサイクルフックにより新しいインスタンスの処理が一時停止されます。この一時停止により、アプリケーションが完全に起動する時間を確保できます。ライフサイクルフックのタイムアウト期間が終了すると、インスタンスは自動的にバックエンドサーバーグループに追加され、トラフィックを処理し始めます。 |
手順と注意事項
ライフサイクルフックを使用するには、まずライフサイクルフックを作成する必要があります。詳細については、「ライフサイクルフックの作成」をご参照ください。
ライフサイクルフックを作成する際は、次のパラメーターを設定してください。
-
使用可能なスケーリング動作タイプ を スケールアウトイベント に設定します。
-
タイムアウト は、ECS または ECI インスタンス内のアプリケーションが正常に起動するために必要な時間に設定することを推奨します。値は整数(秒単位)で指定し、30 ≤ タイムアウト ≤ 21600 の範囲内で設定する必要があります。
説明タイムアウト期間を早期に終了させるには、CompleteLifecycleAction API オペレーションを呼び出してください。
-
デフォルトの実行ポリシー を 続行 に設定します。
ライフサイクルフックを作成後、スケールアウトイベントによって生成された新しいインスタンスは、まず 保留中 状態になり、タイムアウト期間が経過するまで待機します。この保留状態の間に、インスタンス上のアプリケーションは起動プロセスを完了できます。保留状態が終了すると、インスタンスはスケーリンググループに追加され、CLB インスタンスのバックエンドサーバーグループに登録されます。その後、インスタンスは サービス中 状態に遷移し、トラフィックを処理し始めることで、サービス可用性を確保します。
シナリオ 2:スケールイン
影響の比較
次の表は、ライフサイクルフックの有無によるスケールインイベント中のアプリケーション動作の違いを比較したものです。
|
条件 |
説明 |
|
ライフサイクルフックなし |
スケールインイベント中、終了対象として選択されたインスタンスは、スケーリンググループから即座に削除されます。これには、関連付けられた CLB インスタンスのバックエンドサーバーグループからの削除も含まれ、トラフィックの処理が停止します。インスタンスに未処理のクライアントリクエストが存在する場合、これらのリクエストは破棄され、クライアント側でエラーが発生します。 |
|
ライフサイクルフックあり |
スケールインイベント中、ECS または ECI インスタンスが関連付けられた CLB インスタンスのバックエンドサーバーグループから削除された後、ライフサイクルフックによりインスタンスの処理が一時停止されます。これにより、インスタンスは進行中のリクエストの処理を完了できます。ライフサイクルフックのタイムアウト期間が終了すると、インスタンスはスケーリンググループから削除されます。このプロセスにより、クライアント側での中断を防ぎます。 |
手順と注意事項
スケールインイベントをスムーズに処理するため、スケーリンググループ用のライフサイクルフックを作成してください。詳細については、「ライフサイクルフックの作成」をご参照ください。
ライフサイクルフックを作成する際は、次のパラメーターを設定してください。
-
使用可能なスケーリング動作タイプ を スケールインイベント に設定します。
-
タイムアウト は、すべてのリクエストの最長処理時間に設定することを推奨します。値は整数(秒単位)で指定し、30 ≤ タイムアウト ≤ 21,600 の範囲内で設定する必要があります。
説明タイムアウト期間を早期に終了させるには、
CompleteLifecycleActionAPI オペレーションを呼び出してください。詳細については、「CompleteLifecycleAction」をご参照ください。
ライフサイクルフックを作成後、終了対象として選択されたインスタンスは、まず関連付けられた CLB インスタンスのバックエンドサーバーグループから削除されます。その後、一時停止中 状態になり、タイムアウト期間が経過するまで待機します。この保留状態の間、インスタンスは進行中のリクエストの処理を完了しますが、新しいリクエストは受け付けません。保留状態が終了すると、インスタンスはスケーリンググループから削除されます。このプロセスにより、サービス可用性が確保されます。