翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Classic Load Balancer の設定
ロードバランシングを有効にしている場合、AWS Elastic Beanstalk 環境には環境内のインスタンス間にトラフィックを分散する Elastic Load Balancing ロードバランサーが用意されています。Elastic Load Balancing は、いくつかのロードバランサータイプをサポートしています。それらについては、Elastic Load Balancing ユーザーガイドを参照してください。Elastic Beanstalk では、ロードバランサーを作成したり、作成した共有ロードバランサーを指定したりできます。
このトピックでは、Elastic Beanstalk が作成し、環境専用にする Classic Load Balancer の設定について説明します。Elastic Beanstalk がサポートするすべてのロードバランサータイプの設定については、「Elastic Beanstalk 環境のロードバランサー」を参照してください。
注記
環境の作成時にのみに環境が使用するロードバランサーのタイプを選択できます。あとで、実行中の環境のロードバランサーの動作管理の設定は変更できますが、タイプを変更することはできません。
序章
Classic Load Balancer は、Elastic Load Balancing の前世代のロードバランサーです。これは、HTTP、HTTPS あるいは TCP リクエストトラフィックを環境インスタンスの別のポートにルートすることをサポートします。
環境で Classic Load Balancer を使用する場合、Elastic Beanstalk によってデフォルトで、ポート 80 の HTTP トラフィックをリッスンし、同じポートのインスタンスに転送するように設定されます。ポート 80 のデフォルトリスナーを削除することはできませんが、無効にすると、トラフィックをブロックすることで同じ機能を実現できます。他のリスナーは追加や削除ができることに注意してください。信頼性に優れた接続をサポートするために、ロードバランサーでポート 443 にリスナーと TLS 証明書を設定できます。
ロードバランサーはヘルスチェックを実行して、アプリケーションを実行している Amazon EC2 インスタンスが正常であるかどうか診断します。ヘルスチェックは、設定した頻度で指定した URL にリクエストします。URL がエラーメッセージを返した場合、または指定したタイムアウト期間内に応答がなかった場合、ヘルスチェックは失敗します。
1 つのサーバーで同じクライアントから複数のリクエストを出させることで、アプリケーションのパフォーマンスが向上する場合は、スティッキーセッションを使用するようロードバランサーを設定できます。スティッキーセッションでは、ロードバランサーはリクエストを出す Amazon EC2 インスタンスを特定する HTTP レスポンスに cookie を追加します。後続のリクエストが同一のクライアントからのものである場合、ロードバランサーは cookie 使用して同じインスタンスにリクエストを送信します。
クロスゾーン負荷分散を使用すると、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 証明書、その他の設定を定義できます。
注記
[環境作成] コンソールウィザードでは、Classic Load Balancer (CLB) オプションは無効になっています。既存の環境を Classic Load Balancer で設定している場合は、Elastic Beanstalk コンソールまたは EB CLI のいずれかを使用して既存の環境を複製することで新しい環境を作成できます。EB CLI または AWS CLI を使用して Classic Load Balancer で設定された新しい環境を作成することもできます。これらのコマンドラインツールは、アカウントに CLB がまだ存在しない場合でも、CLB を使用して新しい環境を作成します。
実行中の環境の Classic Load Balancer を Elastic Beanstalk コンソールで設定するには
Elastic Beanstalk コンソール
を開き、[Regions] (リージョン) リストで AWS リージョンを選択します。 -
ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。
注記
環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。
ナビゲーションペインで、[設定] を選択します。
-
[ロードバランサー] 設定カテゴリで、[編集] を選択します。
注記
[ロードバランサー] 設定カテゴリに [編集] ボタンがない場合、お客様の環境にはロードバランサーがありません。設定方法については、「環境タイプの変更」を参照してください。
-
Classic Load Balancer の設定に、環境に必要な変更を加えます。
-
ページの最下部で [適用] を選択し変更を保存します。
Classic Load Balancer の設定
リスナー
このリストを使用して、ロードバランサーにリスナーを指定します。各リスナーは、指定されたプロトコルを使用して、指定されたポートの着信クライアントトラフィックをインスタンスにルーティングします。初期状態では、このリストにはポート 80 の着信 HTTP トラフィックをポート 80 の HTTP トラフィックをリッスンする環境のインスタンスにルーティングするデフォルトのリスナーが表示されます。
注記
ポート 80 のデフォルトリスナーを削除することはできませんが、無効にすると、トラフィックをブロックすることで同じ機能を実現できます。
既存のリスナーを設定するには
-
テーブルエントリの横にあるチェックボックスをオンにし、[アクション] を選択して、任意のアクションを選択します。
-
[編集] を選択した場合、[Classic Load Balancer listener (クラシックロードバランサーリスナー)] ダイアログボックスを使用して設定を編集し、[保存] を選択します。
たとえば、ロードバランサーがリクエストをそのまま転送するようにするには、デフォルトリスナーを編集して、[プロトコル] を [HTTP] から [TCP] に変更できます。これにより、ロードバランサがヘッダー (X-Forwarded-For
を含む)を書き換えないようにします。このテクニックは、スティッキーセッションでは機能しません。
リスナーを追加するには
-
[リスナーの追加] を選択します。
-
[Classic Load Balancer listener (クラシックロードバランサーリスナー)] ダイアログボックスで設定を行い、[追加] を選択します。
安全なリスナーの追加は、一般的ユースケースです。次のイメージの例では、ポート 443 の HTTPS トラフィックにリスナーを追加します。このリスナーは、着信したトラフィックをポート 443 で HTTPS トラフィックをリッスンする環境インスタンスサーバーにルーティングします。
HTTPS リスナーを設定する前に、有効な SSL 証明書を保持していることを確認します。次のいずれかを行います。
-
AWS Certificate Manager (ACM) が AWS リージョンで使用可能である場合は、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/build
、arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678
などです。
HTTPS の設定と Elastic Beanstalk での証明書の使用の詳細については、「Elastic Beanstalk 環境の HTTPS の設定」を参照してください。
セッション
[セッションの維持が有効です] ボックスをオンまたはオフにして、スティッキーセッションを有効または無効にします。[Cookie の維持期間] を使用して、スティッキーセッションの有効期間を最大 1000000
秒までに設定します。[Load balancer ports (ロードバランサーポート)] リストで、デフォルトポリシー (AWSEB-ELB-StickinessPolicy
) が適用されるリスナーポートを選択します。
クロスゾーンロードバランサー
[複数のアベイラビリティーゾーンでの負荷分散が有効です] ボックスをオンまたはオフにして、クロスゾーン負荷分散を有効あるいは無効にします。
Connection Draining
[Connection Draining が有効です] ボックスをオンまたはオフにして、Connection Draining を有効または無効にします。[Connection Draining] を最大 3600
秒に設定します。
ヘルスチェック
次の設定を使用して、ロードバランサーのヘルスチェックを設定します。
-
[Health check path (ヘルスチェックパス)] - ロードバランサーがヘルスチェックリクエストを送信するパスです。パスを設定していない場合、ロードバランサーは、状態を確認するためにポート 80 での TCP 接続をするよう試みます。
-
[Timeout (タイムアウト)] - ヘルスチェックのレスポンスを待つ時間 (秒単位)。
-
[Interval (間隔)] - 個々のインスタンスのヘルスチェックの間隔 (秒単位)。間隔はタイムアウトより大きくする必要があります。
-
[Unhealthy threshold (非正常のしきい値)]、[Healthy threshold (正常のしきい値)] - Elastic Load Balancing がインスタンスのヘルス状態を変更する前に、ヘルスチェックに失敗または合格しなければならない回数。
注記
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 設定の名前空間
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