Application Load Balancer の設定 - AWS Elastic Beanstalk

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Application Load Balancer の設定

ロードバランシング を有効にすると、 AWS Elastic Beanstalk 環境には Elastic Load Balancing ロードバランサーが搭載され、環境内のインスタンス間でトラフィックが分散されます。Elastic Load Balancing は、いくつかのロードバランサータイプをサポートしています。それらについては、Elastic Load Balancing ユーザーガイドを参照してください。Elastic Beanstalk では、ロードバランサーを作成したり、作成した共有ロードバランサーを指定したりできます。

このトピックでは、Elastic Beanstalk が作成し、環境専用にする Application Load Balancer の設定について説明します。「共有 Application Load Balancer の設定」も参照してください。Elastic Beanstalk がサポートするすべてのロードバランサータイプの設定については、「Elastic Beanstalk 環境のロードバランサー」を参照してください。

注記

環境の作成時にのみに環境が使用するロードバランサーのタイプを選択できます。実行中の環境のロードバランサーの行動管理の設定は変更できますが、タイプを変更することはできません。また、専用ロードバランサーから共有ロードバランサーに切り替えることも、その逆もできません。

序章

Application Load Balancer は、アプリケーションネットワークプロトコルレイヤーでトラフィックを検査してリクエストのパスを識別し、パスが異なるリクエストを別々の送信先にダイレクトできるようにします。

環境で Application Load Balancer を使用する場合、Elastic Beanstalk によってデフォルトで、Classic Load Balancer と同じ機能を実行するように設定されます。デフォルトのリスナーは、ポート 80 でHTTPリクエストを受け入れ、環境内のインスタンスに配信します。ポート 443 にセキュアなリスナーと証明書を追加して、HTTPSトラフィックを復号し、ヘルスチェックの動作を設定し、アクセスログをロードバランサーから Amazon Simple Storage Service (Amazon S3) バケットにプッシュできます。

注記

Classic Load Balancer や Network Load Balancer とは異なり、Application Load Balancer にはトランスポートレイヤー (レイヤー 4) TCPや SSL/TLS リスナーを含めることはできません。HTTP および HTTPSリスナーのみをサポートします。さらに、バックエンド認証を使用してロードバランサーとバックエンドインスタンス間のHTTPS接続を認証することはできません。

Elastic Beanstalk 環境では、Application Load Balancer を使用して、特定のパスのトラフィックをウェブサーバーインスタンス上の別のプロセスに転送できます。Classic Load Balancer では、リスナーへのすべてのトラフィックはバックエンドインスタンスの 1 つのプロセスにルーティングされます。Application Load Balancer を使用すると、リスナーで複数のルールを設定し、特定のプロセスへのリクエストを別々のバックエンドポートにルーティングできます。各プロセスは、プロセスがリッスンするポートで設定します。

たとえば、ログインプロセスをメインアプリケーションとは別に実行できます。環境のインスタンスのメインアプリケーションがほとんどのリクエストを受け入れ、ポート 80 でリッスンしている間、ログインプロセスはポート 5000 でリッスンし、/login パスへのリクエストを受け入れます。クライアントからのすべての着信リクエストは、ポート 80 に入ります。Application Load Balancer を使用すると、ポート 80 の着信トラフィック用に、リクエスト内のパスに応じて 2 つの異なるプロセスにトラフィックをルーティングする 2 つのルールで単一リスナーを設定できます。ポート 5000 でリッスンするログインプロセスに、/login へのトラフィックをルーティングするカスタムルールを追加します。デフォルトのルールは、他のすべてのトラフィックをポート 80 でリッスンするメインアプリケーションプロセスにルートします。

Application Load Balancer ルールにより、リクエストがターゲットグループにマッピングされます。Elastic Beanstalk では、ターゲットグループはプロセスで表されます。プロセスのプロトコル、ポート、ヘルスチェック設定を構成できます。プロセスは環境内のインスタンスで実行されるプロセスを表します。デフォルトプロセスは、アプリケーションの前面で実行されるリバースプロキシ (nginx または Apache) のポート 80 のリスナーです。

注記

Elastic Beanstalk の外部では、ターゲットグループはインスタンスのグループにマッピングされます。リスナーはルールとターゲットグループを使用して、パスに基づいてトラフィックを別のインスタンスにルーティングできます。Elastic Beanstalk 内で、環境のすべてのインスタンスは同じであるため、別々のポートでリッスンしているプロセス間で区別されます。

Classic Load Balancer では、環境全体に対して 1 つのヘルスチェックパスが使用されます。Application Load Balancer では、プロセス別に、ロードバランサーと Elastic Beanstalk の拡張ヘルスモニタリングによってモニタリングされるヘルスチェックパスがあります。

Application Load Balancer を使用するには、環境がデフォルトまたはカスタムの にありVPC、標準のアクセス許可セットを持つサービスロールを持っている必要があります。古いサービスロールがある場合は、そこでのアクセス許可を更新して、elasticloadbalancing:DescribeTargetHealth および elasticloadbalancing:DescribeLoadBalancers を含めなければならない可能性があります。Application Load Balancer の詳細については、「Application Load Balancer とは」を参照してください。

注記

Application Load Balancer のヘルスチェックでは、Elastic Beanstalk のヘルスチェックパスは使用されません。代わりに、各プロセス用に別々に設定された特定のパスを使用します。

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

Elastic Beanstalk コンソールを使用して、環境の作成中か、後で環境の実行中に、Application Load Balancer のリスナー、プロセス、ルールを設定できます。

環境の作成中に Elastic Beanstalk コンソールで Application Load Balancer を設定するには
  1. Elastic Beanstalk コンソール を開き、リージョンリストで を選択します AWS リージョン。

  2. ナビゲーションペインで [Environments (環境)] を選択します。

  3. [新しい環境の作成] を選択して、環境の作成を開始します。

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

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

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

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

  7. [Application Load Balancer] および [Dedicated (専用)] オプションがまだ選択されていない場合は、それらのオプションを選択します。

    Elastic Load Balancing 設定ページ - ロードバランサータイプの選択
  8. Application Load Balancer の設定に、環境に必要な変更を加えます。

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

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

実行中の環境の Application Load Balancer を Elastic Beanstalk コンソールで設定するには
  1. Elastic Beanstalk コンソール を開き、リージョンリストで を選択します AWS リージョン。

  2. ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

  3. ナビゲーションペインで、[設定] を選択します。

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

    注記

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

  5. Application Load Balancer の設定に、環境に必要な変更を加えます。

  6. ページの最下部で [適用] を選択し変更を保存します。

リスナー

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

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

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

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

  2. [Application Load Balancer リスナー] ダイアログボックスで必要な設定を行い、[追加] を選択します。

[Application Load Balancer リスナー] ダイアログボックスを使用して、リスナーがトラフィックをリッスンするポートおよびプロトコル、およびトラフィックのルーティング先となるプロセスを選択します。HTTPS プロトコルを選択した場合は、SSL設定を行います。

[Application Load Balancer listener (Application Load Balancer リスナー)] ダイアログボックス

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

Elastic Beanstalk での証明書の設定HTTPSと操作の詳細については、「」を参照してくださいElastic Beanstalk 環境HTTPSの の設定

プロセス

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

Application Load Balancer の設定 - プロセスリスト

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

Application Load Balancer の環境プロセスダイアログボックスでの設定

定義

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

Application Load Balancer での名前、ポート、プロトコルの設定

ヘルスチェック

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

  • HTTP code – 正常なプロセスを指定するHTTPステータスコード。

  • [Path (パス)] - プロセスのヘルスチェックリクエストパス。

  • [Timeout (タイムアウト)] - ヘルスチェックのレスポンスを待つ時間 (秒単位)。

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

  • [Unhealthy threshold (非正常のしきい値)]、[Healthy threshold (正常のしきい値)] - Elastic Load Balancing がインスタンスのヘルス状態を変更する前に、ヘルスチェックに失敗または合格しなければならない回数。

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

Application Load Balancer でのヘルスチェック用のプロセスの設定
注記

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

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

セッション

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

セッションの維持に関連する Application Load Balancer プロセスの設定

ルール

このリストを使用して、ロードバランサーにカスタムリスナールールを指定します。ルールマップでは、リスナーがターゲットプロセスへの特定のパスパターンを受信することをリクエストします。各リスナーでは、インスタンスでの異なるプロセスへの別々のパスにリクエストをルーティングする複数のルールを保持することができます。

ルールには着信するリクエストに適用されるべき優先度を決定する優先順位の数字があります。追加する新しいリスナーごとに、Elastic Beanstalk はリスナーのトラフィックのすべてをデフォルトのプロセスにルーティングするデフォルトのルールを追加します。このデフォルトのルールの優先順位は最も低く、着信するリクエストに一致する他のルールが同じリスナーにない場合にのみ適用されます。最初は、カスタムルールを追加していない場合、リストは空です。すべてのリスナーのデフォルトルールは表示されません。

Application Load Balancer の設定 - ルールリスト

既存のルールの設定を編集するか、あるいは新しいルールを追加します。リストのルールの編集またはルールの追加を開始するには、リスナーリストと同じ手順を使用します。[リスナールール ] ダイアログボックスが開き、以下の設定が表示されます。

  • [Name (名前)] - ルールの名前。

  • [Listener port (リスナーポート)] - ルールが適用されるリスナーのポート。

  • [Priority (優先度)] - ルールの優先度。数の小さい優先度番号が優先されます。リスナーのルールの優先順位は一意である必要があります。

  • 一致条件 – ルールが適用されるリクエストURL条件のリスト。条件には、 HostHeader ( のURLドメイン部分) と PathPattern ( URLのパス部分) の 2 種類があります。条件は最大 5 つまで追加できます。各条件値は最大 128 文字で、ワイルドカード文字を含めることができます。

  • [Process (プロセス)] - ロードバランサーがルールと一致するリクエストをルーティングするプロセス。

既存のルールを編集する場合、その [名前] および [リスナーポート] を変更することはできません。

Application Load Balancer の設定 - ルールリスト

アクセスログのキャプチャ

これらの設定を使用して、Application Load Balancer に送信されたリクエストの詳細情報のログを取得するように Elastic Load Balancing を設定します。アクセスログのキャプチャはデフォルトでは無効になっています。[Store logs (ログの保存)] が有効なとき、Elastic Load Balancing は、設定された S3 バケットにログを保存します。[Prefix (プレフィックス)] 設定は、ログのバケットの最上位フォルダを指定します。Elastic Load Balancing は、プレフィックスの下の AWSLogs という名前のフォルダにログを配置します。プレフィックスを指定しない場合、Elastic Load Balancing はバケットのルートレベルにそのフォルダを配置します。

注記

アクセスログキャプチャ用に設定した Amazon S3 バケットが、Elastic Beanstalk がアカウント用に作成したバケットではない場合は、 AWS Identity and Access Management (IAM) ユーザーに対して適切なアクセス許可を持つユーザーポリシーを追加してください。Elastic Beanstalk が提供する管理ユーザーポリシーは、Elastic Beanstalk で管理されるリソースに対するアクセス許可のみを対象としています。

アクセス許可やその他の要件を含むアクセスログの詳細については、「Access logs for your Application Load Balancer (アプリケーションロードバランサーのアクセスログ) 」を参照してください。

Application Load Balancer の設定 - アクセスリスト

例: セキュアなリスナーと 2 つのプロセスを使用する Application Load Balancer

この例では、アプリケーションには end-to-end トラフィックの暗号化と、管理リクエストを処理するための別のプロセスが必要です。

これらの要件を満たすように環境の Application Load Balancer を設定するには、デフォルトのリスナーを削除し、HTTPSリスナーを追加し、デフォルトのプロセスが でポート 443 をリッスンすることを示すとともにHTTPS、別のパスで管理者トラフィックのプロセスとリスナールールを追加します。

この例でロードバランサーを設定するには
  1. 安全なリスナーを追加します。ポート]に「443」と入力します。[プロトコル] で、[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 などです。

    [デフォルトプロセス] で、default を選択したままにします。

    Application Load Balancer の設定 - セキュアなリスナーの追加

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

    Application Load Balancer の設定例 - 2 つのリスナーを含むリスナーリスト
  2. デフォルトのポート 80 HTTPリスナーを無効にします。デフォルトのリスナーについて、[有効] オプションをオフにします。

    Application Load Balancer の設定例 - デフォルトのリスナーを無効にする
  3. デフォルトのプロセスを に設定しますHTTPS。デフォルトのプロセスを選択し、[アクション] で [編集] を選択します。[ポート]に「443」と入力します。[プロトコル] で、[HTTPS] を選択します。

    Application Load Balancer の設定例 - デフォルトプロセスを に設定する HTTPS
  4. 管理プロセスを追加します。[Name] (名前) に、「admin」と入力します。[ポート]に「443」と入力します。[プロトコル] で、[HTTPS] を選択します。[ヘルスチェック] で [パス] に「/admin」と入力します。

    Application Load Balancer の設定例 - 管理プロセスを追加する
  5. 管理トラフィックのルールを追加します。[Name] (名前) に、「admin」と入力します。[リスナーポート] で 443 と入力します。一致条件 には、値 PathPattern を持つ を追加します/admin/*。[プロセス] で、admin を選択します。

    Application Load Balancer の設定例 - 管理ルールを追加する

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

EB は、 の実行時にロードバランサータイプを選択するようにCLI求めますeb create

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

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

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

Application Load Balancer の名前空間

Application Load Balancer に関連する設定は、以下の名前空間にあります。

  • aws:elasticbeanstalk:environment - 環境のロードバランサーのタイプを選択します。Application Load Balancer の値は application です。

    設定ファイル (.Ebextensions) では、このオプションを設定できません。

  • aws:elbv2:loadbalancer - Application Load Balancer 全体に適用されるアクセスログとその他の設定を定義します。

  • aws:elbv2:listener - Application Load Balancer のリスナーを設定します。これらの設定は、Classic Load Balancer に対する aws:elb:listener の設定にマッピングされます。

  • aws:elbv2:listenerrule - リクエストパスに応じて、別々のプロセスにトラフィックをルーティングするルールを設定します。ルールは Application Load Balancer に固有です。

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

例 .ebextensions/alb-access-logs.config

以下の設定ファイルでは、Application Load Balancer を使用した環境用のアクセスログのアップロードが可能になります。

option_settings: aws:elbv2:loadbalancer: AccessLogsS3Bucket: amzn-s3-demo-bucket AccessLogsS3Enabled: 'true' AccessLogsS3Prefix: beanstalk-alb
.ebextensions/alb-default-process.config

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

option_settings: aws:elasticbeanstalk:environment:process:default: DeregistrationDelay: '20' HealthCheckInterval: '15' HealthCheckPath: / HealthCheckTimeout: '5' HealthyThresholdCount: '3' UnhealthyThresholdCount: '5' Port: '80' Protocol: HTTP StickinessEnabled: 'true' StickinessLBCookieDuration: '43200'
例 .ebextensions/alb-secure-listener.config

以下の設定ファイルでは、ポート 443 でセキュアリスナーと一致するプロセスを追加します。

option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' Protocol: HTTPS SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-bf6f-f362d6eb6dd7 aws:elasticbeanstalk:environment:process:https: Port: '443' Protocol: HTTPS
例 .ebextensions/alb-admin-rule.config

以下の設定ファイルでは、ポート 4443 でリッスンする /admin というプロセスに、リクエストパス admin を使用してトラフィックをルーティングするルールでセキュアリスナーを追加します。

option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' Protocol: HTTPS Rules: admin SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-bf6f-f362d6eb6dd7 aws:elasticbeanstalk:environment:process:https: Port: '443' Protocol: HTTPS aws:elasticbeanstalk:environment:process:admin: HealthCheckPath: /admin Port: '4443' Protocol: HTTPS aws:elbv2:listenerrule:admin: PathPatterns: /admin/* Priority: 1 Process: admin