Elastic Load Balancing
クラシックロードバランサー

Classic Load Balancer のリスナー

Elastic Load Balancing の使用を開始する前に、Classic Load Balancerに 1 つ以上のリスナーを設定する必要があります。リスナーとは接続リクエストをチェックするプロセスです。リスナーは、フロントエンド (クライアントからロードバランサー) 接続用のプロトコルとポート、およびバックエンド (ロードバランサーからバックエンドインスタンス) 接続用のプロトコルとポートを使用して設定します。

Elastic Load Balancing は次のプロトコルをサポートしています。

  • HTTP

  • HTTPS (セキュア HTTP)

  • TCP

  • SSL (セキュア TCP)

HTTPS プロトコルは、HTTP レイヤー経由のセキュアな接続を確立するために SSL プロトコルを使用します。SSL プロトコルは、TCP レイヤー経由のセキュアな接続を確立する場合にも使用することができます。

フロントエンド接続が TCP または SSL を使用している場合、バックエンド接続は TCP または SSL を使用できます。フロントエンド接続が HTTP または HTTPS を使用している場合、バックエンド接続は HTTP または HTTPS を使用できます。

バックエンドインスタンスは、ポート 1~65535 をリッスンできます。

ロードバランサーがリッスンできるポートは次のとおりです。

  • [EC2-VPC] 1~65535

  • [EC2-Classic] 25、80、443、465、587、1024~65535

プロトコル

一般的なウェブアプリケーション通信は、ハードウェアとソフトウェアの複数のレイヤーを通過します。各レイヤーは固有の通信機能を提供します。通信機能のコントロールはあるレイヤーから次のレイヤーへと順番に渡されます。開放型システム間相互接続 (OSI) は、これらのレイヤーでプロトコルと呼ばれる通信の標準形式を実装するためのモデルフレームワークを定義します。詳細については、Wikipedia の「OSI model」を参照してください。

Elastic Load Balancing を使用する場合、レイヤー 4 とレイヤー 7 についての基本的な理解が必要です。レイヤー4はトランスポートレイヤーで、ロードバランサーを介したクライアントとバックエンドインスタンスとの間の Transmission Control Protocol (TCP) 接続を記述します。レイヤー4はロードバランサーで設定可能な一番下のレベルです。レイヤー7はアプリケーションレイヤーで、クライアントからロードバランサー、およびロードバランサーからバックエンドインスタンスへの Hypertext Transfer Protocol (HTTP) および HTTPS (セキュア HTTP) 接続の使用について記述します。

Secure Sockets Layer (SSL) プロトコルは、インターネットなどの安全性が低いネットワーク上での機密データの暗号化に主に使用されます。SSL プロトコルは、クライアントとバックエンドサーバーの間のセキュアな接続を確立し、クライアントとバックエンドサーバーの間で受け渡しされるすべてのデータのプライバシーと完全性を保証します。

TCP/SSL プロトコル

フロントエンド接続とバックエンド接続の両方に TCP (レイヤー 4) を使用する場合、ロードバランサーはヘッダーを変更せずにバックエンドインスタンスにリクエストを転送します。ロードバランサーは、リクエストを受け取った後、リスナー設定で指定されたポートを使ってバックエンドインスタンスに対する TCP 接続を開こうと試みます。

ロードバランサーはクライアントとバックエンドインスタンスの間のトラフィックをインターセプトするため、バックエンドインスタンスのアクセスログには、発信元クライアントの IP アドレスでなく、ロードバランサーの IP アドレスが含まれています。Proxy Protocol を有効にして、発信元 IP アドレス、送信先 IP アドレス、ポート番号などのクライアントの接続情報が含まれるヘッダーが追加されるようにできます。これにより、ヘッダーがリクエストの一部としてバックエンドインスタンスに送信されます。接続情報を取得するには、リクエストの 1 行めを解析します。詳細については、「Classic Load Balancer の Proxy Protocol のサポートを設定する」を参照してください。

この設定を使用すると、スティッキーセッション用の Cookie や X-Forwarded ヘッダー用の Cookie は受け取りません。

HTTP/HTTPS プロトコル

フロントエンド接続とバックエンド接続の両方に HTTP (レイヤー 7) を使用する場合、ロードバランサーはリクエストのヘッダーを解析して接続を終了した後、バックエンドインスタンスにリクエストを送信します。

HTTP/HTTPS ロードバランサーの背後にあるあらゆる登録された正常なインスタンスについて、Elastic Load Balancing は 1 つ以上の TCP 接続を開いて維持します。これらの接続によって、HTTP/HTTPS リクエストを受信できる接続が常に確立されていることが保証されます。

HTTP リクエストと HTTP レスポンスは、ヘッダーフィールドを使用して HTTP メッセージに関する情報を送信します。Elastic Load Balancing では X-Forwarded-For ヘッダーがサポートされます。ロードバランサーはクライアント/サーバー間のトラフィックをインターセプトするので、サーバーアクセスログにはロードバランサーの IP アドレスのみが含まれます。クライアントの IP アドレスを確認するには、X-Forwarded-For リクエストヘッダーを使用します。詳細については、「X-Forwarded-For」を参照してください。

HTTP/HTTPS を使用するときは、ロードバランサーでスティッキーセッションを有効にできます。スティッキーセッションは、ユーザーのセッションを特定のバックエンドインスタンスに結び付けます。これにより、セッション中にそのユーザーから来たリクエストをすべて同じバックエンドインスタンスに送信することができます。詳細については、「Classic Load Balancer のスティッキーセッションを設定する」を参照してください。

ロードバランサーはすべての HTTP 拡張機能をサポートしているわけではありません。予期しないメソッド、応答コード、またはその他の標準でない HTTP 1.0/1.1 実装のためにロードバランサーがリクエストを終了できない場合、TCP リスナーを使用する必要がある場合もあります。

HTTPS/SSL リスナー

以下のセキュリティ機能を持つロードバランサーを作成できます。

SSL サーバー証明書

フロントエンド接続に HTTPS または SSL を使用する場合、ロードバランサーに X.509 証明書 (SSL サーバー証明書) をデプロイする必要があります。ロードバランサーは、クライアントからのリクエストをバックエンドインスタンスに送信する前に、これを復号化します (SSL ターミネーションといいます)。詳細については、「Classic Load Balancer の SSL/TLS 証明書」を参照してください。

ロードバランサーによる SSL ターミネーション (SSL オフローディングと呼ばれる) の処理を希望しない場合には、フロントエンド接続とバックエンド接続のどちらでも TCP を使用して登録されたインスタンスに証明書をデプロイし、リクエストを処理させることができます。

SSL ネゴシエーション

Elastic Load Balancing には、クライアントとロードバランサーの間に接続が確立されたときに SSL ネゴシエーションに使用される定義済み SSL ネゴシエーション設定があります。SSL ネゴシエーション設定は幅広いクライアントとの互換性を提供し、暗号 という強力な暗号アルゴリズムを使用します。ただし、ネットワーク上のすべてのデータを暗号化する必要があるようなユースケースでは、特定の暗号しか使用できない場合があります。一部のセキュリティコンプライアンス基準 (PCI、SOX など) では、セキュリティの基準を確実に満たすために、クライアントからの特定のプロトコルと暗号のセットを要求する場合があります。そのような場合、固有の要件に応じてカスタム SSL ネゴシエーション設定を作成できます。暗号とプロトコルは 30 秒以内に有効になります。詳細については、「Classic Load Balancers の SSL ネゴシエーション設定」を参照してください。

バックエンドサーバー認証

バックエンド接続に HTTPS あるいは SSL 接続を使用する場合には、登録されたインスタンスに認証を有効化できます。そして、この認証プロセスを使用して、インスタンスが暗号化された通信のみを受け入れ、それぞれの登録インスタンスに適切なパブリックキーが存在することを確認できます。

詳細については、「バックエンドサーバー認証の設定」を参照してください。

このページの内容: