このドキュメントでは、アプリケーション ロードバランサとプロキシ ネットワーク ロードバランサで IPv6 トラフィックが処理される方法について説明します。これらのロードバランサはプロキシ ロードバランサです。つまり、受信クライアント接続はロードバランサで終端されます。ロードバランサは、新しい接続を開始してクライアント リクエストをバックエンドに転送します。ロードバランサのタイプに応じて、これらの接続のいずれかまたは両方で IPv6 を有効にできます。
ロードバランサで IPv6 を有効にすると、次のメリットがあります。
- マルチリージョン デプロイでは、単一のエニーキャスト IPv6 アドレスを使用します。マルチリージョン間で稼働しているアプリケーション インスタンスでも必要になるロードバランサの IPv6 アドレスは 1 つのみです。このため、DNS サーバーに存在する AAAA レコードは 1 つであり、複数の IPv6 アドレス間での負荷分散が不要になります。キャッシュ対象のアドレスは 1 つのみであるため、クライアントによる AAAA レコードのキャッシュが問題になることはありません。IPv6 アドレスに対するユーザー リクエストは、使用可能な容量を持つ、最も近い正常なバックエンドに自動的に負荷分散されます。
デュアルスタック デプロイを実行します。IPv6 と IPv4 の両方のクライアントに対応するには、IPv6 用に 1 つと、IPv4 用に 1 つの、2 つのロードバランサ IP アドレスを作成します。IPv4 クライアントは IPv4 アドレスに接続され、IPv6 クライアントは IPv6 アドレスに接続されます。次に、これらのクライアントは、使用可能な容量がある最も近い正常な IPv4 または IPv6 デュアルスタック バックエンドに自動的にロードバランスされます。デュアルスタック バックエンドをサポートするロードバランサを確認するには、表: バックエンド サービスとサポートされているバックエンド タイプをご覧ください。IPv6 転送ルールは無料で提供されているため、料金が発生するのは IPv4 転送ルールについてのみです。
HTTP、HTTPS、HTTP/2、TCP、SSL/TLS の各 IPv6 クライアント トラフィックが負荷分散されます。プロトコルのサポートは、使用しているロードバランサのタイプと転送ルール プロトコルによって異なります。
- 同一の IPv6 ロードバランサ アドレスを使用するリージョン間でのオーバーフロー。いずれか 1 つのリージョン内のバックエンドでリソースが不足するか異常が生じると、グローバル ロードバランサによって、ユーザーからのリクエストは使用可能なリソースがある 2 番目に近いリージョンに自動的に転送されます。最も近いリージョンでリソースが使用可能になると、グローバル ロード バランシングによって、そのリージョンを介した処理に戻されます。グローバル ロード バランシングでは、Network Service Tiers のうちプレミアム ティアを使用する必要があります。
ロードバランサのサポート
アプリケーション ロードバランサやプロキシ ネットワーク ロードバランサなどのプロキシベースのロードバランサの場合、クライアントからロードバランサへの接続と、ロードバランサからバックエンドへの 2 番目の接続は、相互に独立して構成できます。たとえば、バックエンドが IPv6 接続を処理できるデュアルスタック バックエンドである限り、ロードバランサはクライアントからの IPv4 トラフィックを受け入れ、接続を終端し、新しい IPv6 接続を介してロードバランサからバックエンドにリクエストを転送できます。
ロードバランサがクライアントからの IPv6 接続を受信できるようにするには、ロードバランサの転送ルールに IPv6 アドレスを使用する必要があります。ロードバランサからバックエンドへの後続の接続は、デフォルトで IPv4 を使用します。ただし、バックエンド サービスで IP アドレス選択ポリシー オプションを構成することで、特定のロードバランサで IPv6 を使用できます。
次の表に、すべてのプロキシベースのロードバランサでサポートされている接続タイプを示します。
ロードバランサ | クライアントからロードバランサへの接続 | ロードバランサからバックエンドへの接続 |
---|---|---|
グローバル外部アプリケーション ロードバランサ グローバル外部プロキシ ネットワーク ロードバランサ |
IPv4 接続と IPv6 接続の両方を終了できます。 | 次のいずれか。
|
従来のアプリケーション ロードバランサ 従来のプロキシ ネットワーク ロードバランサ |
IPv4 接続と IPv6 接続の両方を終了できます。 | IPv4 接続のみ |
リージョン外部アプリケーション ロードバランサ リージョン外部プロキシ ネットワーク ロードバランサ リージョン内部アプリケーション ロードバランサ リージョン内部プロキシ ネットワーク ロードバランサ クロスリージョン内部アプリケーション ロードバランサ クロスリージョン内部プロキシ ネットワーク ロードバランサ |
IPv4 のみ。IPv6 トラフィックはサポートされません。 | 次のいずれか。
|
GCE_VM_IP_PORT
エンドポイントを使用)のみをデュアルスタックとして構成できます。IPv6 終端の仕組み
IPv6 終端は、グローバル アプリケーション ロードバランサ、従来のアプリケーション ロードバランサ、プロキシ ネットワーク ロードバランサでサポートされています。これらのロードバランサに IPv6 終端を構成すると、次の図に示すように、バックエンドが IPv6 クライアントに対する IPv6 アプリケーションとして表示されます。
ユーザーが IPv6 経由でロードバランサに接続すると、次のように処理されます。
- IPv6 アドレスと転送ルールに従って、ロードバランサはユーザー接続を待機します。
- IPv6 クライアントは、IPv6 でロードバランサに接続します。
- ロードバランサはリバース プロキシとして機能し、IPv6 クライアントの接続を終端します。バックエンド サービスの IP アドレス選択ポリシーに基づいて、リクエストをバックエンドへの IPv4 または IPv6 接続に渡します。
- 逆の経路では、ロードバランサはバックエンドからレスポンスを受け取り、これを IPv6 接続に渡して元のクライアントに送り返します。
ロードバランサ転送ルールに IPv6 アドレスを割り当てる
外部ロードバランサを構成する場合は、1 つ以上の転送ルールを指定します。それぞれのルールには、外部に一般公開され、ルーティングされている IPv4 IP アドレスまたは IPv6 IP アドレス(あるいはその両方)を使用します。自分のサイトの DNS レコードでこの IP アドレスを使用できます。
転送ルールを作成するときは、プロジェクト用に予約されている静的 IP アドレスを使用するか、ルールを作成するときに転送ルールによって自動的に取得されるエフェメラル IP アドレスを使用します。静的 IP アドレスはプロジェクト用に予約され、意図的にリリースされるまで保持されます。転送ルールが存在している限り、エフェメラル アドレスはこの転送ルールに属します。転送ルールを削除すると、エフェメラル アドレスが解放され、Google Cloud のプールに戻されます。
ロードバランサに IPv4 アドレスと IPv6 アドレスの両方が必要な場合、IPv4 アドレスに関連付けられている転送ルールと、IPv6 アドレスに関連付けられている転送ルールの 2 つを作成できます。次に、両方の転送ルールを同じロードバランサに関連付けます。
IPv6 アドレス形式
Google Cloud は /64
IPv6 アドレス範囲を IPv6 転送ルールに割り当てます。Google Cloud CLI は IPv6 アドレスの下位 64 ビットを 0 に設定してリストしますが、ロードバランサは全範囲でトラフィックを受け入れます。そのため、クライアントが接続する IPv6 サーバーの IP アドレスによっては、X-Forwarded-For
ヘッダー内の割り当て範囲に、他のロードバランサの IPv6 アドレスが表示されることもあります。
IPv6 アドレスの形式を設定する場合、Google Cloud は RFC 5952 のセクション 4 の推奨事項を遵守します。
外部アプリケーション ロードバランサの IPv6 終端のクライアント IP ヘッダー
ロードバランサがクライアントからの IPv6 接続を中継し、IPv4 接続でバックエンドに送信すると、元のソース IP アドレスは、ロードバランサの IP アドレスに置き換えられます。ただし、ロギング、意思決定などの目的で、バックエンドは多くの場合、元のソース IP アドレスを把握しておく必要があります。Google Cloud では、元の IPv6 クライアントの IP アドレスを含む HTTP ヘッダーをバックエンドに伝播します。
IPv6 の HTTP ヘッダーは IPv4 の HTTP ヘッダーに類似しています。リクエストの形式は次のとおりです。
X-Forwarded-For: CLIENT_IP_ADDRESS, GLOBAL_FORWARDING_RULE_EXTERNAL_IP_ADDRESSES
最後の要素は、ロードバランサの 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
2001:db8:abcd:1::1234
は、クライアントの IPv6 アドレスです。2607:f8b0:4005:801::200e
は、外部アプリケーション ロードバランサの IPv6 アドレスです。
IPv4 のみからデュアルスタックに変換する
IPv4 のみ(シングルスタック)を使用するロードバランサ リソースを、IPv4 と IPv6(デュアルスタック)に変換できます。ロードバランサ リソースを更新すると、IPv6 トラフィックをバックエンドに自動的に転送できます。
ロードバランサのリソースとバックエンドをデュアルスタックに変換する手順については、次のドキュメントをご覧ください。
ロードバランサ | ドキュメント |
---|---|
グローバル外部アプリケーション ロードバランサ クロスリージョン内部アプリケーション ロードバランサ リージョン外部アプリケーション ロードバランサ リージョン内部アプリケーション ロードバランサ |
アプリケーション ロードバランサを IPv6 に変換する |
グローバル外部プロキシ ネットワーク ロードバランサ クロスリージョン内部プロキシ ネットワーク ロードバランサ リージョン外部プロキシ ネットワーク ロードバランサ リージョン内部プロキシ ネットワーク ロードバランサ |
プロキシ ネットワーク ロードバランサを IPv6 に変換する |
料金
IPv6 終端の転送ルールに追加料金はかかりません。一時的な IPv6 アドレスについては、課金されません。予約済みの IPv6 アドレスは、それらが使用されているかどうかに関係なく、既存のレートで課金されます。それ以外の場合、IPv6 ロード バランシングの料金は IPv4 ロード バランシングの料金と同じです。ロード バランシング料金の詳細については、ネットワーク料金をご覧ください。
制限事項
- 従来のプロキシ ネットワーク ロードバランサと従来のアプリケーション ロードバランサはデュアルスタック バックエンドをサポートしていません。IPv6 トラフィックはロードバランサによって終端され、IPv4 接続を介してバックエンドにプロキシされます。
リージョン外部アプリケーション ロードバランサ、リージョン内部アプリケーション ロードバランサ、リージョン内部プロキシ ネットワーク ロードバランサ、 クロスリージョン内部プロキシ ネットワーク ロードバランサ、クロスリージョン内部アプリケーション ロードバランサ、 リージョン外部プロキシ ネットワーク ロードバランサは、IPv6 フロントエンドをサポートしていません。上り(内向き)IPv4 トラフィックは、IPv4 または IPv6 接続を介して IPv4 と IPv6(デュアル スタック)バックエンドにプロキシされます。
デュアルスタック(IPv4 と IPv6)バックエンドをサポートするのは、
GCE_VM_IP_PORT
エンドポイントを使用する VM インスタンス グループ バックエンドとゾーン ネットワーク エンドポイント グループ(NEG)のみです。