メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

AWS Elastic Beanstalk 環境のロードバランサー

負荷分散を有効にしている場合は、環境のインスタンス間でトラフィックを分散する Elastic Load Balancing ロードバランサーが環境に装備されています。

注記

Elastic Beanstalk 環境マネジメントコンソールでのみ、Classic Load Balancer を使用して Elastic Beanstalk 環境を作成および管理することができます。他のオプションについては、「Application Load Balancer」および「ネットワークロードバランサー」を参照してください。

デフォルトでは、ロードバランサーは、ポート 80 で HTTP トラフィックをリッスンして、同じポートにインスタンスを転送するよう設定されています。信頼性に優れた接続をサポートするために、ロードバランサーでポート 443 にリスナーと TLS 証明書を設定できます。

Elastic Load Balancing は、ヘルスチェックを使用して、アプリケーションを実行しているインスタンスが正常であるかどうかを判断します。ヘルスチェックは、設定した頻度で指定した URL にリクエストすることでインスタンスのヘルス状態を判断します。URL からエラーメッセージが返された場合、または指定したタイムアウト期間内に応答がなかった場合、ヘルスチェックは失敗します。

1 つのサーバーで同じクライアントから複数のリクエストを出させることで、アプリケーションのパフォーマンスが向上する場合は、スティッキーセッションを使用するようロードバランサーを設定できます。スティッキーセッションでは、ロードバランサーはリクエストを出す EC2 インスタンスを特定する HTTP レスポンスにクッキーを追加します。後続のリクエストが同一のクライアントからのものである場合、ロードバランサーはクッキー使用して同じインスタンスにリクエストを送信します。

インスタンスが正常でなくなったか環境が縮小されたため、インスタンスがロードバランサーから削除された場合は、Connection Drainingによってインスタンスとロードバランサー間の接続を閉じる前に、リクエストを完了する時間がインスタンスに与えられます。応答を送信するためにインスタンスに与える時間の長さを変更したり、Connection Drainingを完全に無効化したりできます。

注記

接続のドレインは、コンソールまたは EB CLI で環境を作成した場合は、デフォルトで有効に設定されます。その他のクライアントでは、設定オプションを使って有効にする必要があります。

高度なロードバランサーの設定は、設定オプションを通じて使用できます。これは、ソースコードの設定ファイルに設定するか、Elastic Beanstalk API を使用して環境に直接設定できます。これらのオプションを使用して、任意のポートにリスナーを設定し、追加のスティッキーセッションの設定を変更して、EC2 インスタンスに安全に接続するようロードバランサーを設定できます。Amazon S3 にアクセスログをアップロードするようロードバランサーを設定することもできます。

Classic Load Balancer の設定

Classic ロードバランサーのポート、HTTPS 証明書、およびその他の設定を行うには、Elastic Beanstalk コンソールを使用します。

Elastic Beanstalk コンソールでロードバランサーを設定するには

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

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

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

  4. [Load Balancing] を選択します。

以下の設定を使用できます。

ポートおよびクロスゾーン負荷分散

ロードバランサーの基本的な設定では、ポート 80 に標準のリスナーを、ポート 443 にセキュアリスナーを、またはポート 8443 にクロスゾーン負荷分散を設定します。

ロードバランサーにリクエストを現状のまま転送させたい場合は、[listener protocol] を [HTTP] から [TCP] に変更できます。これにより、ロードバランサーがヘッダー(X-Forwarded-For を含む)を書き換えることを防ぎ、スティッキーセッションが動作しなくなります。

HTTPS では、セキュアリスナーに [secure listener port] オプションと [protocol] オプションを追加できます。証明書を選択して接続の復号を行う必要もあります。安全な接続のみを使用する場合は、標準リスナーを無効にできます。

セキュアリスナーポートをオンにするには

  1. 証明書およびキーを作成して AWS Identity and Access Management(IAM)にアップロードします。

    証明書の作成とアップロードの詳細については、『Using AWS Identity and Access Management』のサーバー証明書の管理のページを参照してください。

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

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

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

  5. [Secure Listener Port] リストから選択してセキュアリスナーポートを指定します。

  6. [SSL Certificate ID] で、SSL 証明書の ARN を選択します。たとえば, arn:aws:iam::123456789012:server-certificate/abc/certs/build).

  7. (オプション)[Listener port] を [OFF] に設定して、標準リスナーを無効にします。

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

HTTPS の設定と証明書の使用の詳細については、「Elastic Beanstalk 環境用に HTTPS を設定する」を参照してください。

Connection Draining

これらの設定を使用して、Connection Drainingをオンまたはオフに設定し、[Draining timeout] を最大 [3600] 秒にまで設定します。

セッション

これらの設定を使用してセッション維持を有効にし、セッション長を最大 1000000 秒に設定します。

ヘルスチェック

ロードバランサーが HTTP GET リクエストを行うように、[Application health check URL] を指定します。たとえば、/ を入力してリクエストをアプリケーションのルートに送信させたり、/health を入力してリクエストを /health のリソースに送信させたりします。ヘルスチェック URL を設定しない場合、ロードバランサーはインスタンスで TCP 接続を確立するよう試みます。

注記

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

残りのオプションでは、各ヘルスチェック間の秒数([Health check interval])、ヘルスチェックが返されるまで待つ秒数([Health check timeout])、Elastic Load Balancing がインスタンスを正常または異常と判断する前の正常([Healthy check count threshold])または異常([Unhealthy check count threshold])なヘルスチェック数をカスタマイズすることができます。

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

ロードバランサー設定の名前空間

Elastic Beanstalk は、以下の名前空間で追加設定オプションを提供しており、お使いの環境でロードバランサーをさらにカスタマイズすることができます。

  • aws:elb:healthcheck – ELB ヘルスチェックのしきい値、チェック間隔、タイムアウトの設定

  • aws:elasticbeanstalk:application – ヘルスチェック URL の設定

  • aws:elb:loadbalancer – クロスゾーン負荷分散の有効化ロードバランサーにセキュリティグループを割り当て、Elastic Beanstalk が作成したデフォルトのセキュリティグループを上書きします。この名前空間には、aws:elb:listener 名前空間のオプションによって置き換えられた標準リスナーおよびセキュアリスナーを設定するための廃止されたオプションが含まれます。

  • aws:elb:listener – ポート 80 にデフォルトのリスナー、ポート 443 にセキュアリスナー、任意のポートにプロトコルの追加リスナーを設定

  • aws:elb:policies – ロードバランサーへの追加設定この名前空間のオプションを使用して、任意のポートにリスナーを設定し、追加のスティッキーセッションの設定を変更して、EC2 インスタンスに安全に接続するようロードバランサーを設定できます。

aws:elb:listener

aws:elb:listener 名前空間を使用して、ロードバランサーに追加のリスナーを設定することができます。名前空間として aws:elb:listener を指定している場合、設定はポート 80 のデフォルトリスナーに適用されます。ポートを指定している場合(たとえば、aws:elb:listener:443)、リスナーはそのポートに設定されます。

以下の設定ファイルの例では、ポート 443 の HTTPS リスナーを作成し、ロードバランサーが安全な接続を終了するのに使用する証明書を割り当てて、ポート 80 のデフォルトのリスナーを無効にしています。ロードバランサーは、復号化されたリクエストを HTTP 80 の環境の EC2 インスタンスに転送します。

例 .ebextensions/loadbalancer-terminatehttps.config

option_settings:
  aws:elb:listener:443:
    ListenerProtocol: HTTPS
    SSLCertificateId: arn:aws:iam::123456789012:server-certificate/elastic-beanstalk-x509
    InstancePort: 80
    InstanceProtocol: HTTP
  aws:elb:listener:80:
    ListenerEnabled: false

EB CLI および Elastic Beanstalk コンソールは、上記のオプションで推奨値を適用します。設定ファイルを使用して同じオプションを設定する場合、これらの設定値は削除する必要があります。詳細については、「推奨値」を参照してください。