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

Application Load Balancer の設定

負荷分散を有効にしている場合は、環境のインスタンス間でトラフィックを分散する Elastic Load Balancing ロードバランサーが環境に装備されています。Elastic Beanstalk は、いくつかの Elastic Load Balancing タイプをサポートしています。詳細は、Elastic Load Balancing ユーザーガイド を参照してください。このトピックでは、Application Load Balancer の設定について説明します。他のロードバランサーを設定する方法については、「Classic Load Balancer」および「ネットワークロードバランサー」を参照してください。

はじめに

Application Load Balancer はトラフィックを検査してリクエストのパスを識別し、パスが異なるリクエストを別々の宛先にダイレクトできるようにします。

デフォルトでは、Application Load Balancer は Classic Load Balancer と同じ機能を実行します。デフォルトのリスナーはポート 80 で HTTP リクエストを受け取り、環境内のインスタンスに分散します。ポート 443 でセキュアなリスナーを証明書とともに追加して、HTTPS トラフィックの復号、ヘルスチェックの動作の設定、ロードバランサーから Amazon Simple Storage Service(Amazon S3) バケットへのアクセスログのプッシュを行うことができます。

注記

Classic Load Balancer とは異なり、Application Load Balancer は HTTP 以外の TCP または SSL/TLS リスナーを持つことはできず、バックエンド認証を使用してロードバランサーとバックエンドインスタンス間で HTTPS 接続を認証することはできません。

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

たとえば、メインアプリケーションとは別のログインプロセスを実行できます。メインアプリケーションがほとんどのリクエストを受け入れ、ポート 80 でリッスンしている間、ログインプロセスはポート 5000 でリッスンし、/login パスへのリクエストを受け入れます。Application Load Balancer では、2 つのルールを持つ 1 つのリスナーを設定し、リクエストのパスに応じて、ポート 80 またはポート 5000 にトラフィックをルーティングできます。1 つのルールでは /login へのトラフィックをポート 5000 にルーティングし、デフォルトルールではその他すべてのトラフィックをポート 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 のヘルスチェックパスは考慮されていません。代わりに、例 (.ebextensions/alb-default-process.config) にあるような、.ebextensions に指定されたパスを使用します。

ご利用開始にあたって

注記

ロードバランサータイプは、EB CLI、Elastic Beanstalk API、または例 (.ebextensions/application-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): 2

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

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

Application Load Balancer の名前空間

Application Load Balancer に関連する設定は、以下の名前空間で確認できます。

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

  • 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/application-load-balancer.config

Application Load Balancer の使用を開始するには、設定ファイルを使用してロードバランサータイプを application に設定します。

option_settings:
  aws:elasticbeanstalk:environment:
    LoadBalancerType: application

注記

環境の作成中にのみ、ロードバランサータイプを設定できます。

例 .ebextensions/alb-access-logs.config

以下の設定ファイルでは、Application Load Balancer を使用して、環境のアクセスログをアップロードすることができます。

option_settings:
  aws:elbv2:loadbalancer:
    AccessLogsS3Bucket: my-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:0123456789012: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:0123456789012:certificate/21324896-0fa4-412b-bf6f-f362d6eb6dd7
  aws:elasticbeanstalk:environment:process:admin:
    HealthCheckPath: /admin
    Port: '4443'
    Protocol: HTTPS
  aws:elbv2:listenerrule:admin:
    PathPatterns: /admin/*
    Priority: 1
    Process: admin