Elastic ロードバランシングレイヤー - AWS OpsWorks

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Elastic ロードバランシングレイヤー

重要

AWS OpsWorks Stacks は新規顧客を受け付けなくなりました。既存のお客様は、2024 年 5 月 26 日までは OpsWorks コンソール、 API、 CLI、および CloudFormation リソースを通常どおり使用できますが、その時点でこれらのリソースは廃止されます。この移行に備えて、できるだけ早くスタックを AWS Systems Manager に移行することをおすすめします。詳細については、AWS OpsWorks Stacks サポート終了に関する FAQ および AWS Systems Manager アプリケーションマネージャへの AWS OpsWorks Stacks アプリケーションの移行 を参照してください。

Elastic Load Balancing の動作は、AWS OpsWorks スタックのレイヤーとは少し異なります。レイヤーを作成してインスタンスを追加する代わりに、Elastic Load Balancing コンソールまたは API を使用してロードバランサーを作成し、既存のレイヤーにアタッチすることもできます。レイヤーのインスタンスにトラフィックを分散することに加えて、Elastic Load Balancing は以下を行います。

  • 異常な Amazon EC2 インスタンスを検出し、異常なインスタンスが復旧するまで、トラフィックを残りの正常なインスタンスに再ルーティングします。

  • 受信トラフィックに応じて、自動的にそのリクエスト処理能力を拡張します。

  • Connection Draining を有効にすると、異常があるまたは登録解除されるインスタンスへの新しいリクエストの送信がロードバランサーで停止されるものの、指定された最大タイムアウト値まで接続が維持されるため、インスタンスはすべての処理中のリクエストを完了できます。

レイヤーにロードバランサーをアタッチした後に、AWS OpsWorks スタックによって以下の処理が行われます。

  • 現在登録されているインスタンスの登録を解除します。

  • レイヤーのインスタンスがオンラインになるとこれを自動的に登録し、オフラインになるとインスタンスの登録を解除します。これには、負荷ベースのインスタンスも、時間ベースのインスタンスも含まれます。

  • アベイラビリティーゾーンの登録されたインスタンスへのリクエストのルーティングを自動的に開始します。

ロードバランサーの Connection Draining 機能を有効にしている場合は、AWS OpsWorks スタックでこれをサポートするかどうかを指定できます。Connection Drainingサポートを有効にしている (デフォルトの設定) 場合は、インスタンスがシャットダウンされた後に、AWS OpsWorks スタックによって以下の処理が行われます。

  • ロードバランサーからインスタンスを登録解除します。

    ロードバランサーは新しいリクエストの送信を停止し、Connection Drainingを開始します。

  • ロードバランサーが Connection Draining を完了するまで、Shutdown ライフサイクルイベントのトリガーを遅らせます。

Connection Draining 機能を有効にしていない場合、インスタンスがシャットダウンされたらすぐに (インスタンスがまだロードバランサーに接続されていても)、AWS OpsWorksスタックは Shutdown イベントをトリガーします。

Elastic Load Balancing をスタックとともに使用する場合は、まず Elastic Load Balancing コンソール、CLI、または API を使用して、同じリージョン内に 1 つ以上のロードバランサーを作成する必要があります。以下に注意する必要があります。

  • レイヤーにアタッチできるロードバランサーの数は 1 つのみです。

  • 各ロードバランサーで処理できるレイヤーは 1 つのみです。

  • AWS OpsWorks スタックでは、Application Load Balancer はサポートされていません。AWS OpsWorks スタックは Classic Load Balancer でのみ使用できます。

つまり、負荷分散する各スタックのレイヤーごとに個別の Elastic Load Balancing ロードバランサーを作成し、その目的のためだけに使用する必要があります。AWS OpsWorks スタックで使用する予定の各 Elastic Load Balancing ロードバランサーにわかりやすい名前 (MyStack1-RailsLayer-ELB など) を割り当てて、1 つのロードバランサーを複数の目的で使用しないようにすることをお勧めします。

重要

AWS OpsWorks スタックのレイヤーに対して新しい Elastic Load Balancing ロードバランサーを作成することをお勧めします。既存の Elastic Load Balancing ロードバランサーを使用する場合は、まず、他の目的で使用されておらず、インスタンスがアタッチされていないことを確認する必要があります。ロードバランサーがレイヤーにアタッチされた後、OpsWorks は既存のインスタンスをすべて削除して、レイヤーのインスタンスのみを処理するようにロードバランサーを設定します。レイヤーにアタッチした後でロードバランサーの設定を Elastic Load Balancing コンソールまたは API を使用して変更することは技術的には可能ですが、そうしないでください。この変更は永続的ではないためです。

Elastic Load Balancing ロードバランサーをレイヤーにアタッチするには
  1. まだ作成していない場合は、Elastic Load Balancing コンソール、API、または CLI を使用して、スタックのリージョンでロードバランサーを作成します。ロードバランサーを作成する場合、以下の作業を行います。

    • アプリケーションに適したヘルスチェック ping パスを指定してください。

      デフォルトの ping パスは /index.html であるため、アプリケーションのルートに index.html が含まれていない場合、適切な ping パスを指定する必要があります。そうしないと、ヘルスチェックは失敗します。

    • Connection Draining を使用する場合は、この機能が有効になっていて、適切なタイムアウト値が設定されていることを確認します。

    詳細については、「Elastic Load Balancing」を参照してください。

  2. バランスを取りたいレイヤーを作成するか、既存のレイヤーのネットワーク設定を編集します。

    注記

    カスタムレイヤーの作成時にロードバランサーをアタッチすることはできません。レイヤーの設定を編集する必要があります。

  3. [Elastic Load Balancing] で、レイヤーにアタッチするロードバランサーを選択し、AWS OpsWorks スタックで Connection Draining をサポートするかどうかを指定します。

レイヤーにロードバランサーをアタッチすると、AWS OpsWorks スタックによって、その変更を通知するために、スタックのインスタンスに対して Configure lifecycle event (Configure ライフサイクルイベント) がトリガーされます。AWS OpsWorksスタックは、ロードバランサーをデタッチした場合も Configure イベントがトリガーされます。

注記

インスタンスが起動すると、AWS OpsWorks スタックは Setup および Deploy レシピを実行します。これによってパッケージがインストールされ、アプリケーションがデプロイされます。それらのレシピが終了すると、インスタンスはオンライン状態になり、AWS OpsWorks スタックはそのインスタンスを Elastic Load Balancing に登録します。AWS OpsWorksスタックは、インスタンスがオンラインになった後に Configure イベントもトリガーします。これは、Elastic Load Balancing 登録と Configure レシピが同時に実行される可能性があり、Configure レシピの終了前にインスタンスが登録される可能性があることを意味します。インスタンスが Elastic Load Balancing に登録される前にレシピを終了させるには、レイヤーの Setup または Deploy ライフサイクルイベントにレシピを追加する必要があります。詳細については、「レシピの実行」を参照してください。

ロードバランサーからインスタンスを削除した方がよい場合があります。たとえば、アプリケーションを更新するときは、アプリケーションを 1 つのインスタンスにデプロイし、各インスタンスにデプロイする前にアプリケーションが正しく動作していることを確認することをお勧めします。通常、ロードバランサーからそのインスタンスを削除するため、更新を確認するまでユーザーリクエストを受信しません。

ロードバランサーからオンラインインスタンスを一時的に削除するには、Elastic Load Balancing コンソールまたは API を使用する必要があります。コンソールを使用する方法を次に説明します。

ロードバランサーから一時的にインスタンスを削除するには
  1. [Amazon EC2 console] (Amazon EC2 コンソール) を開き、[Load Balancers] (ロードバランサー) を選択します。

  2. 適切なロードバランサーを選択し、[Instances] タブを開きます。

  3. インスタンスの [Actions] (アクション) 列で [Remove from Load Balancer] (ロードバランサーから移動) を選択します。

  4. 完了したら、[Edit Instances] を選択し、インスタンスをロードバランサーに戻します。

重要

Elastic Load Balancing コンソールまたは API を使用してロードバランサーからインスタンスを削除した場合、戻す際も Elastic Load Balancing を使用する必要があります。AWS OpsWorksスタックは、他のサービスコンソールまたは API で実行された操作を認識しないため、ロードバランサーにインスタンスが自動的に戻されることはありません。場合によっては、AWS OpsWorks スタックはインスタンスを ELB に戻すことができますが、これは保証されている動作ではなく、すべてのケースで実行されるわけではありません。

次のように、インスタンスの特定のセットに複数のロードバランサーをアタッチできます。

複数のロードバランサーをアタッチするには
  1. Elastic Load Balancing console (Elastic Load Balancing コンソール)、API、または CLI を使用して、ロードバランサーのセットを作成します。

  2. ロードバランサーごとにカスタムレイヤーを作成し、該当するロードバランサーをアタッチします。これらのレイヤーにカスタムレシピを実装する必要はありません。デフォルトのカスタムレイヤーで十分です。

  3. 各カスタムレイヤーにインスタンスのセットを追加します。

[Instances] ページに移動して、適切なロードバランサーの名前をクリックすると、ロードバランサーのプロパティを確認できます。

[ELB] ページには、関連するインスタンスの DNS 名やヘルスステータスなど、ロードバランサーの基本プロパティが表示されます。スタックが VPC 内で実行されている場合、ページにはアベイラビリティーゾーンではなくサブネットが表示されます。緑のチェックマークは、正常なインスタンスを示します。名前をクリックすると、ロードバランサーを通じてサーバーに接続できます。