Elastic Load Balancing
Application Load Balancer

Application Load Balancer

ロードバランサーは、クライアントにとって単一の通信先として機能します。クライアントはロードバランサーにリクエストを送信し、ロードバランサーは複数のアベイラビリティーゾーンにあるターゲット (EC2 インスタンスなど) にそれらのリクエストを送信します。ロードバランサーを設定するには、ターゲットグループを作成し、ターゲットグループにターゲットを登録します。さらに、リスナーを作成してクライアントからの接続リクエストがないかチェックし、リスナールールを作成してリクエストをクライアントから 1 つ以上のターゲットグループ内のターゲットにルーティングします。

詳細については、Elastic Load Balancing ユーザーガイドの「Elastic Load Balancing の仕組み」を参照してください。

ロードバランサーのサブネット

Application Load Balancer を作成するときには、2 つ以上のアベイラビリティーゾーンを有効にする必要があります。アベイラビリティーゾーンを有効にするには、そのアベイラビリティーゾーンからサブネットを 1 つ指定します。

ロードバランサーが正しくスケーリングできるように、ロードバランサー毎に各サブネットの CIDR ブロックを、最低でも /27 ビットマスク (例: 10.0.0.0/27) にし、少なくとも 8 個の空き IP アドレスを用意してください。ロードバランサーはこれらの IP アドレスを使用して、ターゲットとの接続を確立します。

ロードバランサーのセキュリティグループ

セキュリティグループは、ロードバランサーとの間で許可されているトラフィックを制御するファイアウォールとして機能します。インバウンドトラフィックとアウトバウンドトラフィックの両方を許可するポートとプロトコルを選択できます。

ロードバランサーのセキュリティグループに関連付けられたセキュリティグループのルールは、リスナーポートとヘルスチェックポートの両方における両方向のトラフィックを許可する必要があります。リスナーをロードバランサーに追加するとき、またはターゲットグループのヘルスチェックポートを更新するときは必ず、セキュリティグループルールを見直し、新しいポートで両方向のトラフィックが許可されていることを確認する必要があります。詳細については、「推奨ルール」を参照してください。

ロードバランサーの状態

ロードバランサーの状態は次のいずれかです。

provisioning

ロードバランサーはセットアップ中です。

active

ロードバランサーは完全にセットアップされており、トラフィックをルーティングする準備ができています。

failed

ロードバランサークラウドをセットアップできませんでした。

ロードバランサーの属性

ロードバランサーの属性は以下のとおりです。

access_logs.s3.enabled

Amazon S3 に保存されたアクセスログが有効かどうかを示します。デフォルト: false

access_logs.s3.bucket

アクセスログの S3 バケットの名前。この属性は、アクセスログが有効になっている場合は必須です。詳細については、「バケットのアクセス許可」を参照してください。

access_logs.s3.prefix

S3 バケットの場所のプレフィックス。

deletion_protection.enabled

削除保護が有効化されているかどうかを示します。デフォルト: false

idle_timeout.timeout_seconds

アイドルタイムアウト値 (秒単位)。デフォルト値は 60 秒です。

routing.http.drop_invalid_header_fields.enabled

無効なヘッダーフィールドを持つ HTTP ヘッダーがロードバランサーによって削除されるか (true)、ターゲットにルーティングされるか (false) を示します。デフォルト: false

routing.http2.enabled

HTTP/2 が有効化されているかどうかを示します。デフォルト: true

IP アドレスタイプ

インターネット向けロードバランサーを作成するとき、またはそれがアクティブになった後は、その IP アドレスタイプを設定できます。内部ロードバランサーは、IPv4 アドレスを使う必要があります。

ロードバランサーの IP アドレスタイプを次に示します。

ipv4

ロードバランサーは IPv4 アドレス (例: 192.0.2.1) のみをサポートします。

dualstack

ロードバランサーは IPv4 と IPv6 アドレスの両方 (例: 2001:0db8:85a3:0:0:8a2e:0370:7334) をサポートします。

IPv4 アドレスを使用してロードバランサーと通信するクライアントは A レコードを解決し、IPv6 アドレスを使用してロードバランサーと通信するクライアントは AAAA レコードを解決します。ただし、クライアントとロードバランサーとの通信方法に関係なく、ロードバランサーは IPv4 アドレスを使用してターゲットと通信します。

詳細については、「Application Load Balancer の IP アドレスタイプ」を参照してください。

削除保護

ロードバランサーが誤って削除されるのを防ぐため、削除保護を有効にできます。デフォルトでは、ロードバランサーで削除保護が無効になっています。

ロードバランサーの削除保護を有効にした場合、ロードバランサーを削除する前に無効にする必要があります。

コンソールを使用して削除保護を有効にするには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [Load Balancers] を選択します。

  3. ロードバランサーを選択します。

  4. [Description] タブで、[Edit attributes] を選択します。

  5. [ロードバランサー属性の編集] ページで、[削除保護] の [有効] を選択し、[保存] を選択します。

  6. [Save] を選択します。

コンソールを使用して削除保護を無効にするには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [Load Balancers] を選択します。

  3. ロードバランサーを選択します。

  4. [Description] タブで、[Edit attributes] を選択します。

  5. [ロードバランサー属性の編集] ページで、[削除保護] の [有効] の選択を解除し、[保存] を選択します。

  6. [Save] を選択します。

AWS CLI を使用して削除保護を有効または無効にするには

deletion_protection.enabled 属性を指定して modify-load-balancer-attributes コマンドを使用します。

接続のアイドルタイムアウト

クライアントがロードバランサーを通じて行うリクエストごとに、ロードバランサーは 2 つの接続を維持します。フロントエンド接続とはクライアントとロードバランサー間の接続を意味し、バックエンド接続とはロードバランサーとターゲット間の接続を意味します。ロードバランサーは、指定された期間にフロントエンド接続でデータが送信されない場合にトリガーされるアイドルタイムアウトを管理します。アイドルタイムアウトが経過するまでデータが送受信されなかった場合、ロードバランサーは接続を閉じます。

デフォルトでは、Elastic Load Balancing はアイドルタイムアウト値を 60 秒に設定します。したがって、リクエストが転送中にターゲットが少なくとも 60 秒ごとにデータを送信しない場合、ロードバランサーはフロントエンド接続を閉じることができます。ファイルのアップロードなどの長いオペレーションで、完了までの時間を確保するため、各アイドルタイムアウト期間が経過するまでに少なくても 1 バイトのデータを送信し、必要に応じてアイドルタイムアウトの長さを増やします。

バックエンド接続では EC2 インスタンスに HTTP キープアライブオプションを有効にすることが推奨されます。EC2 インスタンスのウェブサーバー設定で HTTP キープアライブを有効にできます。HTTP キープアライブを有効にすると、ロードバランサーはキープアライブのタイムアウト期間が終了するまで、バックエンド接続を再利用できます。また、アプリケーションのアイドルタイムアウトは、ロードバランサーに設定されたアイドルタイムアウトよりも大きな値に設定することをお勧めします。

コンソールを使用してアイドルタイムアウト値を更新するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [Load Balancers] を選択します。

  3. ロードバランサーを選択します。

  4. [Description] タブで、[Edit attributes] を選択します。

  5. [Edit load balancer attributes] ページで、[Idle timeout] の値を秒単位で入力します。有効な範囲は 1 ~ 4000 です。デフォルト値は 60 秒です。

  6. [Save] を選択します。

AWS CLI を使用してアイドルタイムアウト値を更新するには

idle_timeout.timeout_seconds 属性を指定して modify-load-balancer-attributes コマンドを使用します。

Application Load Balancer および AWS WAF

Application Load Balancer で AWS WAF を使用して、ウェブアクセスコントロールリスト (ウェブ ACL) のルールに基づいてリクエストを許可またはブロックできます。詳細については、AWS WAF 開発者ガイドの「ウェブ ACL の使用」を参照してください。

ロードバランサーが AWS WAF と統合されているかどうかを確認するには、AWS マネジメントコンソールでロードバランサーを選択し、[統合されたサービス] タブを選択します。