AWS Elastic Beanstalk
開発者ガイド

ネットワークロードバランサー の設定

負荷分散を有効にしている場合、AWS Elastic Beanstalk 環境には環境内のインスタンス間にトラフィックを分散する Elastic Load Balancing ロードバランサーが装備されています。Elastic Load Balancing は、いくつかのロードバランサータイプをサポートしています。これについての詳細は、Elastic Load Balancing ユーザーガイド を参照してください。

このトピックでは、ネットワークロードバランサー の設定について説明します。Elastic Beanstalk がサポートするすべてのロードバランサータイプの設定に関する詳細は、AWS Elastic Beanstalk 環境のロードバランサーを参照してください。

注記

環境の作成時にのみに環境が使用するロードバランサーのタイプを選択できます。実行中の環境のロードバランサーの行動管理の設定は変更できますが、タイプを変更することはできません。

イントロダクション

ネットワークロードバランサー では、デフォルトのリスナーはポート 80 で TCP リクエストを受け取り、環境内のインスタンスに分散します。ヘルスチェックの動作の設定、リスナーポートの設定、または他のポートへのリスナーの追加を行うことができます。

注記

Classic Load Balancer または Application Load Balancer とは異なり、ネットワークロードバランサー はアプリケーションレイヤー (レイヤー 7) HTTP または HTTPS リスナーを持つことはできません。トランスポートレイヤー (レイヤー 4) TCP リスナーのみをサポートしています。HTTP および HTTPS トラフィックは、TCP 経由で環境にルーティングできます。ウェブクライアントと環境の間でセキュアな HTTPS 接続を確立するには、自己署名証明書 を環境のインスタンスにインストールして、適切なポート (通常は 443) でリッスンして HTTPS 接続を終了するようにインスタンスを設定します。設定はプラットフォームによって異なります。手順については、「インスタンスで HTTPS 接続を終了するようにアプリケーションを設定する」を参照してください。次に、ネットワークロードバランサー を設定して、適切なポートでリッスンしているプロセスにマッピングされるリスナーを追加します。

ネットワークロードバランサー は、アクティブなヘルスチェックをサポートしています。これらのチェックは、ルート (/) パスへのメッセージに基づきます。さらに、ネットワークロードバランサー は、パッシブのヘルスチェックをサポートしています。問題のあるバックエンドインスタンスを自動的に検出し、正常なインスタンスにのみトラフィックをルーティングします。

Elastic Beanstalk コンソールを使用した ネットワークロードバランサー の設定

Elastic Beanstalk コンソール を使用して、環境の作成時または後で環境の実行時に ネットワークロードバランサー のリスナーとプロセスを設定できます。

環境の作成時に Elastic Beanstalk コンソール で ネットワークロードバランサー を設定するには

  1. [新しい環境の作成ウィザード] を使用して、環境の作成を開始します。

  2. ウィザードのメインページで、[環境の作成] を選択する前に、[さらにオプションを設定] を選択します。

  3. [高可用性] 設定プリセットを選択します。

    または、[容量] 設定カードで [ロードバランサー] 環境タイプを設定します。詳細については、「容量」を参照してください。

  4. [ロードバランサー] 設定カードで、[変更] を選択します。

  5. まだ選択されていない場合には、[ネットワークロードバランサー] オプションを選択します。

    
            Elastic Load Balancing 設定ページ - ロードバランサータイプの選択
  6. 環境に必要な任意の ネットワークロードバランサー 設定変更を行います。

  7. [保存] を選択し、環境に必要なその他の任意の設定変更を行います。

  8. [Create environment (環境の作成)] を選択します。

Elastic Beanstalk コンソールで実行中の環境の ネットワークロードバランサー を設定するには

  1. Elastic Beanstalk コンソール を開きます。

  2. お客様の環境の管理ページに移動します。

  3. [Configuration] を選択します。

  4. [ロードバランサー] 設定カードで、[変更] を選択します。

    注記

    [ロードバランサー] 設定カードに [変更] ボタンがない場合、お客様の環境にはロードバランサーがありません。設定方法については、「環境タイプの変更」を参照してください。

  5. 環境に必要な ネットワークロードバランサー の設定変更を行います。

  6. [Apply] を選択します。

リスナー

このリストを使用して、ロードバランサーにリスナーを指定します。各リスナーは、指定されたポートの着信クライアントトラフィックをインスタンス上のプロセスにルーティングします。初期状態では、このリストには、ポート 80 で着信トラフィックをポート 80 でリッスンする [デフォルト] という名前のプロセスにルーティングするデフォルトのリスナーが表示されます。


          ネットワークロードバランサー 設定 - リスナーリスト

既存のリスナーを設定するには

  1. そのテーブルエントリの横にあるチェックボックスを選択し、続いて [アクション]、[編集] の順に選択します。

  2. [Network Load Balancer listener (ネットワークロードバランサーリスナー)] ダイアログボックスを使用して設定を編集し、[保存] を選択します。

リスナーを追加するには

  1. [リスナーの追加] を選択します。

  2. [Network Load Balancer listener (ネットワークロードバランサーリスナー)] ダイアログボックスで必要な設定を行い、[追加] を選択します。

[Network Load Balancer listener (ネットワークロードバランサーリスナー)] ダイアログボックスを使用して、リスナーがトラフィックをリッスンするポートを設定し、トラフィックをルーティングするプロセス (プロセスがリッスンするポートによって指定された) を選択します。


          ネットワークロードバランサー リスナーダイアログボックス

プロセス

このリストを使用して、ロードバランサーにプロセスを指定します。プロセスは、トラフィックをルートするターゲットです。各リスナーは、指定されたポートの着信クライアントトラフィックをインスタンス上のプロセスにルーティングします。初期状態では、このリストには、ポート 80 で着信トラフィックをリッスンするデフォルトのプロセスが表示されます。


          ネットワークロードバランサー の設定 - プロセスリスト

既存のプロセスの設定を編集するか、あるいは新しいプロセスを追加します。リストのプロセスの編集またはプロセスの追加を開始するには、リスナーリストと同じステップを使用します。[環境プロセス] ダイアログボックスが開きます。

ネットワークロードバランサー の環境プロセスのダイアログボックス設定

定義

これらの設定を使用して、[名前] およびリクエストをリッスンする [プロセスポート] でプロセスを定義します。


            名前、リスナーポート、およびプロセスポートに関する ネットワークロードバランサー プロセスダイアログボックスの設定

ヘルスチェック

次の設定を使用して、プロセスのヘルスチェックを設定します。

  • [間隔] – 個々のインスタンスのヘルスチェックの間隔 (秒単位)。

  • [正常のしきい値] – Elastic Load Balancing がインスタンスのヘルス状態を変更する前にヘルスチェックが成功しなければならない回数。(ネットワークロードバランサー の場合、[非正常のしきい値] は読み取り専用の設定であり、常に正常なしきい値と等しくなります。)

  • [登録解除の遅延] – インスタンスの登録を解除する前にアクティブリクエストの完了を待機する時間 (秒単位)。


            ヘルスチェックに関する ネットワークロードバランサー プロセスダイアログボックスの設定

注記

Elastic Load Balancing ヘルスチェックは、環境の Auto Scaling グループのヘルスチェックの動作には影響しません。Elastic Load Balancing ヘルスチェックが失敗したインスタンスは、そうするように Amazon EC2 Auto Scaling を手動で設定しない限り、Amazon EC2 Auto Scaling によって自動的に置き換えられません。詳細については、「Auto Scaling ヘルスチェックの設定」を参照してください。

ヘルスチェックと、それが環境の全体的な状態に与えるに影響の詳細については、「基本ヘルスレポート」を参照してください。

例: エンドツーエンドの暗号化を使用する環境の ネットワークロードバランサー

この例では、アプリケーションはエンドツーエンドのトラフィック暗号化を必要とします。これらの要件を満たすように環境の ネットワークロードバランサー を設定するには、ポート 443 をリッスンするようにデフォルトプロセスを設定し、トラフィックをデフォルトプロセスにルーティングするリスナーをポート 443 に追加して、デフォルトリスナーを無効にします。

この例でロードバランサーを設定するには

  1. デフォルトプロセスを設定します。 デフォルトのプロセスを選択し、[アクション] で [編集] を選択します。[プロセスポート] に「443」と入力します。

    
              ネットワークロードバランサー の設定例 - プロセスポート 443 を使用するようにデフォルトプロセスを設定する
  2. ポート 443 リスナーを追加します。 新しいリスナーを追加します。[リスナーポート] で 443 と入力します。[プロセスポート] として 443 が選択されていることを確認します。

    
              ネットワークロードバランサー 設定例 - ポート 443 リスナーの追加

    これでリストに追加のリスナーが表示されます。

    
              ネットワークロードバランサー の設定例 - 2 つのリスナーを示すリスナーリスト
  3. デフォルトのポート 80 リスナーを無効にします。 デフォルトのリスナーについて、[有効] オプションをオフにします。

    
              ネットワークロードバランサー 設定例 - デフォルトリスナーの無効化

EB CLI を使用した ネットワークロードバランサー の設定

eb create の実行時に、EB CLI によりロードバランサータイプの選択が求められます。

$ eb create Enter Environment Name (default is my-app): test-env Enter DNS CNAME prefix (default is my-app): test-env-DLW24ED23SF Select a load balancer type 1) classic 2) application 3) network (default is 1): 3

--elb-type オプションでロードバランサータイプを指定することもできます。

$ eb create test-env --elb-type network

ネットワークロードバランサー の名前空間

Network Load Balancer に関連する設定は、以下の名前空間で確認できます。

  • aws:elasticbeanstalk:environment – 環境のロードバランサーのタイプを選択します。ネットワークロードバランサー の値は network です。

  • aws:elbv2:loadbalancer – 全体として ネットワークロードバランサー に適用されるアクセスログとその他の設定を設定します。

    注記

    この名前空間の ManagedSecurityGroupSecurityGroups の設定は、ネットワークロードバランサー に適用されません。

  • aws:elbv2:listener – ネットワークロードバランサー のリスナーを設定します。これらの設定は、クラシックロードバランサー の aws:elb:listener の設定にマッピングされます。

  • aws:elasticbeanstalk:environment:process – ヘルスチェックを設定し、環境のインスタンスで実行するプロセスのポートとプロトコルを指定します。ポートとプロトコルの設定は、Classic Load Balancer のリスナー用の aws:elb:listener のインスタンスポートおよびインスタンスプロトコルの設定にマッピングされます。ヘルスチェックの設定は、aws:elb:healthcheck および aws:elasticbeanstalk:application 名前空間の設定にマッピングされます。

.ebextensions/network-load-balancer.config

ネットワークロードバランサー の使用を開始するには、設定ファイルを使用して、ロードバランサータイプを network に設定します。

option_settings: aws:elasticbeanstalk:environment: LoadBalancerType: network

注記

環境の作成中にのみ、ロードバランサータイプを設定できます。

.ebextensions/nlb-default-process.config

以下の設定ファイルでは、デフォルトプロセスのヘルスチェックの設定を変更します。

option_settings: aws:elasticbeanstalk:environment:process:default: DeregistrationDelay: '20' HealthCheckInterval: '10' HealthyThresholdCount: '5' UnhealthyThresholdCount: '5' Port: '80' Protocol: TCP

例 .ebextensions/nlb-secure-listener.config

以下の設定ファイルでは、ポート 443 のセキュアなトラフィックのリスナーと、ポート 443 をリッスンする一致するターゲットプロセスが追加されます。

option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' aws:elasticbeanstalk:environment:process:https: Port: '443'

DefaultProcess オプションの名前は、Application Load Balancer が特定のパスへのトラフィックについて同じポートにデフォルトでないリスナーを設定できることにちなんでいます (詳細については、Application Load Balancer を参照)。ネットワークロードバランサー のこのオプションは、このリスナーのターゲットプロセスのみ指定します。

この例では、セキュアな (HTTPS) トラフィックをリッスンするため、プロセスは https という名前になります。ネットワークロードバランサー は TCP でのみ使用できるため、リスナーは、TCP プロトコルを使用して、指定ポートのプロセスにトラフィックを送信します。HTTP および HTTPS のネットワークトラフィックは TCP の上で実装されるため、これは問題ありません。