ネットワークロードバランサー の設定
負荷分散を有効にしている場合は、環境のインスタンス間でトラフィックを分散する Elastic Load Balancing ロードバランサーが環境に装備されています。Elastic Beanstalk は、いくつかの Elastic Load Balancing タイプをサポートしています。詳細は、Elastic Load Balancing ユーザーガイド を参照してください。このトピックでは、ネットワークロードバランサー の設定について説明します。他のロードバランサーを設定する方法については、「Classic Load Balancer」および「Application Load Balancer」を参照してください。
はじめに
ネットワークロードバランサー では、デフォルトのリスナーはポート 80 で TCP リクエストを受け取り、環境内のインスタンスに分散します。ヘルスチェックの動作の設定、ロードバランサーから Amazon Simple Storage Service(Amazon S3) バケットへのアクセスログのプッシュ、リスナーポートの設定、他のポートでのリスナーの追加を行うことができます。
注記
Classic Load Balancer または Application Load Balancer とは異なり、ネットワークロードバランサー では HTTP または HTTPS リスナーを持つことはできません。TCP リスナーのみサポートしています。レイヤー 7 の HTTP および HTTPS プロトコルのウェブトラフィックではいずれも、レイヤー 4 の TCP プロトコルを使用しているため、ネットワークロードバランサー は、設定された TCP ポートのウェブトラフィックをすべて処理します。さまざまなポート (通常 443) に移動するセキュアな HTTPS トラフィックを実現するには、このポート向けに別のリスナーを設定して、トラフィックを別のターゲットプロセスに直接送信することができます。
ネットワークロードバランサー は、アクティブなヘルスチェックをサポートしています。これらのチェックは、他のロードバランサータイプと同様、設定されたヘルスチェックパスへのメッセージに基づいています。さらに、ネットワークロードバランサー は、パッシブのヘルスチェックをサポートしています。問題のあるバックエンドインスタンスを自動的に検出し、正常なインスタンスにのみトラフィックをルーティングします。
開始方法
注記
ロードバランサータイプは、EB CLI、Elastic Beanstalk API、または例 (.ebextensions/network-load-balancer.config) にあるように、.ebextensions
を使用して環境の作成中にのみ設定できます。コンソールではこの機能はサポートされません。
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
ネットワークロードバランサー の名前空間
ネットワークロードバランサー に関連する設定は、以下の名前空間で確認できます。
-
aws:elasticbeanstalk:environment
– 環境のロードバランサーのタイプを選択します。ネットワークロードバランサー の値はnetwork
です。 -
aws:elbv2:loadbalancer
– ネットワークロードバランサー に全体として適用されるアクセスログの設定とその他の設定を行います。注記
この名前空間の
ManagedSecurityGroup
とSecurityGroups
の設定は、ネットワークロードバランサー に適用されません。 -
aws:elbv2:listener
– ネットワークロードバランサー でリスナーを設定します。これらの設定は、Classic Load Balancer に対する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 の上部に実装されているため、これは問題ありません。