AWS Elastic Beanstalk
開発者ガイド

Classic Load Balancer の設定

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

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

注記

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

イントロダクション

Classic Load Balancer は、旧世代の Elastic Load Balancing ロードバランサーです。これは、HTTP、HTTPS あるいは TCP リクエストトラフィックを環境インスタンスを別のポートにルートすることをサポートします。

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

ロードバランサーはヘルスチェックを実行して、アプリケーションを実行している Amazon EC2 インスタンスが正常であるかどうか診断します。ヘルスチェックは、設定した頻度で指定した URL にリクエストします。URL がエラーメッセージを返した場合、または指定したタイムアウト期間内に応答がなかった場合、ヘルスチェックは失敗します。

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

クロスゾーン負荷分散を使用すると、Classic Load Balancer の各ロードバランサーノードは、有効なすべてのアベイラビリティーゾーンの登録されたインスタンスにリクエストを均等に分散します。クロスゾーン負荷分散が無効の場合は、各ロードバランサーノードは、そのアベイラビリティーゾーンの登録されたインスタンスにのみリクエストを均等に分散します。

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

注記

Connection Draining は、Elastic Beanstalk コンソールまたは EB CLI で環境を作成した場合は、デフォルトで有効です。その他のクライアントでは、設定オプションを使って有効にできます。

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

Elastic Beanstalk コンソールを使用した Classic Load Balancer の設定

Elastic Beanstalk コンソール を使用して、環境の作成時または後の環境の実行時に、Classic Load Balancer ポート、HTTPS 証明書、およびその他の設定を設定できます。

環境の作成時に Elastic Beanstalk コンソール で Classic Load Balancer を設定するには

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

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

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

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

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

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

  6. まだ選択されていない場合には、[Classic Load Balancer] オプションを選択します。

    
             ロードバランサー設定ページ - ロードバランサータイプの選択
  7. 環境に必要な任意の Classic Load Balancer 設定変更を行います。

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

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

Elastic Beanstalk コンソールで実行中の環境の Classic Load Balancer を設定するには

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

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

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

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

    注記

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

  5. 環境に必要な Classic Load Balancer の設定変更を行います。

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

リスナー

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


          Classic Load Balancer の設定 - リスナーの編集

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

  1. テーブルエントリの横にあるチェックボックスをオンにし、[アクション] を選択して、任意のアクションを選択します。

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

たとえば、ロードバランサーがリクエストをそのまま転送するようにするには、デフォルトリスナーを編集して、[プロトコル] を [HTTP] から [TCP] に変更できます。これにより、ロードバランサがヘッダー (X-Forwarded-For を含む)を書き換えないようにします。このテクニックは、スティッキーセッションでは機能しません。


          Classic Load Balancer 設定 - デフォルトのリスナーのプロトコルを TCP に変更する

リスナーを追加するには

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

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

安全なリスナーの追加は、一般的ユースケースです。次のイメージの例では、ポート 443 の HTTPS トラフィックにリスナーを追加します。このリスナーは、着信したトラフィックをポート 443 で HTTPS トラフィックをリッスンする環境インスタンスサーバーにルーティングします。

HTTPS リスナーを設定する前に、有効な SSL 証明書を保持していることを確認します。次のいずれかを行ってください。

  • AWS Certificate Manager が AWS リージョンで使用可能である場合は、AWS Certificate Manager (ACM) を使用して証明書を作成またはインポートします。ACM 証明書のリクエストの詳細については、AWS Certificate Manager ユーザーガイドの「証明書のリクエスト」を参照してください。ACM へのサードパーティー証明書のインポートの詳細については、AWS Certificate Manager ユーザーガイドの「証明書のインポート」を参照してください。

  • ACM がお客様の AWS リージョンで使用可能でない場合は、既存の証明書とキーを IAM にアップロードします。証明書の作成と IAM へのアップロードの詳細については、IAM ユーザーガイドの「サーバー証明書の使用」を参照してください。

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

[SSL 証明書] で、SSL 証明書の ARN を選択します。たとえば、arn:aws:iam::123456789012:server-certificate/abc/certs/buildarn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678 などです。


          Classic Load Balancer の設定 - 安全なリスナーを追加する

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

セッション

[セッションの維持が有効です] ボックスをオンまたはオフにして、スティッキーセッションを有効または無効にします。[Cookie の維持期間] を使用して、スティッキーセッションの有効期間を最大 1000000 秒までに設定します。


          セッションの維持と期間に関する Classic Load Balancer の設定

クロスゾーン負荷分散

[複数のアベイラビリティーゾーンでの負荷分散が有効です] ボックスをオンまたはオフにして、クロスゾーン負荷分散を有効あるいは無効にします。


          クロスゾーン負荷分散に関する Classic Load Balancer の設定

Connection Draining

[Connection Draining が有効です] ボックスをオンまたはオフにして、Connection Draining を有効または無効にします。[ストリーミングのタイムアウト] を最大 3600 秒に設定します。


          Connection Draining とストリーミングのタイムアウトに関する Classic Load Balancer の設定

ヘルスチェック

次の設定を使用して、ロードバランサーのヘルスチェックを設定します。

  • [ヘルスチェックパス] – ロードバランサーがヘルスチェックリクエストを送信するパスです。パスを設定していない場合、ロードバランサーは、状態を確認するためにポート 80 での TCP 接続をするよう試みます。

  • [タイムアウト] – ヘルスチェックの応答を待つ時間 (秒単位)。

  • [間隔] – 個々のインスタンスのヘルスチェックの間隔 (秒単位)。間隔はタイムアウトより大きくする必要があります。

  • [非正常のしきい値]、[正常のしきい値] – Elastic Load Balancing がインスタンスのヘルス状態を変更する前に、ヘルスチェックが失敗あるいは成功する必要がある回数。


          ヘルスチェックに関する Classic Load Balancer の設定

注記

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

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

EB CLI を使用した Classic Load Balancer の設定

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):

[Enter] を押して、classic を選択します。

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

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

Classic Load Balancer 設定の名前空間

クラシックロードバランサー に関連する設定は、以下の名前空間で確認できます。

  • aws:elb:healthcheck – ロードバランサーのヘルスチェックのしきい値、チェックの間隔、およびタイムアウトを設定します。

  • aws:elasticbeanstalk:application – ヘルスチェック URL を設定します。

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

  • aws:elb:listener – ポート 80 にデフォルトのリスナー、ポート 443 にセキュアリスナー、または任意のポートに任意のプロトコルの追加リスナーを設定します。名前空間として aws:elb:listener を指定している場合、設定はポート 80 のデフォルトリスナーに適用されます。ポートを指定している場合(たとえば、aws:elb:listener:443)、リスナーはそのポートに設定されます。

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

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

例 .ebextensions/loadbalancer-terminatehttps.config

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

option_settings: aws:elb:listener:443: ListenerProtocol: HTTPS SSLCertificateId: arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678 InstancePort: 80 InstanceProtocol: HTTP aws:elb:listener: ListenerEnabled: false