VM インスタンス グループのバックエンドを使用してグローバル外部プロキシ ネットワーク ロードバランサ(TCP プロキシ)を設定する

Google Cloud のグローバル外部プロキシ ネットワーク ロードバランサを使用すると、世界中のユーザーに対して単一の IP アドレスを使用できます。グローバル外部プロキシ ネットワーク ロードバランサは、ユーザーに最も近いバックエンド インスタンスにトラフィックを自動的にルーティングします。

このページでは、ターゲット TCP プロキシと VM インスタンス グループのバックエンドを使用してグローバル外部プロキシ ネットワーク ロードバランサを設定する手順について説明します。始める前に、外部プロキシ ネットワーク ロードバランサの概要でこれらのロードバランサの機能の詳細を確認してください。

設定の概要

この例では、リージョン A とリージョン B の 2 つのリージョンに存在するサービスに外部プロキシ ネットワーク ロードバランサを設定する方法を示しています。この例のサービスは、ポート 110 で応答するように構成された Apache サーバーのセットです。多くのブラウザではポート 110 を使用できないため、テスト セクションでは curl を使用します。

この例では、以下の構成を行います。

  1. 2 つのリージョンに分散する 4 つのインスタンス
  2. インスタンスが含まれるインスタンス グループ
  3. インスタンスの正常性をチェックするヘルスチェック
  4. インスタンスをモニタリングして構成された使用量を超えないようにするバックエンド サービス
  5. ターゲット TCP プロキシ
  6. 外部静的 IPv4 アドレスと、ユーザー トラフィックをプロキシに送信する転送ルール
  7. 外部静的 IPv6 アドレスと、ユーザー トラフィックをプロキシに送信する転送ルール
  8. ロードバランサとヘルスチェッカーからインスタンスへのトラフィックの到達を許可するファイアウォール ルール

ロードバランサが構成されたら、構成をテストします。

権限

このガイドに進むには、プロジェクト内でインスタンスを作成してネットワークを変更できる必要があります。そのためにはプロジェクトのオーナーまたは編集者であるか、または次の Compute Engine IAM のロールをすべて持っている必要があります。

タスク 必要な役割
ネットワーク、サブネット、ロードバランサ コンポーネントの作成 ネットワーク管理者
ファイアウォール ルールの追加と削除 セキュリティ管理者
インスタンスの作成 Compute インスタンス管理者

詳細については、次のガイドをご覧ください。

ネットワークとサブネットを構成する

サンプルのネットワークとサブネットを作成する手順は次のとおりです。

コンソール

IPv4 トラフィックと IPv6 トラフィックの両方をサポートするには、次の操作を行います。

  1. Google Cloud コンソールの [VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  2. [VPC ネットワークを作成] をクリックします。

  3. ネットワークの名前を入力します。

  4. 省略可: このネットワークのサブネットで内部 IPv6 アドレス範囲を構成する場合は、次の手順を完了します。

    1. [VPC ネットワーク ULA の内部 IPv6 範囲] で、[有効] を選択します。
    2. [内部 IPv6 範囲の割り当て] で、[自動] または [手動] を選択します。

      [手動] を選択した場合は、fd20::/20 の範囲内の /48 の範囲を入力します。範囲が使用されている場合は、別の範囲を指定するように求めるプロンプトが表示されます。

  5. [サブネット作成モード] で [カスタム] をクリックします。

  6. [新しいサブネット] セクションで、次のフィールドを構成します。

    1. [名前] フィールドに、サブネットの名前を入力します。
    2. [リージョン] フィールドでリージョンを選択します。
    3. [IP スタックタイプ] には、[IPv4 と IPv6(デュアルスタック)] を選択します。
    4. [IP アドレス範囲] フィールドに IP アドレス範囲を入力します。これはサブネットのプライマリ IPv4 範囲です。

      サブネットの IPv4 アドレス範囲は構成できますが、サブネットの IPv6 アドレスの範囲は選択できません。Google では、固定サイズ(/64)の IPv6 CIDR ブロックを提供しています。

    5. [IPv6 アクセスタイプ] で [外部] を選択します。

  7. [完了] をクリックします。

  8. 別のリージョンにサブネットを追加するには、[サブネットを追加] をクリックして、前の手順を繰り返します。

  9. [作成] をクリックします。

IPv4 トラフィックのみをサポートするには、次の操作を行います。

  1. Google Cloud コンソールの [VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  2. [VPC ネットワークを作成] をクリックします。

  3. [名前] フィールドに、新しいネットワークの名前を入力します。

  4. [サブネット作成モード] で [カスタム] をクリックします。

  5. [新しいサブネット] セクションで、次のように構成します。

    1. [名前] フィールドに、サブネットの名前を入力します。
    2. [リージョン] フィールドでリージョンを選択します。
    3. [IP スタックタイプ] で [IPv4(シングルスタック)] を選択します。
    4. [IP アドレス範囲] フィールドに、サブネットのプライマリ IPv4 範囲を入力します。
  6. [完了] をクリックします。

  7. 別のリージョンにサブネットを追加するには、[サブネットを追加] をクリックして、前の手順を繰り返します。

  8. [作成] をクリックします。

gcloud

  1. カスタムモードの VPC ネットワークを作成します。

    gcloud compute networks update NETWORK \
        [ --enable-ula-internal-ipv6 [ --internal-ipv6-range=ULA_IPV6_RANGE ]] \
        --subnet-mode=custom
    
  2. ネットワーク内に、バックエンドのサブネットを作成します。

    IPv4 トラフィックと IPv6 トラフィックの場合は、次のコマンドを使用してサブネットを更新します。

    gcloud compute networks subnets update SUBNET \
       --stack-type=IPV4_IPv6 \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --region=REGION_A
    
    gcloud compute networks subnets update SUBNET_B \
       --stack-type=IPV4_IPv6 \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --region=REGION_B
    

    IPv4 トラフィックのみの場合は、次のコマンドを使用します。

    gcloud compute networks subnets update SUBNET \
       --network=NETWORK \
       --stack-type=IPV4_ONLY \
       --range=10.1.2.0/24 \
       --region=REGION_A
    
    gcloud compute networks subnets update SUBNET_B \
       --stack-type=IPV4_ONLY \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --region=REGION_B
    

次のように置き換えます。

  • NETWORK: VPC ネットワークの名前

  • ULA_IPV6_RANGE: Google が内部 IPv6 サブネット範囲に使用する fd20::/20 範囲内の /48 プレフィックス。--internal-ipv6-range フラグを使用しない場合は、Google によってネットワークの /48 プレフィックスが選択されます。

  • SUBNET: サブネットの名前

  • REGION_A または REGION_B: リージョンの名前

インスタンス グループのバックエンドを構成する

このセクションでは、基本的なインスタンス グループを作成し、それらにインスタンスを追加して、それらのインスタンスをヘルスチェックとともにバックエンド サービスに追加する方法を説明します。通常、本番環境システムではインスタンス テンプレートに基づいてマネージド インスタンス グループを使用しますが、この構成では初期テストを速やかに行うことができます。

インスタンスの構成

テスト目的で、4 つのインスタンスに Apache をインストールしてから、2 つのインスタンス グループを作成して各グループにインスタンスを 2 つずつ含めます。通常、外部プロキシ ネットワーク ロードバランサは HTTP トラフィックには使用されませんが、Apache ソフトウェアはテストによく使用されます。

この例では、インスタンスが tcp-lb タグで作成されます。このタグは、後でファイアウォール ルールによって使用されます。

Console

インスタンスの作成

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. [インスタンスを作成] をクリックします。

  3. [名前] を vm-a1 に設定します。

  4. [リージョン] を REGION_A に設定します。

  5. [ゾーン] を ZONE_A に設定します。

  6. [詳細オプション] をクリックします。

  7. [ネットワーキング] をクリックして次のフィールドを構成します。

    • [ネットワーク タグ] に「tcp-lb,allow-health-check-ipv6」と入力します。

    IPv4 トラフィックと IPv6 トラフィックの両方をサポートするには、次の操作を行います。

    1. [ネットワーク インターフェース] セクションで、[編集] をクリックして、次の変更を行います。
      • ネットワーク: NETWORK
      • サブネット: SUBNET
      • IP スタックタイプ: IPv4 と IPv6(デュアルスタック)
    2. [完了] をクリックします。
  8. [管理] をクリックします。[起動スクリプト] フィールドに次のスクリプトを入力します。

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | sudo tee /var/www/html/index.html
  9. [作成] をクリックします。

  10. 同じ設定で vm-a2 を作成します。ただし、[起動スクリプト] フィールドには、次のスクリプトを入力してください。

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | sudo tee /var/www/html/index.html

  11. 同じ設定で vm-b1 を作成します。ただし [リージョン] は REGION_B に設定し、[ゾーン] は ZONE_B に設定してください。[起動スクリプト] フィールドに次のスクリプトを入力します。

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | sudo tee /var/www/html/index.html

  12. 同じ設定で vm-b2 を作成します。ただし [リージョン] は REGION_B に設定し、[ゾーン] は ZONE_B に設定してください。[起動スクリプト] フィールドに次のスクリプトを入力します。

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | sudo tee /var/www/html/index.html

gcloud

  1. ゾーン ZONE_Avm-a1 を作成します

    gcloud compute instances create vm-a1 \
       --image-family debian-10 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_A \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    
  2. ゾーン ZONE_Avm-a2 を作成します

    gcloud compute instances create vm-a2 \
       --image-family debian-10 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_A \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    
  3. ゾーン ZONE_Bvm-b1 を作成します

    gcloud compute instances create vm-b1 \
       --image-family debian-10 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_B \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    
  4. ゾーン ZONE_Bvm-b2 を作成します

    gcloud compute instances create vm-b2 \
       --image-family debian-10 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_B \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    

インスタンス·グループを作成する

このセクションでは、各ゾーンにインスタンス グループを作成し、インスタンスを追加します。

コンソール

  1. Google Cloud コンソールの [インスタンス グループ] ページに移動します。

    [インスタンス グループ] に移動

  2. [インスタンス グループを作成] をクリックします。

  3. [新しい非マネージド インスタンス グループ] をクリックします。

  4. [名前] を instance-group-a に設定します。

  5. [ゾーン] を ZONE_A に設定します。

  6. [ポート マッピング] で、[ポートを追加] をクリックします。ロードバランサは、名前付きポートを介してインスタンス グループにトラフィックを送信します。名前付きポートを作成し、受信トラフィックを特定のポート番号にマッピングします。

    1. [ポート名] を tcp110 に設定します。
    2. [ポート番号] を 110 に設定します。
  7. [VM インスタンス] で、vm-a1vm-a2 を選択します。

  8. その他の設定はそのままにします。

  9. [作成] をクリックします。

  10. 手順を繰り返します。ただし、次の値を設定してください。

    • 名前: instance-group-b
    • リージョン: REGION_B
    • ゾーン: ZONE_B
    • ポート名: tcp110
    • ポート番号: 110
    • インスタンス: vm-b1vm-b2

gcloud

  1. instance-group-a インスタンス グループを作成します。

    gcloud compute instance-groups unmanaged create instance-group-a \
       --zone ZONE_A
    
  2. インスタンス グループの名前付きポートを作成します。

    gcloud compute instance-groups set-named-ports instance-group-a \
       --named-ports tcp110:110 \
       --zone ZONE_A
    
  3. vm-a1vm-a2instance-group-a に追加します。

    gcloud compute instance-groups unmanaged add-instances instance-group-a \
       --instances vm-a1,vm-a2 \
       --zone ZONE_A
    
  4. us-ig2 インスタンス グループを作成します。

    gcloud compute instance-groups unmanaged create instance-group-b \
       --zone ZONE_B
    
  5. インスタンス グループの名前付きポートを作成します。

    gcloud compute instance-groups set-named-ports instance-group-b \
       --named-ports tcp110:110 \
       --zone ZONE_B
    
  6. instance-group-b に vm-b1vm-b2 を追加します。

    gcloud compute instance-groups unmanaged add-instances instance-group-b \
       --instances vm-b1,vm-b2 \
       --zone ZONE_B
    

これで、リージョンごとに 1 つのインスタンス グループが作成されました。各インスタンス グループには 2 つの VM インスタンスがあります。

外部プロキシ ネットワーク ロードバランサにファイアウォール ルールを作成する

ロードバランサとヘルス チェッカーからインスタンスへのトラフィックを許可するファイアウォール ルールを構成します。ここでは、TCP ポート 110 を開きます。ヘルスチェックでも同じポートが使用されます。ロードバランサとインスタンスの間のトラフィックでは IPv4 が使用されるため、IPv4 範囲のみ開く必要があります。

コンソール

  1. Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。

    [ファイアウォール ポリシー] に移動

  2. [ファイアウォール ルールを作成] をクリックします。

  3. [名前] フィールドに「allow-tcp-lb-and-health」と入力します。

  4. ネットワークを選択します。

  5. [ターゲット] で [指定されたターゲットタグ] を選択します。

  6. [ターゲットタグ] を tcp-lb に設定します。

  7. [ソースフィルタ] を [IPv4 範囲] に設定します。

  8. [送信元 IPv4 範囲] を 130.211.0.0/22,35.191.0.0/16 に設定します。

  9. [プロトコルとポート] で、[指定したプロトコルとポート] を tcp:110 に設定します。

  10. [作成] をクリックします。

gcloud

gcloud compute firewall-rules create allow-tcp-lb-and-health \
   --source-ranges 130.211.0.0/22,35.191.0.0/16 \
   --target-tags tcp-lb \
   --allow tcp:110

IPv6 ヘルスチェックのファイアウォール ルールを作成する

ロードバランスされているインスタンスに適用され、Google Cloud ヘルスチェック システム(2600:2d00:1:b029::/64)からのトラフィックを許可する上り(内向き)ルールがあることを確認します。この例では、ターゲットタグ allow-health-check-ipv6 を使用して、ルールが適用される VM インスタンスを識別します。

このファイアウォール ルールがない場合は、デフォルトの上り(内向き)拒否ルールによってバックエンド インスタンスへの受信 IPv6 トラフィックがブロックされます。

コンソール

  1. Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。

    [ファイアウォール ポリシー] に移動

  2. IPv6 サブネット トラフィックを許可するには、もう一度 [ファイアウォール ルールを作成] をクリックして、次の情報を入力します。

    • 名前: fw-allow-lb-access-ipv6
    • ネットワークを選択します。
    • 優先度: 1000
    • トラフィックの方向: 上り(内向き)
    • ターゲット: 指定されたターゲットタグ
    • ターゲットタグ: allow-health-check-ipv6
    • ソースフィルタ: IPv6 範囲
    • 送信元 IPv6 範囲: 2600:2d00:1:b029::/64,2600:2d00:1:1::/64
    • プロトコルとポート: すべて許可
  3. [作成] をクリックします。

gcloud

fw-allow-lb-access-ipv6 ファイアウォール ルールを作成して、サブネットとの通信を許可します。

gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \
  --network=NETWORK \
  --action=allow \
  --direction=ingress \
  --target-tags=allow-health-check-ipv6 \
  --source-ranges=2600:2d00:1:b029::/64,2600:2d00:1:1::/64 \
  --rules=all

ロードバランサを構成する

コンソール

構成を開始する

  1. Google Cloud コンソールで、[ロード バランシング] ページに移動します。

    [ロード バランシング] に移動

  2. [ロードバランサを作成] をクリックします。
  3. [ロードバランサの種類] で [ネットワーク ロードバランサ(TCP / UDP / SSL)] を選択し、[次へ] をクリックします。
  4. [プロキシまたはパススルー] で [プロキシ ロードバランサ] を選択し、[次へ] をクリックします。
  5. [インターネット接続または内部] で [インターネット接続(外部)] を選択し、[次へ] をクリックします。
  6. [グローバルまたはシングル リージョンのデプロイ] で [グローバル ワークロードに最適] を選択し、[次へ] をクリックします。
  7. [ロードバランサの世代] で [グローバル外部プロキシ ネットワーク ロードバランサ] を選択し、[次へ] をクリックします。
  8. [構成] をクリックします。

基本構成

[名前] を my-tcp-lb に設定します。

バックエンドの構成

  1. [バックエンドの構成] をクリックします。
  2. [バックエンド タイプ] で [インスタンス グループ] を選択します。
  3. [プロトコル] で、[TCP] を選択します。
  4. [IP アドレス選択ポリシー] リストで、[IPv6 優先] を選択します。
  5. 最初のバックエンドを構成します。
    1. [新しいバックエンド] で、インスタンス グループ instance-group-a を選択します。
    2. 残りの値はデフォルト値を使用します。
  6. 2 番目のバックエンドを構成します。

      IPv4 トラフィックと IPv6 トラフィックの両方をサポートするには:

      • [IP スタックタイプ] で IPv4 and IPv6 (dual-stack) を選択します。
    1. [バックエンドを追加] をクリックします。
    2. インスタンス グループ instance-group-b を選択します。
    3. [ポート番号] で、80 を削除して 110 を追加します。
  7. ヘルスチェックを構成します。
    1. [ヘルスチェック] で [ヘルスチェックを作成] を選択します。
    2. ヘルスチェックの名前my-tcp-health-check に設定します。
    3. [プロトコル] で、[TCP] を選択します。
    4. [ポート] を 110 に設定します。
    5. 残りの値はデフォルト値を使用します。
    6. [保存して次へ] をクリックします。
  8. Google Cloud コンソールで、[バックエンドの構成] の横にチェックマークが表示されていることを確認します。チェックマークがない場合は、すべての手順を完了したことを再度確認します。

フロントエンドの構成

  1. [フロントエンドの構成] をクリックします。
  2. 最初の転送ルールを追加します。
    1. [名前] に「my-tcp-lb-forwarding-rule」と入力します。
    2. [プロトコル] で、[TCP] を選択します。
    3. [IP アドレス] で [IP アドレスを作成] を選択します。
      1. [名前] に「tcp-lb-static-ip」と入力します。
      2. [予約] をクリックします。
    4. [ポート] を 110 に設定します。
    5. Apache HTTP Server ソフトウェアでは動作しないため、この例では [プロキシのプロトコル] は有効にしないでください。詳細については、プロキシ プロトコルをご覧ください。
    6. [完了] をクリックします。
  3. Google Cloud コンソールで、[フロントエンドの構成] の横にチェックマークがあることを確認します。チェックマークがない場合には、前のすべてのステップが完了していることを再度確認してください。

確認と完了

  1. [確認と完了] をクリックします。
  2. ロードバランサの構成を確認します。
  3. 省略可: [同等のコード] をクリックして、ロードバランサの作成に使用する REST API リクエストを表示します。
  4. [作成] をクリックします。

gcloud

  1. ヘルスチェックを作成します。
        gcloud compute health-checks create tcp my-tcp-health-check --port 110
        
  2. バックエンド サービスを作成します。
        gcloud beta compute backend-services create my-tcp-lb \
            --load-balancing-scheme EXTERNAL_MANAGED \
            --global-health-checks \
            --global \
            --protocol TCP \
            --ip-address-selection-policy=PREFER_IPV6 \
            --health-checks my-tcp-health-check \
            --timeout 5m \
            --port-name tcp110
        

    あるいは、--protocol SSL を使用してロードバランサからインスタンスへの暗号化された通信を構成することもできます。

  3. バックエンド サービスにインスタンス グループを追加します。

        gcloud beta compute backend-services add-backend my-tcp-lb \
            --global \
            --instance-group instance-group-a \
            --instance-group-zone ZONE_A \
            --balancing-mode UTILIZATION \
            --max-utilization 0.8
        
        gcloud beta compute backend-services add-backend my-tcp-lb \
            --global \
            --instance-group instance-group-b \
            --instance-group-zone ZONE_B \
            --balancing-mode UTILIZATION \
            --max-utilization 0.8
        
  4. ターゲット TCP プロキシを構成します。プロキシ ヘッダーを有効にするには、NONE ではなく PROXY_V1 に設定します。
        gcloud beta compute target-tcp-proxies create my-tcp-lb-target-proxy \
            --backend-service my-tcp-lb \
            --proxy-header NONE
        
  5. グローバル静的 IPv4 アドレスと IPv6 アドレスを予約します。

    ユーザーは、これらの IP アドレスを使用してロードバランスされたサービスにアクセスできます。

        gcloud compute addresses create tcp-lb-static-ipv4 \
            --ip-version=IPV4 \
            --global
        
        gcloud compute addresses create tcp-lb-static-ipv6 \
            --ip-version=IPV6 \
            --global
        
  6. 2 つのアドレスのグローバル転送ルールを構成します。
        gcloud beta compute forwarding-rules create my-tcp-lb-ipv4-forwarding-rule \
            --load-balancing-scheme EXTERNAL_MANAGED \
            --global \
            --target-tcp-proxy my-tcp-lb-target-proxy \
            --address tcp-lb-static-ipv4 \
            --ports 110
        

ロードバランサをテストする

  1. ロードバランサの IP アドレスを取得します。

    IPv4 アドレスを取得するには、次のコマンドを実行します。

    gcloud compute addresses describe tcp-lb-static-ipv4
    

    IPv6 アドレスを取得するには、次のコマンドを実行します。

    gcloud compute addresses describe tcp-lb-static-ipv6
    
  2. 次のコマンドを実行して、トラフィックをロードバランサに送信します。LB_IP_ADDRESS は、ロードバランサの IPv4 または IPv6 アドレスに置き換えます。

    curl -m1 LB_IP_ADDRESS:110
    

    たとえば、割り当てられた IPv6 アドレスが [2001:db8:1:1:1:1:1:1/96]:110 の場合、コマンドは次のようになります。

    curl -m1 http://[2001:db8:1:1:1:1:1:1]:110
    

ロードバランサにアクセスできない場合は、設定のトラブルシューティングに記載されている手順をお試しください。

追加の構成オプション

このセクションでは、代替および追加の構成オプションを提供する構成例を示します。これらのタスクはすべて省略可です。また、任意の順序で行うことができます。

クライアント接続情報を保持するための PROXY プロトコル

プロキシ ネットワーク ロードバランサは、クライアントからの TCP 接続を終了して、インスタンスへの新しい接続を作成します。デフォルトでは、元のクライアント IP とポート情報は保持されません。

元の接続情報を保持してインスタンスに送信するには、PROXY プロトコル バージョン 1 を有効にします。このプロトコルは、送信元 IP アドレス、宛先 IP アドレス、ポート番号を含む追加ヘッダーをインスタンスへリクエストの構成部分として送信します。

プロキシ ネットワーク ロードバランサのバックエンド インスタンスが PROXY プロトコル ヘッダーをサポートするサーバーを実行していることを確認します。サーバーが PROXY プロトコル ヘッダーをサポートするように構成されていない場合、バックエンド インスタンスは空のレスポンスを返します。

ユーザー トラフィックに PROXY プロトコルを設定する場合は、ヘルスチェックにも設定します。同じポートでヘルスチェックとコンテンツの処理を行う場合は、ヘルスチェックの --proxy-header がロードバランサの設定と一致するように設定します。

通常、PROXY プロトコルのヘッダーは、ユーザーが読み取り可能な次の形式の 1 行のテキストです。

PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n

次の例は、PROXY プロトコルを示しています。

PROXY TCP4 192.0.2.1 198.51.100.1 15221 110\r\n

上の例では、クライアント IP は 192.0.2.1、ロード バランシング IP は 198.51.100.1、クライアント ポートは 15221、宛先ポートは 110 です。

クライアント IP が不明の場合、ロードバランサは PROXY プロトコルのヘッダーを次の形式で生成します。

PROXY UNKNOWN\r\n

ターゲット プロキシの PROXY プロトコル ヘッダーを更新する

このページのロードバランサの設定例では、プロキシ ネットワーク ロードバランサの作成中に PROXY プロトコル ヘッダーを有効にする方法について説明します。既存のターゲット プロキシの PROXY プロトコル ヘッダーを変更するには、次の操作を行います。

コンソール

  1. Google Cloud コンソールの [ロード バランシング] ページに移動します。

    [ロード バランシング] に移動

  2. ロードバランサの [編集] をクリックします。
  3. [フロントエンドの構成] をクリックします。
  4. [プロキシのプロトコル] フィールドの値を [オン] に変更します。
  5. [更新] をクリックして、変更を保存します。

gcloud

次のコマンドで、--proxy-header フィールドを編集し、必要に応じて NONE または PROXY_V1 に設定します。

gcloud compute target-tcp-proxies update TARGET_PROXY_NAME \
    --proxy-header=[NONE | PROXY_V1]

セッション アフィニティを構成する

構成例では、バックエンド サービスをセッション アフィニティなしで作成しています。

これらの手順は、バックエンド サービスがクライアント IP アフィニティまたは生成された Cookie アフィニティを使用するように、サンプルのロードバランサのバックエンド サービスを更新する方法を示しています。

クライアント IP アフィニティが有効になっている場合、ロードバランサは、クライアントの IP アドレスとロードバランサの IP アドレス(外部転送ルールの外部 IP アドレス)から作成されたハッシュに基づいて、特定のクライアントのリクエストを同じバックエンド VM に送信します。

Console

クライアント IP セッション アフィニティを有効にするには:

  1. Google Cloud コンソールで、[ロード バランシング] ページに移動します。

    [ロード バランシング] に移動

  2. [バックエンド] をクリックします。

  3. [my-tcp-lb](この例で作成したバックエンド サービスの名前)をクリックし、[編集] をクリックします。

  4. [バックエンド サービスの詳細] ページで、[詳細構成] をクリックします。

  5. [セッション アフィニティ] で、メニューから [クライアント IP] を選択します。

  6. [更新] をクリックします。

gcloud

クライアント IP セッション アフィニティを指定して、my-tcp-lb バックエンド サービスを更新するには、次の Google Cloud CLI コマンドを使用します。

gcloud compute backend-services update my-tcp-lb \
    --global \
    --session-affinity=CLIENT_IP

API

クライアント IP セッション アフィニティを設定するには、backendServices/patch メソッドに PATCH リクエストを送信します。

PATCH https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/us-west1/backendServices/my-tcp-lb
{
  "sessionAffinity": "CLIENT_IP"
}

コネクション ドレインを有効にする

バックエンド サービスでコネクション ドレインを有効にすると、トラフィックを処理しているインスタンスの停止、手動削除、オートスケーラーによる削除が発生した場合に、ユーザーに対する中断を最小限に抑えることができます。コネクション ドレインの詳細については、コネクション ドレインの有効化のドキュメントをご覧ください。

次のステップ