翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 を設定するには
Elastic Beanstalk コンソール
を開き、リージョンリストで を選択します AWS リージョン。 -
ナビゲーションペインで [Environments (環境)] を選択します。
-
[新しい環境の作成] を選択して、環境の作成を開始します。
-
ウィザードのメインページで、[環境の作成] を選択する前に、[さらにオプションを設定] を選択します。
-
[高可用性] 設定プリセットを選択します。
または、[容量] 設定カテゴリで [ロードバランサー] 環境タイプを設定します。詳細については、「容量」を参照してください。
-
[ロードバランサー] 設定カテゴリで、[編集] を選択します。
-
[Application Load Balancer] および [Dedicated (専用)] オプションがまだ選択されていない場合は、それらのオプションを選択します。
-
Application Load Balancer の設定に、環境に必要な変更を加えます。
-
[保存] を選択し、環境に必要なその他の任意の設定変更を行います。
-
[Create environment (環境の作成)] を選択します。
実行中の環境の Application Load Balancer を Elastic Beanstalk コンソールで設定するには
Elastic Beanstalk コンソール
を開き、リージョンリストで を選択します AWS リージョン。 -
ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。
注記
環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。
ナビゲーションペインで、[設定] を選択します。
-
[ロードバランサー] 設定カテゴリで、[編集] を選択します。
注記
[ロードバランサー] 設定カテゴリに [編集] ボタンがない場合、お客様の環境にはロードバランサーがありません。設定方法については、「環境タイプの変更」を参照してください。
-
Application Load Balancer の設定に、環境に必要な変更を加えます。
-
ページの最下部で [適用] を選択し変更を保存します。
Application Load Balancer の設定
リスナー
このリストを使用して、ロードバランサーにリスナーを指定します。各リスナーは、指定されたプロトコルを使用して、指定されたポートの着信クライアントトラフィックをインスタンスの 1 つ以上のプロセスにルーティングします。初期状態では、このリストにはデフォルトのリスナーが表示され、ポート 80 の受信HTTPトラフィックをデフォルト という名前のプロセスにルーティングします。
既存のリスナーを設定するには
-
そのテーブルエントリの横にあるチェックボックスを選択し、続いて [アクション]、[編集] の順に選択します。
-
[Application Load Balancer listener (アプリケーションロードバランサーリスナー)] ダイアログボックスを使用して設定を編集し、[保存] を選択します。
リスナーを追加するには
-
[リスナーの追加] を選択します。
-
[Application Load Balancer リスナー] ダイアログボックスで必要な設定を行い、[追加] を選択します。
[Application Load Balancer リスナー] ダイアログボックスを使用して、リスナーがトラフィックをリッスンするポートおよびプロトコル、およびトラフィックのルーティング先となるプロセスを選択します。HTTPS プロトコルを選択した場合は、SSL設定を行います。
HTTPS リスナーを設定する前に、有効なSSL証明書があることを確認してください。次のいずれかを行います。
-
AWS Certificate Manager (ACM) がAWS リージョン で利用可能な場合は、 を使用して証明書を作成またはインポートしますACM。ACM 証明書のリクエストの詳細については、「 ユーザーガイド」の「証明書のリクエストAWS Certificate Manager 」を参照してください。へのサードパーティー証明書のインポートの詳細についてはACM、「 AWS Certificate Manager ユーザーガイド」の「証明書のインポート」を参照してください。
-
リージョン で ACMが利用できない場合は、既存の証明書とキーを にアップロードしますIAM。 AWS証明書の作成と へのアップロードの詳細についてはIAM、「 IAMユーザーガイド」の「サーバー証明書の使用」を参照してください。
Elastic Beanstalk での証明書の設定HTTPSと操作の詳細については、「」を参照してくださいElastic Beanstalk 環境HTTPSの の設定。
プロセス
このリストを使用して、ロードバランサーにプロセスを指定します。プロセスは、トラフィックをルートするターゲットです。各リスナーは、指定されたプロトコルを使用して、指定されたポートの着信クライアントトラフィックをインスタンスの 1 つ以上のプロセスにルーティングします。初期状態では、このリストにはポート 80 で受信HTTPトラフィックをリッスンするデフォルトのプロセスが表示されます。
既存のプロセスの設定を編集するか、あるいは新しいプロセスを追加します。リストのプロセスの編集またはプロセスの追加を開始するには、リスナーリストと同じステップを使用します。[環境プロセス] ダイアログボックスが開きます。
定義
これらの設定を使用して、[名前] と、リクエストをリッスンする [ポート] および [プロトコル] でプロセスを定義します。
ヘルスチェック
次の設定を使用して、プロセスのヘルスチェックを設定します。
-
HTTP code – 正常なプロセスを指定するHTTPステータスコード。
-
[Path (パス)] - プロセスのヘルスチェックリクエストパス。
-
[Timeout (タイムアウト)] - ヘルスチェックのレスポンスを待つ時間 (秒単位)。
-
[Interval (間隔)] - 個々のインスタンスのヘルスチェックの間隔 (秒単位)。間隔はタイムアウトより大きくする必要があります。
-
[Unhealthy threshold (非正常のしきい値)]、[Healthy threshold (正常のしきい値)] - Elastic Load Balancing がインスタンスのヘルス状態を変更する前に、ヘルスチェックに失敗または合格しなければならない回数。
-
[Deregistration delay (登録解除の遅延)] - インスタンスの登録を解除する前にアクティブリクエストの完了を待機する時間 (秒単位)。
注記
Elastic Load Balancing ヘルスチェックは、環境の Auto Scaling グループのヘルスチェック動作に影響しません。Elastic Load Balancing ヘルスチェックに失敗したインスタンスは、Amazon EC2 Auto Scaling を手動で設定しない限り、Amazon EC2 Auto Scaling に自動的に置き換えられません。詳細については、「Auto Scaling ヘルスチェックの設定」を参照してください。
ヘルスチェックと、それが環境の全体的な状態に与える影響の詳細については、「ベーシックヘルスレポート」を参照してください。
セッション
[Stickiness policy enabled] ボックスをオンまたはオフにして、スティッキーセッションを有効または無効にします。[Cookie の維持期間] を使用して、スティッキーセッションの有効期間を最大 604800
秒までに設定します。
ルール
このリストを使用して、ロードバランサーにカスタムリスナールールを指定します。ルールマップでは、リスナーがターゲットプロセスへの特定のパスパターンを受信することをリクエストします。各リスナーでは、インスタンスでの異なるプロセスへの別々のパスにリクエストをルーティングする複数のルールを保持することができます。
ルールには着信するリクエストに適用されるべき優先度を決定する優先順位の数字があります。追加する新しいリスナーごとに、Elastic Beanstalk はリスナーのトラフィックのすべてをデフォルトのプロセスにルーティングするデフォルトのルールを追加します。このデフォルトのルールの優先順位は最も低く、着信するリクエストに一致する他のルールが同じリスナーにない場合にのみ適用されます。最初は、カスタムルールを追加していない場合、リストは空です。すべてのリスナーのデフォルトルールは表示されません。
既存のルールの設定を編集するか、あるいは新しいルールを追加します。リストのルールの編集またはルールの追加を開始するには、リスナーリストと同じ手順を使用します。[リスナールール ] ダイアログボックスが開き、以下の設定が表示されます。
-
[Name (名前)] - ルールの名前。
-
[Listener port (リスナーポート)] - ルールが適用されるリスナーのポート。
-
[Priority (優先度)] - ルールの優先度。数の小さい優先度番号が優先されます。リスナーのルールの優先順位は一意である必要があります。
-
一致条件 – ルールが適用されるリクエストURL条件のリスト。条件には、 HostHeader ( のURLドメイン部分) と PathPattern ( URLのパス部分) の 2 種類があります。条件は最大 5 つまで追加できます。各条件値は最大 128 文字で、ワイルドカード文字を含めることができます。
-
[Process (プロセス)] - ロードバランサーがルールと一致するリクエストをルーティングするプロセス。
既存のルールを編集する場合、その [名前] および [リスナーポート] を変更することはできません。
アクセスログのキャプチャ
これらの設定を使用して、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 (アプリケーションロードバランサーのアクセスログ) 」を参照してください。
例: セキュアなリスナーと 2 つのプロセスを使用する Application Load Balancer
この例では、アプリケーションには end-to-end トラフィックの暗号化と、管理リクエストを処理するための別のプロセスが必要です。
これらの要件を満たすように環境の Application Load Balancer を設定するには、デフォルトのリスナーを削除し、HTTPSリスナーを追加し、デフォルトのプロセスが でポート 443 をリッスンすることを示すとともにHTTPS、別のパスで管理者トラフィックのプロセスとリスナールールを追加します。
この例でロードバランサーを設定するには
-
安全なリスナーを追加します。[ポート]に「
443
」と入力します。[プロトコル] で、[HTTPS
] を選択します。SSL 証明書 で、SSL証明書ARNの を選択します。たとえば、arn:aws:iam::123456789012:server-certificate/abc/certs/build
、arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678
などです。[デフォルトプロセス] で、
default
を選択したままにします。これでリストに追加のリスナーが表示されます。
-
デフォルトのポート 80 HTTPリスナーを無効にします。デフォルトのリスナーについて、[有効] オプションをオフにします。
-
デフォルトのプロセスを に設定しますHTTPS。デフォルトのプロセスを選択し、[アクション] で [編集] を選択します。[ポート]に「
443
」と入力します。[プロトコル] で、[HTTPS
] を選択します。 -
管理プロセスを追加します。[Name] (名前) に、「
admin
」と入力します。[ポート]に「443
」と入力します。[プロトコル] で、[HTTPS
] を選択します。[ヘルスチェック] で [パス] に「/admin
」と入力します。 -
管理トラフィックのルールを追加します。[Name] (名前) に、「
admin
」と入力します。[リスナーポート] で443
と入力します。一致条件 には、値 PathPattern を持つ を追加します/admin/*
。[プロセス] で、admin
を選択します。
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