ゾーン NEG を使用して外部パススルー ネットワーク ロードバランサを設定する

このドキュメントでは、ゾーン ネットワーク エンドポイント グループ(NEG)バックエンドを使用する外部パススルー ネットワーク ロードバランサをデプロイする方法について説明します。GCE_VM_IP エンドポイントを含むゾーン NEG を使用すると、次のことができます。

  • 仮想マシン(VM)インスタンスのネットワーク インターフェースをバックエンド エンドポイントとして表すことで、VM インスタンスの nic0 以外のネットワーク インターフェースにパケットを転送する。
  • 1 つのエンドポイントを複数の NEG に接続できる柔軟なバックエンド エンドポイントのセットを作成する。各 NEG は異なるエンドポイントのセットを持つことができます(エンドポイントが重複する可能性があります)。

このドキュメントに進む前に、次の内容を理解しておいてください。

権限

ここで説明する手順に沿って操作する前に、インスタンスを作成し、プロジェクト内のネットワークを変更しておく必要があります。そのため、プロジェクトのオーナーまたは編集者であるか、次の Compute Engine IAM ロールがすべて割り当てられている必要があります。

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

詳しくは次のページをご覧ください。

設定の概要

このドキュメントでは、GCE_VM_IP ゾーン NEG バックエンドを使用する外部パススルー ネットワーク ロードバランサを構成してテストする方法について説明します。このセクションでは、以下の構成方法について説明します。

  1. カスタム サブネットを持つ lb-network という名前のサンプル VPC ネットワーク。
  2. バックエンド VM への受信接続を許可するファイアウォール ルール。
  3. 4 つの VM。
    • ゾーン us-west1-a 内に VM vm-a1vm-a2
    • ゾーン us-west1-c 内に VM vm-c1vm-c2
  4. 2 つのバックエンド ゾーン NEG(ゾーン us-west1-a 内に neg-a、ゾーン us-west1-c 内に neg-c)。各 NEG には次のエンドポイントがあります。
    • neg-a には、次の 2 つのエンドポイントが含まれています。
      • プライマリ内部 IP アドレスで識別される VM vm-a1nic1
      • プライマリ内部 IP アドレスで識別される VM vm-a2nic1
    • neg-c には、次の 2 つのエンドポイントが含まれています。
      • プライマリ内部 IP アドレスで識別される VM vm-c1nic1
      • プライマリ内部 IP アドレスで識別される VM vm-c2nic1
  5. us-west1-a 内で接続テストに使用する 1 台のクライアント VM(vm-client
  6. 次のロードバランサ コンポーネント:
    • us-west1 リージョンの外部バックエンド サービス。2 つのゾーン NEG への接続分散を管理します。
    • ロードバランサのフロントエンドの外部転送ルールと IP アドレス

外部パススルー ネットワーク ロードバランサはリージョン ロードバランサです。すべてのロードバランサ コンポーネント(バックエンド VM、バックエンド サービス、転送ルール)は同じリージョン内に存在している必要があります。

この例のアーキテクチャは次のようになります。

ゾーン NEG を使用する外部パススルー ネットワーク ロードバランサ。
ゾーン NEG を使用する外部パススルー ネットワーク ロードバランサ(クリックして拡大)

始める前に

Google Cloud CLI をインストールします。ツールの完全な概要については、gcloud CLI の概要をご覧ください。ロード バランシングに関連するコマンドについては、API と gcloud のリファレンスをご覧ください。

gcloud CLI を初めて実行する場合は、最初に gcloud init コマンドを実行して、認証を行います。

このページの説明は、bash の知識があることを前提としています。

ネットワークとサブネットを設定する

このページの例では、lb-network という名前のカスタムモードの VPC ネットワークを使用します。IPv4 トラフィックのみを処理する場合は、自動モードの VPC ネットワークを使用できます。ただし、IPv6 トラフィックにはカスタムモードのサブネットが必要です。

IPv6 トラフィックには、デュアルスタック サブネット(stack-typeIPv4_IPv6 に設定)も必要です。カスタムモードの VPC ネットワークにデュアルスタック サブネットを作成する場合は、サブネットに IPv6 アクセスタイプを選択します。この例では、サブネットの ipv6-access-type パラメータを EXTERNAL に設定します。このサブネット上の新しい VM には、外部 IPv4 アドレスと外部 IPv6 アドレスの両方を割り当てることができます。転送ルールには、外部 IPv4 アドレスと外部 IPv6 アドレスの両方を割り当てることもできます。

この例で使用されているバックエンドとロードバランサのコンポーネントは、次のリージョンとサブネットに存在します。

  • リージョン: us-central1
  • サブネット: lb-subnet(プライマリ IPv4 アドレス範囲は 10.1.2.0/24)。サブネットに構成する IPv4 アドレス範囲を選択します。IPv6 アドレス範囲は自動的に割り当てられます。Google では、固定サイズ(/64)の IPv6 CIDR ブロックを提供しています。

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

コンソール

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

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

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

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

  3. [名前] に「lb-network」を入力します。

  4. [サブネット] セクションで次の設定を行います。

    • [サブネット作成モード] を [カスタム] に設定します。
    • [新しいサブネット] セクションで、次のフィールドを構成して [完了] をクリックします。
      • 名前: lb-subnet
      • リージョン: us-central1
      • IP スタックタイプ: IPv4 および IPv6(デュアルスタック)
      • IPv4 範囲: 10.1.2.0/24
        サブネットの IPv4 アドレス範囲は構成できますが、サブネットの IPv6 アドレスの範囲は選択できません。Google では、固定サイズ(/64)の IPv6 CIDR ブロックを提供しています。
      • IPv6 アクセスタイプ: 外部
  5. [作成] をクリックします。

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

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

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

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

  3. [名前] に「lb-network」を入力します。

  4. [サブネット] セクションで次の設定を行います。

    • [サブネット作成モード] を [カスタム] に設定します。
    • [新しいサブネット] セクションで、次のフィールドを構成して [完了] をクリックします。
      • 名前: lb-subnet
      • リージョン: us-central1
      • IP スタックタイプ: IPv4(シングルスタック)
      • IPv4 範囲: 10.1.2.0/24
  5. [作成] をクリックします。

gcloud

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

    gcloud compute networks create lb-network \
        --subnet-mode=custom
    
  2. lb-network ネットワーク内に us-central1 リージョンのバックエンドのサブネットを作成します。

    IPv4 トラフィックと IPv6 トラフィックの両方の場合は、次のコマンドを使用してデュアルスタック サブネットを作成します。

    gcloud compute networks subnets create lb-subnet \
      --stack-type=IPV4_IPv6 \
      --ipv6-access-type=EXTERNAL \
      --network=lb-network \
      --range=10.1.2.0/24 \
      --region=us-central1
    

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

    gcloud compute networks subnets create lb-subnet \
      --network=lb-network \
      --range=10.1.2.0/24 \
      --region=us-central1
    

VM とネットワーク エンドポイント グループを作成する

外部パススルー ネットワーク ロードバランサのリージョン特性を示すために、この例では、2 つの異なるゾーンで 2 つのゾーン NEG バックエンドを使用します。トラフィックは、両方の NEG 間および各 NEG 内のエンドポイント間でロードバランスされます。

VM を作成する

このロード バランシングのシナリオでは、4 つの VM を作成し、各インスタンスに Apache ウェブサーバーをインストールします。ウェブサーバーは TCP ポート 80 でリッスンします。デフォルトでは、Apache は任意の IP アドレスにバインドされます。外部パススルー ネットワーク ロードバランサは、宛先 IP アドレスを保持してパケットを配信します。

説明を簡単にするため、これらのバックエンド VM では Debian GNU Linux 10 を実行します。

IPv4 トラフィックと IPv6 トラフィックの両方を処理するには、バックエンド VM をデュアルスタックとして構成します。VM の stack-typeIPv4_IPv6 に設定します。VM は、サブネットから ipv6-access-type 設定(この例では EXTERNAL)も継承します。IPv6 の要件の詳細については、外部パススルー ネットワーク ロードバランサの概要: 転送ルールをご覧ください。

既存の VM をバックエンドとして使用するには、gcloud compute instances network-interfaces update コマンドを使用して VM をデュアルスタックに更新します。

外部パススルー ネットワーク ロードバランサのバックエンド VM として参加するインスタンスでは、適切な Linux ゲスト環境Windows ゲスト環境、または同等の機能を提供する他のプロセスが実行されている必要があります。

各 VM には、nic0nic1 の 2 つのネットワーク インターフェースがあります。このチュートリアルでは、lb-network VPC ネットワークと lb-subnet サブネットに関連付けられた nic1 を使用します。この手順の後半では、この lb-network ネットワークと lb-subnet サブネットを使用して、ゾーン NEG を作成します。

コンソール

VM を作成する

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

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

  2. 次の手順を繰り返し、4 つの VM を作成します。次の名前とゾーンの組み合わせを使用します。

    • 名前: vm-a1、ゾーン: us-west1-a
    • 名前: vm-a2、ゾーン: us-west1-a
    • 名前: vm-c1、ゾーン: us-west1-c
    • 名前: vm-c2、ゾーン: us-west1-c
  3. [インスタンスを作成] をクリックします。

  4. 先ほど示したように [名前] を設定します。

  5. [リージョン] で us-west1 を選択し、前述のように [ゾーン] を選択します。

  6. [ブートディスク] セクションで、ブートディスク オプションとして Debian GNU/Linux 12 (bookworm) が選択されていることを確認します。必要に応じて、[選択] をクリックしてイメージを変更します。

  7. [詳細オプション] をクリックして、次の変更を行います。

    • [ネットワーク] をクリックして、ネットワーク タグ lb-tag を追加します。
    • [ネットワーク インターフェース] で、[ネットワーク インターフェースを追加] をクリックして、次の変更を行います。

      IPv4 バックエンドと IPv6 バックエンドの場合:

      • ネットワーク: lb-network
      • サブネット: lb-subnet
      • IP スタックタイプ: IPv4 and IPv6 (dual-stack)
      • プライマリ内部 IP: エフェメラル(自動)
      • 外部 IPv4 アドレス: エフェメラル(自動)
      • 外部 IPv6 アドレス: 自動割り振り

      IPv4 のみのバックエンドの場合:

      • ネットワーク: lb-network
      • サブネット: lb-subnet
      • IP スタックタイプ: IPv4 (single-stack)
      • プライマリ内部 IP: エフェメラル(自動)
      • 外部 IP: エフェメラル

      次に [完了] をクリックします。

    • [管理] をクリックします。[起動スクリプト] フィールドに、次のスクリプトの内容をコピーして貼り付けます。スクリプトの内容は 4 つの VM ですべて同じです。

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
  8. [作成] をクリックします。

gcloud

次の [VM-NAME][ZONE] の 4 つの組み合わせを使用して、下のコマンドを 4 回実行して 4 つの VM を作成します。スクリプトの内容は 4 つの VM ですべて同じです。

  • VM_NAME: vm-a1ZONE: us-west1-a
  • VM_NAME: vm-a2ZONE: us-west1-a
  • VM_NAME: vm-c1ZONE: us-west1-c
  • VM_NAME: vm-c2ZONE: us-west1-c

IPv4 トラフィックと IPv6 トラフィックの両方を処理する場合は、次のコマンドを使用します。

gcloud compute instances create VM_NAME \
    --zone=ZONE \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=lb-tag \
    --network-interface=network=default,subnet=default,stack_type=IPv4_IPv6,--ipv6-network-tier=PREMIUM \
    --network-interface=network=lb-network,subnet=lb-subnet,stack_type=IPv4_IPv6,--ipv6-network-tier=PREMIUM \
    --metadata=startup-script='#! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2'

IPv4 トラフィックのみのトラフィックを処理するには、次のコマンドを使用します。

gcloud compute instances create VM_NAME \
    --zone=ZONE \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=lb-tag \
    --network-interface=network=default,subnet=default,stack_type=IPv4_ONLY \
    --network-interface=network=lb-network,subnet=lb-subnet,stack_type=IPv4_ONLY \
    --metadata=startup-script='#! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2'

GCE_VM_IP エンドポイントを使用してゾーン NEG を作成する

NEG は、前の手順で作成した VM と同じゾーンに作成する必要があります。また、この例では、前の手順で作成した VMnic1 に関連付けられた lb-network VPC ネットワークと lb-subnet サブネットに NEG を作成します。したがって、NEG のエンドポイントは VM の nic1 になります。

コンソール

ゾーン ネットワーク エンドポイント グループを作成するには:

  1. Google Cloud コンソールの [ネットワーク エンドポイント グループ] ページに移動します。
    [ネットワーク エンドポイント グループ] ページに移動
  2. [ネットワーク エンドポイント グループを作成] をクリックします。
  3. ゾーン NEG の名前を入力します(例: neg-a)。
  4. [ネットワーク エンドポイント グループの種類] で [ネットワーク エンドポイント グループ(ゾーン)] を選択します。
  5. [ネットワーク] で lb-network を選択します。
  6. [サブネット] で lb-subnet を選択します。
  7. [ゾーン] で us-west1-a を選択します。
  8. [作成] をクリックします。
  9. この手順を繰り返して、neg-c という 2 番目のゾーン NEG を us-west1-c ゾーンに作成します。

エンドポイントをゾーン NEG に追加します。

  1. Google Cloud コンソールの [ネットワーク エンドポイント グループ] ページに移動します。
    [ネットワーク エンドポイント グループ] に移動
  2. 前の手順で作成した最初のネットワーク エンドポイント グループの名前neg-a)をクリックします。[ネットワーク エンドポイント グループの詳細] ページが表示されます。
  3. [このグループのネットワーク エンドポイント] セクションで [ネットワーク エンドポイントを追加] をクリックします。[ネットワーク エンドポイントの追加] ページが表示されます。

    1. [VM インスタンス] をクリックして [vm-a1] を選択し、その内部 IP アドレスをネットワーク エンドポイントとして追加します。
    2. [作成] をクリックします。
    3. もう一度 [ネットワーク エンドポイントを追加] をクリックし、[VM インスタンス] で [vm-a2] を選択します。
    4. [作成] をクリックします。
  4. 前の手順で作成した 2 番目のネットワーク エンドポイント グループの名前neg-c)をクリックします。[ネットワーク エンドポイント グループの詳細] ページが表示されます。

  5. [このグループのネットワーク エンドポイント] セクションで [ネットワーク エンドポイントを追加] をクリックします。[ネットワーク エンドポイントの追加] ページが表示されます。

    1. [VM インスタンス] をクリックして [vm-c1] を選択し、その内部 IP アドレスをネットワーク エンドポイントとして追加します。
    2. [作成] をクリックします。
    3. もう一度 [ネットワーク エンドポイントを追加] をクリックし、[VM インスタンス] で [vm-c2] を選択します。
    4. [作成] をクリックします。

gcloud

  1. gcloud compute network-endpoint-groups create コマンドを使用して、us-west1-aneg-a という GCE_VM_IP ゾーン NEG を作成します。

    gcloud compute network-endpoint-groups create neg-a \
        --network-endpoint-type=gce-vm-ip \
        --zone=us-west1-a \
        --network=lb-network \
        --subnet=lb-subnet
    
  2. エンドポイントを neg-a に追加します。

    gcloud compute network-endpoint-groups update neg-a \
        --zone=us-west1-a \
        --add-endpoint='instance=vm-a1' \
        --add-endpoint='instance=vm-a2'
    
  3. gcloud compute network-endpoint-groups create コマンドを使用して、us-west1-cneg-c という GCE_VM_IP ゾーン NEG を作成します。

    gcloud compute network-endpoint-groups create neg-c \
        --network-endpoint-type=gce-vm-ip \
        --zone=us-west1-c \
        --network=lb-network \
        --subnet=lb-subnet
    
  4. エンドポイントを neg-c に追加します。

    gcloud compute network-endpoint-groups update neg-c \
        --zone=us-west1-c \
        --add-endpoint='instance=vm-c1' \
        --add-endpoint='instance=vm-c2'
    

ファイアウォール ルールの構成

外部トラフィック(ヘルスチェック プローブを含む)がバックエンド インスタンスに到達できるようにファイアウォール ルールを作成します。

この例では、すべての送信元範囲からの TCP トラフィックがポート 80 でバックエンド インスタンスに到達できるようにファイアウォール ルールを作成します。ヘルスチェック プローブ専用のファイアウォール ルールを作成する場合は、ヘルスチェックの概要: プローブ IP 範囲とファイアウォール ルールに記載されているソース IP アドレス範囲を使用します。

コンソール

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

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

  2. IPv4 トラフィックを許可するには、次の操作手を行います。

    1. [ファイアウォール ルールを作成] をクリックします。
    2. 名前allow-network-lb-ipv4)を入力します。
    3. [ネットワーク] で [lb-network] を選択します。
    4. [ターゲット] で [指定されたターゲットタグ] を選択します。
    5. [ターゲットタグ] フィールドに「lb-tag」と入力します。
    6. [ソースフィルタ] で [IPv4 範囲] を選択します。
    7. [送信元 IPv4 範囲] を 0.0.0.0/0 に設定します。これにより、任意の送信元からの IPv4 トラフィックが許可されます。また、Google のヘルスチェック プローブがバックエンド インスタンスに到達できるようになります。
    8. [指定したプロトコルとポート] で [TCP] を選択し、「80」と入力します。
    9. [作成] をクリックします。
  3. IPv6 トラフィックを許可するには、次の操作を行います。

    1. もう一度 [ファイアウォール ルールを作成] をクリックします。
    2. 名前allow-network-lb-ipv6)を入力します。
    3. [ネットワーク] で [lb-network] を選択します。
    4. [ターゲット] で [指定されたターゲットタグ] を選択します。
    5. [ターゲットタグ] フィールドに「lb-tag」と入力します。
    6. [ソースフィルタ] で [IPv6 範囲] を選択します。
    7. [送信元 IPv6 範囲] を ::/0 に設定します。これにより、任意の送信元からの IPv6 トラフィックが許可されます。また、Google のヘルスチェック プローブがバックエンド インスタンスに到達できるようになります。
    8. [指定したプロトコルとポート] で [TCP] を選択し、「80」と入力します。
    9. [作成] をクリックします。

gcloud

  1. IPv4 トラフィックを許可するには、次のコマンドを実行します。

    gcloud compute firewall-rules create allow-network-lb-ipv4 \
        --network=lb-network \
        --target-tags=lb-tag \
        --allow=tcp:80 \
        --source-ranges=0.0.0.0/0
    
  2. IPv6 トラフィックを許可するには、次のコマンドを実行します。

    gcloud compute firewall-rules create allow-network-lb-ipv6 \
      --network=lb-network \
      --target-tags=lb-tag \
      --allow=tcp:80 \
      --source-ranges=::/0
    

ロードバランサの構成

次に、ロードバランサを設定します。

ロードバランサを構成すると、構成した静的外部 IP アドレス宛てのパケットを VM が受信するようになります。Compute Engine で提供されるイメージを使用する場合は、この IP アドレスを処理するようにインスタンスが自動的に構成されます。その他のイメージを使用する場合は、このアドレスを eth1 のエイリアスまたは各インスタンスのループバックとして構成する必要があります。

ロードバランサを設定するには、次の手順を行います。

コンソール

構成を開始する

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

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

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

バックエンドの構成

  1. [Create external passthrough Network Load Balancer] ページで、新しいロードバランサの名前 network-lb-zonal-neg を入力します。
  2. [リージョン] で us-west1 を選択します。
  3. [バックエンド タイプ] で [インターネット ネットワーク エンドポイント グループ] を選択します。
  4. [バックエンドの構成] をクリックします。前に入力したロードバランサの名前が表示されますが、変更はできません。
  5. [バックエンドの構成] ページで次の変更を行います。
    1. [ネットワーク エンドポイント グループ] リストで neg-a を選択し、[完了] をクリックします。
    2. [バックエンドを追加] をクリックし、前の手順を繰り返して neg-c を追加します。
    3. [ヘルスチェック] で、[ヘルスチェックを作成] または [別のヘルスチェックを作成] を選択して、次の情報を入力します。
      • 名前: tcp-health-check
      • プロトコル: TCP
      • ポート: 80
    4. [保存] をクリックします。
  6. 続行する前に、[バックエンドの構成] の隣に青いチェックマークがあることを確認します。

フロントエンドの構成

  1. [フロントエンドの構成] をクリックします。
  2. [名前] に「netlb-forwarding-rule」と入力します。
  3. IPv4 トラフィックを処理する手順は次のとおりです。
    1. [IP バージョン] で [IPv4] を選択します。
    2. [IP] でプルダウン メニューをクリックして、[IP アドレスを作成] を選択します。
      1. [新しい静的 IP アドレスの予約] ページで、[名前] に「netlb-ipv4-address」と入力します。
      2. [予約] をクリックします。
    3. [ポート] で [単一] を選択します。[ポート番号] に「80」と入力します。
    4. [完了] をクリックします。
  4. IPv6 トラフィックを処理する手順は次のとおりです。

    1. [IP バージョン] で [IPv6] を選択します。
    2. [サブネットワーク] で [lb-subnet] を選択します。
    3. [IPv6 範囲] のプルダウン メニューをクリックし、[IP アドレスを作成] を選択します。
      1. [新しい静的 IP アドレスの予約] ページで、[名前] に「netlb-ipv6-address」と入力します。
      2. [予約] をクリックします。
    4. [ポート] で [単一] を選択します。[ポート番号] に「80」と入力します。
    5. [完了] をクリックします。

    [フロントエンドの構成] の左側にある青い丸のチェックマークが表示されていれば、設定に成功しています。

構成を確認する

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

    [ロード バランシング] ページで、新しいロードバランサの [バックエンド] 列に緑色のチェックマークが表示されていれば、新しく作成したロードバランサは正常な状態です。

gcloud

  1. 静的外部 IP アドレスの予約。

    IPv4 トラフィックの場合: ロードバランサに静的外部 IPv4 アドレスを作成します。

    gcloud compute addresses create netlb-ipv4-address \
        --region=us-west1
    

    IPv6 トラフィックの場合: ロードバランサの静的外部 IPv6 アドレス範囲を作成します。使用するサブネットは、外部 IPv6 範囲のあるデュアル スタック サブネットである必要があります。

    gcloud compute addresses create netlb-ipv6-address \
        --region=us-west1 \
        --subnet=lb-subnet \
        --ip-version=IPV6 \
        --endpoint-type=NETLB
    
  2. TCP ヘルスチェックを作成します。

    gcloud compute health-checks create tcp tcp-health-check \
        --region=us-west1 \
        --port=80
    
  3. バックエンド サービスを作成します。

    gcloud compute backend-services create networklb-backend-service \
        --protocol=TCP \
        --health-checks=tcp-health-check \
        --health-checks-region=us-west1 \
        --region=us-west1
    
  4. 2 つのゾーン NEG(neg-aneg-c)をバックエンド サービスに追加します。

    gcloud compute backend-services add-backend networklb-backend-service \
        --region=us-west1 \
        --network-endpoint-group=neg-a \
        --network-endpoint-group-zone=us-west1-a
    
    gcloud compute backend-services add-backend networklb-backend-service \
        --region=us-west1 \
        --network-endpoint-group=neg-c \
        --network-endpoint-group-zone=us-west1-c
    
  5. IPv4 トラフィックと IPv6 トラフィックのどちらを処理するかに応じて、転送ルールを作成します。両方の転送ルールを作成して、両方のタイプのトラフィックを処理します。

    1. IPv4 トラフィックの場合: 着信する TCP トラフィックをバックエンド サービスに転送する転送ルールを作成します。手順 1 で予約した IPv4 アドレスをロードバランサの静的外部 IP アドレスとして使用します。

      gcloud compute forwarding-rules create forwarding-rule-ipv4 \
        --load-balancing-scheme=EXTERNAL \
        --region=us-west1 \
        --ports=80 \
        --address=netlb-ipv4-address \
        --backend-service=networklb-backend-service
      
    2. IPv6 トラフィックの場合: IPv6 トラフィックを処理する転送ルールを作成します。手順 1 で予約した IPv6 アドレス範囲を、ロードバランサの静的外部 IP アドレスとして使用します。使用するサブネットは、外部 IPv6 サブネット範囲のあるデュアル スタック サブネットである必要があります。

      gcloud compute forwarding-rules create forwarding-rule-ipv6 \
          --load-balancing-scheme=EXTERNAL \
          --region=us-west1 \
          --network-tier=PREMIUM \
          --ip-version=IPV6 \
          --subnet=lb-subnet \
          --address=netlb-ipv6-address \
          --ports=80 \
          --backend-service=networklb-backend-service
      

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

ロード バランシング サービスの構成が完了したので、ロードバランサの外部 IP アドレスにトラフィックの送信を開始できます。また、バックエンド インスタンスに分散されるトラフィックを監視できます。

ロードバランサの外部 IP アドレスを調べる

コンソール

  1. [ロード バランシング] ページの [詳細] で、[転送ルール] タブに移動します。

    [転送ルール] に移動

  2. ロードバランサが使用する転送ルールを探します。

  3. [アドレス] 列に表示された外部 IP アドレスをメモします。

gcloud: IPv4

次のコマンドを入力して、ロードバランサが使用する network-lb-forwarding-rule 転送ルールの外部 IPv4 アドレスを表示します。

gcloud compute forwarding-rules describe forwarding-rule-ipv4 \
    --region=us-west1

gcloud: IPv6

次のコマンドを入力して、ロードバランサが使用する network-lb-forwarding-rule 転送ルールの外部 IPv6 アドレスを表示します。

gcloud compute forwarding-rules describe forwarding-rule-ipv6 \
    --region=us-west1

ロードバランサにトラフィックを送信する

curl を使用して IP アドレスに接続するロードバランサへのウェブ リクエストを作成します。

  • IPv4 接続のクライアントから、次のコマンドを実行します。

    $ while true; do curl -m1 IPV4_ADDRESS; done
    
  • IPv6 接続のクライアントから、次のコマンドを実行します。

    $ while true; do curl -m1 http://IPV6_ADDRESS; done
    

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

    $ while true; do curl -m1 http://[2001:db8:1:1:1:1:1:1]:80; done
    

curl コマンドによって返された値の文字列をメモします。レスポンスを生成するバックエンド VM の名前が文字列内に表示されます(たとえば、Page served from: VM_NAME)。

curl コマンドからのレスポンスは、バックエンド インスタンスの間でランダムに変わります。最初のレスポンスで失敗した場合は、構成が完全に読み込まれてインスタンスが正常であるとマークされるまで最大 30 秒待ってから、もう一度やり直してください。

追加の構成オプション

外部パススルー ネットワーク ロードバランサをさらにカスタマイズするには、セッション アフィニティとトラフィック ステアリングを構成し、フェイルオーバー ポリシーまたは接続トラッキング ポリシーを設定します。これらのタスクはオプションで、任意の順序で実行できます。設定については、追加の構成オプションをご覧ください。

BYOIP を含む IPv6 転送ルールを作成する

前の手順で作成したロードバランサは、IP versionIPv4 または IPv6 とする転送ルールで構成されています。このセクションでは、お客様所有 IP(BYOIP)アドレスを使用して IPv6 転送ルールを作成する手順について説明します。

お客様所有 IP アドレスを使用すると、Google Cloud リソースに独自のパブリック IPv6 アドレスをプロビジョニングして使用できます。詳細については、お客様所有 IP アドレスの使用をご覧ください。

BYOIP アドレスを使用して IPv6 転送ルールの構成を開始する前に、次の手順を完了する必要があります。

  1. パブリック アドバタイズド IPv6 プレフィックスを作成する
  2. パブリック委任プレフィックスを作成する
  3. IPv6 サブプレフィックスを作成する
  4. 接頭辞を読み上げる

新しい転送ルールを作成するには、次の手順を行います。

コンソール

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

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

  2. 変更するロードバランサの名前をクリックします。
  3. [編集] をクリックします。
  4. [フロントエンドの構成] をクリックします。
  5. [フロントエンド IP とポートの追加] をクリックします。
  6. [新しいフロントエンドの IP とポート] セクションで、次の情報を指定します。
    1. [プロトコル] は [TCP] です。
    2. [IP バージョン] フィールドで、[IPv6] を選択します。
    3. [IPv6 範囲のソース] フィールドで、[BYOIP] を選択します。
    4. [IP コレクション] リストで、転送ルール オプションを有効にして、前の手順で作成したサブプレフィックスを選択します。
    5. [IPv6 範囲] フィールドに IPv6 アドレス範囲を入力します。IPv6 アドレス範囲は、IPv6 サブプレフィックスの仕様に準拠していなければなりません。
    6. [ポート] フィールドにポート番号を入力します。
    7. [完了] をクリックします。
  7. [更新] をクリックします。

Google Cloud CLI

gcloud compute forwarding-rules create コマンドを使用して転送ルールを作成します。

gcloud compute forwarding-rules create FWD_RULE_NAME \
    --load-balancing-scheme EXTERNAL \
    --ip-protocol PROTOCOL \
    --ports ALL \
    --ip-version IPV6 \
    --region REGION_A \
    --address IPV6_CIDR_RANGE  \
    --backend-service BACKEND_SERVICE \
    --ip-collection PDP_NAME

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

  • FWD_RULE_NAME: 転送ルールの名前
  • PROTOCOL: 転送ルールの IP プロトコル。デフォルトは TCP です。IP プロトコルは、TCPUDPL3_DEFAULT のいずれかです。
  • REGION_A: 転送ルールのリージョン
  • IPV6_CIDR_RANGE: 転送ルールが提供する IPv6 アドレス範囲。IPv6 アドレス範囲は、IPv6 サブプレフィックスの仕様に準拠していなければなりません。
  • BACKEND_SERVICE: バックエンド サービスの名前
  • PDP_NAME: パブリック委任プレフィックスの名前。PDP は、EXTERNAL_IPV6_FORWARDING_RULE_CREATION モードのサブプレフィックスでなければなりません。

次のステップ