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

Auto Scaling:ライフサイクルフック機能を使用してサービスの可用性を確保する

最終更新日:Sep 12, 2024

Server Load Balancer (SLB) インスタンスをスケーリンググループに関連付けると、スケーリンググループ内のElastic Compute Service (ECS) インスタンスまたはelastic containerインスタンスは、クライアントリクエストを処理するバックエンドサーバーとしてSLBインスタンスに自動的にアタッチされます。 Alibaba Cloud SLBは、Classic load Balancer (CLB) 、Application Load Balancer (ALB) 、Network Load Balancer (NLB) のタイプを提供しています。 ビジネス要件に基づいて、上記のロードバランサーをスケーリンググループに関連付けることができます。 このトピックでは、Auto Scalingのライフサイクルフック機能を使用して、スケーリンググループ内のインスタンスで必要な操作を実行する期間を指定する方法について説明します。 これにより、サービスの可用性を確保できます。

基本概念

次の表に、このトピックで使用される概念を示します。

コンセプト

説明

関連ドキュメント

SLB

SLBは、ネットワークトラフィックをバックエンドサーバーに転送して、アプリケーションのスループットを向上させるサービスです。 SLBを使用すると、単一障害点 (SPOF) によって引き起こされるサービスの中断を防ぎ、サービスの可用性を向上させることができます。

Alibaba Cloud SLBは、CLBALB、およびNLBのタイプのロードバランサーを提供します。

SLBの概要

ライフサイクルフック

ライフサイクルフックは、スケーリンググループ内のECSインスタンスまたはエラスティックコンテナインスタンスのライフサイクルを管理するために使用されるツールです。

概要

手順

このトピックでは、例としてCLBインスタンスを使用して、さまざまなシナリオでのアプリケーションのサービス可用性に対するライフサイクルフック機能の影響と、サービス可用性を確保する方法について説明します。

説明

次の手順を実行する前に、CLBインスタンスがスケーリンググループに関連付けられていることを確認してください。 ビジネス要件に基づいて、ALBサーバーグループまたはNLBサーバーグループをスケーリンググループに関連付けることもできます。 詳細については、「スケーリンググループへのSLBインスタンスのアタッチまたはデタッチ」をご参照ください。

シナリオ1: スケールアウト

効果の比較

スケールアウト効果は、スケーリンググループにライフサイクルフックがあるかどうかによって異なります。 次の表に、ライフサイクルフックを使用する場合と使用しない場合の違いを示します。

条件

説明

ライフサイクルフックを使用しない

スケールアウト中、Auto Scalingは直ちにECSインスタンスまたはエラスティックコンテナインスタンスをスケーリンググループに追加します。 Auto Scalingは、インスタンスをバックエンドサーバーとして関連付けられたCLBインスタンスにもアタッチします。 これにより、ECSインスタンスまたはエラスティックコンテナインスタンスがサービスを提供できます。 ただし、ECSインスタンスまたはエラスティックコンテナインスタンスにデプロイするアプリケーションの開始には、一定の時間が必要になる場合があります。 アプリケーションが起動する前にCLBインスタンスがクライアント要求をECSインスタンスまたはエラスティックコンテナインスタンスに転送した場合、インスタンスはクライアント要求に応答できず、サービスを提供できません。

ライフサイクルフックの使用

スケールアウト中、Auto ScalingはECSインスタンスまたはエラスティックコンテナインスタンスをバックエンドサーバーとして関連付けられたCLBインスタンスにアタッチする前に、ECSインスタンスまたはエラスティックコンテナインスタンスを [保留中の追加] 状態にします。 ECSインスタンスまたはエラスティックコンテナインスタンスにデプロイするアプリケーションが起動し、ライフサイクルフックの有効期限が切れると、ECSインスタンスまたはエラスティックコンテナインスタンスは、サービスを提供するバックエンドサーバーとして、関連付けられたCLBインスタンスに自動的にアタッチされます。

使用上の注意

ライフサイクルフック機能を使用する場合は、ライフサイクルフックを作成する必要があります。 詳細については、「ライフサイクルフックの管理」をご参照ください。

スケールアウトのライフサイクルフックを作成するときは、次の操作を実行する必要があります。

  • [スケーリングアクティビティ] パラメーターを [スケールアウトイベント] に設定します。

  • Timeout periodパラメーターの値として、アプリケーションが期待どおりに起動できる期間を指定します。 Timeout Periodパラメーターの値は、30〜21600の範囲の整数である必要があります。 単位は秒です。

    説明

    ライフサイクルフックのタイムアウト期間を予定より早く終了させたい場合は、CompleteLifecycleAction APIを呼び出すことができます。 詳細については、「CompleteLifecycleAction」をご参照ください。

  • [デフォルトの実行ポリシー] パラメーターを [続行] に設定します。

作成したライフサイクルフックが有効になると、スケールアウト中のECSインスタンスまたはエラスティックコンテナインスタンスは [保留中の追加] 状態になります。 タイムアウト期間が終了すると、ECSインスタンスまたはエラスティックコンテナインスタンスは [保留中の追加] 状態を終了します。 タイムアウト期間中に、ECSインスタンスまたはエラスティックコンテナインスタンスにデプロイされたアプリケーションは起動を完了する必要があります。 ECSインスタンスまたはエラスティックコンテナインスタンスが [保留中の追加] 状態を終了すると、インスタンスはスケーリンググループに完全に追加され、バックエンドサーバーとして関連付けられたCLBインスタンスにアタッチされます。 ECSインスタンスまたはエラスティックコンテナインスタンスが [サービス中] 状態になると、ECSインスタンスまたはエラスティックコンテナインスタンスはサービスを提供できます。 これにより、アプリケーションのサービス可用性が確保されます。

シナリオ2: スケールイン

効果の比較

スケールイン効果は、スケーリンググループにライフサイクルフックがあるかどうかによっても異なります。 次の表に、ライフサイクルフックを使用する場合と使用しない場合の違いを示します。

条件

説明

ライフサイクルフックを使用しない

スケールイン中、Auto ScalingはECSインスタンスまたはelastic containerインスタンスをスケーリンググループから直ちに削除します。 また、Auto Scalingは、関連付けられたCLBインスタンスからECSインスタンスまたはエラスティックコンテナインスタンスをデタッチします。 その後、ECSインスタンスまたはエラスティックコンテナインスタンスはサービスの提供を停止します。 ただし、スケーリンググループから削除されているECSインスタンスまたはエラスティックコンテナインスタンスには、未処理のクライアント要求がある可能性があります。 これにより、クライアントのアクセス例外が発生する可能性があります。

ライフサイクルフックの使用

スケールイン中、Auto Scalingは、関連するCLBインスタンスからECSインスタンスまたはエラスティックコンテナインスタンスをデタッチした後、ECSインスタンスまたはエラスティックコンテナインスタンスを [Pending Remove] 状態にします。 ECSインスタンスまたはエラスティックコンテナインスタンスが既存のすべてのクライアントリクエストを処理し、ライフサイクルフックのタイムアウト期間が終了すると、Auto ScalingはスケーリンググループからECSインスタンスまたはエラスティックコンテナインスタンスを削除します。 これにより、クライアントからアプリケーションへのアクセスが成功します。

使用上の注意

スケールインが進行中のスケーリンググループのライフサイクルフックを作成することを推奨します。 詳細については、「ライフサイクルフックの管理」をご参照ください。

スケールインのライフサイクルフックを作成するときは、次の操作を実行する必要があります。

  • [スケーリングアクティビティ] パラメーターを [スケールインイベント] に設定します。

  • アプリケーションが既存のすべてのクライアント要求を完了できる期間を、Timeout periodパラメーターの値として指定します。 Timeout Periodパラメーターの値は、30〜21600の範囲の整数である必要があります。 単位は秒です。

    説明

    ライフサイクルフックのタイムアウト期間を予定より早く終了する場合は、CompleteLifecycleAction APIを呼び出します。 詳細については、「CompleteLifecycleAction」をご参照ください。

作成したライフサイクルフックが有効になった後、スケーリング中のECSインスタンスまたはエラスティックコンテナインスタンスは [削除保留中] 状態になります。 タイムアウト期間が終了すると、ECSインスタンスまたはelasticコンテナインスタンスは [Pending Remove] 状態を終了します。 ライフサイクルフックのタイムアウト期間中、ECSインスタンスまたはエラスティックコンテナインスタンスは新しいクライアントリクエストを受信しなくなります。 ECSインスタンスまたはエラスティックコンテナインスタンスは、ライフサイクルフックが有効になる前に受信した既存のクライアント要求のみを処理します。 タイムアウト期間が終了すると、ECSインスタンスまたはエラスティックコンテナインスタンスはスケーリンググループから完全に削除されます。 これにより、アプリケーションのサービス可用性が確保されます。