HTTP(S) 負荷分散、SSL プロキシ負荷分散、TCP プロキシ負荷分散の IPv6 終端

Google Cloud Platform(GCP)の HTTP(S)SSL プロキシTCP プロキシの負荷分散では、IPv6 クライアントもサポートされています。ロードバランサは、ユーザーからの IPv6 接続を受け入れ、インスタンスに対してこの接続を送信します。

概要

HTTP(S) ロードバランサ、SSL プロキシ ロードバランサ、TCP プロキシ ロードバランサに対し、IPv4 アドレスと IPv6 アドレスの両方を設定できます。

グローバル IPv6 負荷分散(クリックで拡大)
グローバル IPv6 負荷分散(クリックで拡大)

HTTP(S) 負荷分散、SSL プロキシ負荷分散、TCP プロキシ負荷分散の IPv6 終端機能により、IPv6 ユーザーからのリクエストを処理し、IPv4 経由でバックエンドに送信できます。

  • マルチリージョン デプロイの場合は、単一の Anycast IPv6 アドレスを使用します。複数のリージョンにわたって実行しているアプリケーション インスタンスに対して、必要なロードバランサ IPv6 アドレスは 1 つのみです。つまり、DNS サーバーには単一の AAAA レコードがあり、複数の IPv6 アドレス間で負荷を分散する必要はありません。キャッシュするアドレスは 1 つしかないため、クライアントによる AAAA レコードのキャッシュは問題にはなりません。IPv6 アドレスに対するユーザー リクエストは、使用可能な容量を持つ、最も近い正常なインスタンスに自動的に負荷分散されます。
  • HTTP、HTTPS、HTTP/2、TCP、および SSL/TLS の各 IPv6 クライアント トラフィックが負荷分散されます。
  • 単一の IPv6 ロードバランサ アドレスを持つリージョンにわたるオーバーフロー: 1 つのリージョン内のインスタンスでリソースが不足するか、異常が生じると、グローバル ロードバランサによって、使用可能なリソースを持つ、次の最も近いリージョンに、ユーザーからのリクエストが自動的に送られます。最も近いリージョンに使用可能なリソースがある場合、グローバル負荷分散はその領域を介してサービスに戻ります。
  • デュアル スタックの実行: IPv6 と IPv4 の両方のクライアントに対応するには、1 つは IPv6 用、もう 1 つは IPv4 用として、2 つのロードバランサ IP リソースを作成し、両方を同じ IPv4 アプリケーション インスタンスに関連付けます。IPv4 クライアントは IPv4 アドレスに接続され、IPv6 クライアントは IPv6 アドレスに接続されます。次に、これらのクライアントは、使用可能な容量を持つ、最も近い正常なインスタンスに自動的に負荷分散されます。IPv6 転送ルールは無償で提供されているため、IPv4 転送ルールについてのみ支払います。
    IPv4 トラフィックと IPv6 トラフィックを同じバックエンド インスタンスに送信する(クリックで拡大)
    IPv4 トラフィックと IPv6 トラフィックを同じバックエンド インスタンスに送信する(クリックで拡大)

IPv6 終端とプロキシ

ロードバランサに IPv6 終端を設定すると、IPv6 クライアントにはバックエンド インスタンスが IPv6 アプリケーションであるとみなされます。

負荷分散の IPv6 終端(クリックして拡大)
負荷分散の IPv6 終端(クリックして拡大)

ユーザーが IPv6 経由でロードバランサに接続すると、次のように処理されます。

  1. IPv6 アドレスと転送ルールに従って、ロードバランサはユーザー接続を待機します。
  2. IPv6 クライアントは、IPv6 でロードバランサに接続します。
  3. ロードバランサはリバース プロキシとして機能し、IPv6 クライアントの接続を終端します。リクエストは IPv4 接続を経由してバックエンドに送られます。
  4. 逆の経路では、ロードバランサはバックエンドから IPv4 レスポンスを受け取り、これを IPv6 接続経由で元のクライアントに送り返します。

ロードバランサ転送ルールに IPv6 アドレスを割り当てる

HTTP(S) ロードバランサ、SSL プロキシ ロードバランサ、TCP プロキシ ロードバランサを設定する場合は、1 つ以上のグローバル転送ルールを指定します。それぞれのルールには、外部に一般公開され、ルーティングされている IPv4 アドレスまたは IPv6 アドレスを使用します。自分のサイトの DNS レコードでこの IP アドレスを使用できます。

転送ルールを作成するときは、プロジェクト用に予約されている静的 IP アドレスを使用するか、転送ルールによって、ルールを作成するときのエフェメラル IP アドレスを自動的に取得することができます。静的 IP アドレスはプロジェクト用に予約され、意図的にリリースされるまで保持されます。転送ルールが存在している限り、エフェメラル アドレスはこの転送ルールに属します。転送ルールを削除すると、エフェメラル アドレスは GCP プールに戻されます。

ロードバランサに IPv4 アドレスと IPv6 アドレスの両方が必要な場合、IPv4 アドレスに関連付けられている転送ルールと、IPv6 アドレスに関連付けられている転送ルールの 2 つを作成できます。次に、両方の転送ルールを同じロードバランサに関連付けます。

HTTP(S) 負荷分散で IPv6 終端されるクライアントの IP ヘッダー

ロードバランサがクライアントからの IPv6 接続を中継し、IPv4 接続でバックエンドに送信すると、元のソース IP アドレスは、ロードバランサの IP アドレスに置き換えられます。ただし、ロギング、意思決定などの目的で、バックエンドに元のソース IP を知らせておくほうがよい場合があります。GCP では、元の IPv6 クライアントの IP を含む HTTP ヘッダーをバックエンドに伝搬します。

IPv6 の HTTP ヘッダーは IPv4 の HTTP ヘッダーに類似しています。リクエストの形式は次のとおりです。

  • X-Forwarded-For: <クライアント IP>, <グローバル転送ルール外部 IP>
  • 最後の要素はロードバランサの IP を示します。最後から 2 番目の要素は、ロードバランサによって提供されるクライアント IP を示します。リクエストをロードバランサに送信する前に、クライアントまたは介在するプロキシが他の X-Forwarded-For ヘッダーを追加する場合は、X-Forwarded-For ヘッダーに他の要素が含まれることがあります。

次に X-Forwarded-For ヘッダーの例を示します。

X-Forwarded-For: 2001:db8:abcd:1::1234, 2607:f8b0:4005:801::200e

最初(最後から 2 番目)のアドレスは、クライアントの IPv6 アドレスです。2 番目のアドレスは、HTTP(S) ロードバランサの IPv6 アドレスです。

料金

IPv6 終端の転送ルールに追加料金はかかりません。一時的な IPv6 アドレスについては、課金されません。予約済みの IPv6 アドレスは、それらが使用されているかどうかに関係なく、既存のレートで課金されます。その他の料金は、IPv4 負荷分散と同じです。負荷分散の料金の詳細については、こちらをご覧ください。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント