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

Application Load Balancer の設定

負荷分散された環境を起動すると、標準ロードバランサーではなく application load balancer を使用する選択ができます。application load balancer はトラフィックを検査してリクエストのパスを識別し、パスが異なるリクエストを別々の宛先にダイレクトできるようにします。

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

注記

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

AWS Elastic Beanstalk 環境では、application 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 内で、環境のすべてのインスタンスは同じであるため、別々のポートでリッスンしているプロセス間で区別されます。

環境全体に対する 1 つのヘルスチェックパスの代わりに、各プロセスには、ロードバランサーと Elastic Beanstalk で強化されたヘルスモニタリングによってモニタリングされる、別のヘルスチェックパスがあります。

アプリケーションロードバランサーを使用するには、環境はデフォルトまたはカスタム VPC にある必要があり、アクセス権限の標準セットを持つサービスロールが必要です。古いサービスロールがある場合は、そこでのアクセス権限を更新して、elasticloadbalancing:DescribeTargetHealth および elasticloadbalancing:DescribeLoadBalancers を含めなければならない可能性があります。アプリケーションロードバランサーの詳細については、「What Is an 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
(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 と標準ロードバランサーのいずれかを選択します。

  • aws:elbv2:loadbalancer – application load balancer に全体として適用されるアクセスログの設定とその他の設定を行います。

  • aws:elbv2:listener – application load balancer でリスナーを設定します。これらの設定は、標準ロードバランサーに対する aws:elb:listener の設定にマッピングされます。

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

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

.ebextensions/application-load-balancer.config

application load balancer の使用を開始するには、設定ファイルを使用してロードバランサータイプをアプリケーションに設定します。

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'
    MatcherHTTPCode: null
    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