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

AWS Toolkit for Visual Studio を使用して Elastic Load Balancing を設定する

Elastic Load Balancing は、アプリケーションの可用性と拡張性の向上に役立つアマゾン ウェブ サービスです。このサービスによって、アプリケーションの負荷を簡単に複数の Amazon EC2 インスタンスに分散できます。Elastic Load Balancing による冗長化で可用性が改善され、アプリケーションのトラフィック増加に対応できます。

Elastic Load Balancing を使用すると、実行しているすべてのインスタンス間で、アプリケーションの着信トラフィックを配信して負荷分散を行うことができます。また、アプリケーションの処理能力を増やす必要があるときには、新しいインスタンスを簡単に追加することもできます。

アプリケーションをデプロイすると、Elastic Beanstalk によって自動的に Elastic Load Balancing がプロビジョニングされます。AWS Toolkit for Visual Studio のアプリケーション環境タブ内の [Load Balancer] タブで Elastic Beanstalk 環境の Amazon EC2 インスタンス設定を編集できます。

 Elastic Beanstalk の [Elastic Load Balancing] 設定パネル

ここでは、アプリケーションで設定できる Elastic Load Balancing パラメータについて説明します。

ポート

Elastic Beanstalk アプリケーションのリクエストを処理するためにプロビジョニングされたロードバランサーから、アプリケーションを実行している Amazon EC2 インスタンスにリクエストを送信します。プロビジョニングされたロードバランサーは、HTTP ポートと HTTPS ポートのリクエストをリッスンし、AWS Elastic Beanstalk アプリケーションの Amazon EC2 インスタンスにリクエストをルーティングすることができます。デフォルトでは、ロードバランサーは HTTP ポートのリクエストを処理します。少なくともいずれかのポート(HTTP または HTTPS)を有効にする必要があります。

 Elastic Beanstalk Elastic Load Balancing 設定 - ポート

重要

指定したポートがロックされていないことを確認してください。ロックされている場合、ユーザーは Elastic Beanstalk アプリケーションに接続できません。

HTTP ポートを制御する

HTTP ポートを無効にするには、[HTTP Listener Port] で [OFF] を選択します。HTTP ポートを有効にするには、リストから HTTP ポート([80] など)を選択します。

注記

デフォルトポート 80 以外のポート (例: ポート 8080) を使用して環境にアクセスする場合は、既存のロードバランサーにリスナーを追加し、そのポートでリッスンするようにリスナーを設定します。

たとえば、Classic Load Balancer 用の AWS CLI を使用して、次のコマンドを入力します。LOAD_BALANCER_NAME は Elastic Beanstalk のロードバランサーの名前に置き換えてください。

aws elb create-load-balancer-listeners --load-balancer-name LOAD_BALANCER_NAME --listeners "Protocol=HTTP, LoadBalancerPort=8080, InstanceProtocol=HTTP, InstancePort=80"

たとえば、Application Load Balancer 用の AWS CLI を使用して、次のコマンドを入力します。LOAD_BALANCER_ARN は Elastic Beanstalk のロードバランサーの ARN に置き換えてください。

aws elbv2 create-listener --load-balancer-arn LOAD_BALANCER_ARN --protocol HTTP --port 8080

Elastic Beanstalk を使用して環境を監視する場合は、ポート 80 のリスナーを削除しないでください。

HTTPS ポートを制御する

Elastic Load Balancing は、ロードバランサーへのクライアント接続のトラフィックを暗号化するために、HTTPS/TLS プロトコルをサポートしています。ロードバランサーから EC2 インスタンスへの接続では、プレーンテキストの暗号化が使用されます。デフォルトで、HTTPS ポートは無効です。

HTTPS ポートを有効にするには

  1. 証明書とキーを作成して AWS Identity and Access Management (IAM)サービスにアップロードします。IAM サービスは証明書を保存し、アップロードした SSL 証明書の Amazon Resource Name(ARN)を提供します。証明書の作成とアップロードの詳細については、『Using AWS Identity and Access Management』のサーバー証明書の管理のページを参照してください。

  2. HTTPS ポートを指定するには[HTTPS Listener Port] で選択します。

     Elastic Beanstalk Elastic Load Balancing 設定 – SSL
  3. [SSL Certificate ID] に、SSL 証明書の Amazon リソースネーム(ARN)を入力します(例: arn:aws:iam::123456789012:server-certificate/abc/certs/build)。ステップ 1 で作成し、アップロードした SSL 証明書を使用します。証明書の ARN の表示については、「Using IAM Guide」の「Creating and Uploading Server Certificates」の「Verify the Certificate Object」を参照してください。

HTTPS ポートを無効にするには、[OFF][HTTPS Listener Port] で選択します。

ヘルスチェック

ヘルスチェックの定義には、インスタンスのヘルスを照会する URL が含まれます。デフォルトでは、Elastic Beanstalk はレガシーではないコンテナの場合は TCP:80 を使用し、レガシーコンテナの場合は HTTP:80 を使用します。デフォルト URL をオーバーライドしてアプリケーションの既存のリソース(たとえば、/myapp/default.aspx)に一致させるには、そのリソースの URL を [Application Health Check URL] ボックスに入力します。デフォルトの URL をオーバーライドすると、Elastic Beanstalk は HTTP を使用してリソースを照会します。レガシーコンテナタイプを使用しているかどうかを確認するには、「いくつかのコンテナタイプがレガシーとマークされている理由」を参照してください。

[Load Balancing] パネルの EC2 Instance Health Check] を使用して、ヘルスチェックの設定を制御できます。

 Elastic Beanstalk Elastic Load Balancing 設定 – ヘルスチェック

ヘルスチェックの定義には、インスタンスのヘルスを照会する URL が含まれます。デフォルトの URL をオーバーライドして、アプリケーション内の既存のリソースと一致させます(例: /myapp/index.jsp)。そのためには、[Application Health Check URL] ボックスに、既存のリソースの URL を入力します。

次の一覧では、アプリケーションで設定できるヘルスチェックパラメータについて説明します。

  • [Health Check Interval (seconds)] には、Elastic Load Balancing がアプリケーションの Amazon EC2 インスタンスの各ヘルスチェックを待機する秒数を入力します。

  • [Health Check Timeout (seconds)] には、Elastic Load Balancing がインスタンスの応答がないと見なす応答待機時間の秒数を入力します。

  • [Healthy Check Count Threshold] および [Unhealthy Check Count Threshold] には、Elastic Load Balancing がインスタンスのヘルスステータスを変更するまでの URL プローブの連続成功回数または失敗回数を指定します。たとえば、[Unhealthy Check Count Threshold] ボックスに「5」を指定した場合、Elastic Load Balancing がヘルスチェックを失敗と見なすまでに、URL ではエラーメッセージまたはタイムアウトを 5 回連続して返す必要があります。

セッション

デフォルトでは、ロードバランサーは負荷が最小になるように、各リクエストを個別にサーバーインスタンスにルーティングします。比較すると、スティッキーセッションの場合、セッション中にユーザーから受信するすべてのリクエストが、同じサーバーインスタンスに送信されるように、ユーザーのセッションを特定のサーバーインスタンスにバインドします。

アプリケーションでスティッキーセッションが有効になっている場合、Elastic Beanstalk ではロードバランサーが生成する HTTP Cookie を使用します。ロードバランサーは、ロードバランサーが生成する特別な Cookie を使って、各リクエストのアプリケーションインスタンスを追跡します。ロードバランサーがリクエストを受け取ると、まずこの Cookie がリクエスト内にあるかどうかを調べます。ある場合は、Cookie で指定されたアプリケーションインスタンスにリクエストが送信されます。Cookie がない場合、ロードバランサーは、既存の負荷分散アルゴリズムに基づいてアプリケーションインスタンスを選択します。同じユーザーからの以降のリクエストをそのアプリケーションインスタンスにバインドするため、応答に Cookie が挿入されます。ポリシー設定では、各 Cookie の有効期間を設定する Cookie 期限を定義します。

[Load Balancer] タブの [Sessions] セクションを使用して、アプリケーションのロードバランサーでスティッキーセッションを使用できるようにするかどうかを指定できます。

 Elastic Beanstalk の Elastic Load Balancing 設定 – セッション

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

このページの内容: