このガイドでは、TCP、UDP、ESP、GRE、ICMP、ICMPv6 トラフィックをロードバランスするバックエンド サービス ベースの外部パススルー ネットワーク ロードバランサを作成する手順について説明します。このような構成は、TCP または UDP 以外の IP プロトコルを使用するトラフィックのロード バランシングを行う場合に使用できます。ターゲット プールベースの外部パススルー ネットワーク ロードバランサは、この機能をサポートしていません。
TCP または UDP 以外の IP プロトコルに外部パススルー ネットワーク ロードバランサを構成するには、プロトコルを L3_DEFAULT
に設定した転送ルールを作成します。この転送ルールは、プロトコルが UNSPECIFIED
に設定されたバックエンド サービスを参照します。
次の例では、2 つの外部パススルー ネットワーク ロードバランサを使用して、us-central1
リージョンの 2 つのゾーン マネージド インスタンス グループ内のバックエンド VM にトラフィックを分散します。両方のロードバランサが同じ外部 IP アドレスでトラフィックを受信します。
1 つのロードバランサには、プロトコル TCP
とポート 80 を設定した転送ルールを作成し、もう 1 つのロードバランサにはプロトコル L3_DEFAULT
を設定した転送ルールを作成しています。ポート 80 の IP アドレスに到達する TCP トラフィックは、TCP
転送ルールによって処理されます。TCP 固有の転送ルールと一致しないトラフィックはすべて、L3_DEFAULT
転送ルールによって処理されます。
このシナリオでは、正常に動作しているインスタンスにトラフィックを分散します。この構成をサポートするため、TCP ヘルスチェックを作成し、正常なインスタンスにのみトラフィックが送信されるようにします。
外部パススルー ネットワーク ロードバランサはリージョン ロードバランサです。ロードバランサのすべてのコンポーネントは同じリージョンに配置する必要があります。
始める前に
Google Cloud CLI をインストールします。ツールの完全な概要については、gcloud CLI の概要をご覧ください。ロード バランシングに関連するコマンドについては、API と gcloud のリファレンスをご覧ください。
gcloud CLI を初めて実行する場合は、最初に gcloud init
コマンドを実行して、認証を行います。
このガイドは、bash の知識があることを前提としています。
ネットワークとサブネットを設定する
このページの例では、lb-network
という名前のカスタムモードの VPC ネットワークを使用します。IPv4 トラフィックのみを処理する場合は、自動モードの VPC ネットワークを使用できます。ただし、IPv6 トラフィックにはカスタムモードのサブネットが必要です。
IPv6 トラフィックには、デュアルスタック サブネット(stack-type
を IPv4_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 トラフィックの両方をサポートするには、次の操作を行います。
Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
[VPC ネットワークを作成] をクリックします。
[名前] に「
lb-network
」を入力します。[サブネット] セクションで次の設定を行います。
- [サブネット作成モード] を [カスタム] に設定します。
- [新しいサブネット] セクションで、次のフィールドを構成して [完了] をクリックします。
- 名前:
lb-subnet
- リージョン:
us-central1
- IP スタックタイプ: IPv4 および IPv6(デュアルスタック)
- IPv4 範囲:
10.1.2.0/24
サブネットの IPv4 アドレス範囲は構成できますが、サブネットの IPv6 アドレスの範囲は選択できません。Google では、固定サイズ(/64)の IPv6 CIDR ブロックを提供しています。 - IPv6 アクセスタイプ: 外部
- 名前:
[作成] をクリックします。
IPv4 トラフィックのみをサポートするには、次の操作を行います。
Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
[VPC ネットワークを作成] をクリックします。
[名前] に「
lb-network
」を入力します。[サブネット] セクションで次の設定を行います。
- [サブネット作成モード] を [カスタム] に設定します。
- [新しいサブネット] セクションで、次のフィールドを構成して [完了] をクリックします。
- 名前:
lb-subnet
- リージョン:
us-central1
- IP スタックタイプ: IPv4(シングルスタック)
- IPv4 範囲:
10.1.2.0/24
- 名前:
[作成] をクリックします。
gcloud
カスタムモードの VPC ネットワークを作成します。
gcloud compute networks create lb-network \ --subnet-mode=custom
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
ゾーン マネージド インスタンス グループを作成する
このロード バランシングのシナリオでは、2 つの Compute Engine ゾーン マネージド インスタンス グループを作成し、各インスタンスに Apache ウェブサーバーをインストールします。
IPv4 トラフィックと IPv6 トラフィックの両方を処理するには、バックエンド VM をデュアルスタックとして構成します。VM の stack-type
を IPv4_IPv6
に設定します。VM は、サブネットから ipv6-access-type
設定(この例では EXTERNAL
)も継承します。IPv6 の要件の詳細については、外部パススルー ネットワーク ロードバランサの概要: 転送ルールをご覧ください。
既存の VM をバックエンドとして使用するには、gcloud compute instances network-interfaces update
コマンドを使用して VM をデュアルスタックに更新します。
外部パススルー ネットワーク ロードバランサのバックエンド VM として参加するインスタンスでは、適切な Linux ゲスト環境、Windows ゲスト環境、または同等の機能を提供する他のプロセスが実行されている必要があります。
ポート 80 の TCP トラフィック用にインスタンス グループを作成する
コンソール
インスタンス テンプレートを作成します。Google Cloud コンソールで [インスタンス テンプレート] ページに移動します。
- [インスタンス テンプレートを作成] をクリックします。
- [名前] に「
ig-us-template-tcp-80
」と入力します。 - [ブートディスク] が Debian GNU/Linux 12 (bookworm) などの Debian イメージに設定されていることを確認します。以降の手順では、
apt-get
などの Debian でのみ使用できるコマンドを使用します。 - [詳細オプション] セクションを開きます。
[管理] セクションを開き、次のスクリプトを [起動スクリプト] フィールドにコピーします。
#! /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
[ネットワーキング] セクションを開き、次の情報を指定します。
- [ネットワーク タグ] に
network-lb-tcp-80
を追加します。 - [ネットワーク インターフェース] で [default] をクリックし、次のフィールドを構成します。
- ネットワーク:
lb-network
- サブネットワーク:
lb-subnet
- ネットワーク:
- [ネットワーク タグ] に
[作成] をクリックします。
マネージド インスタンス グループを作成します。Google Cloud コンソールで [インスタンス グループ] ページに移動します。
- [インスタンス グループを作成] をクリックします。
- [新しいマネージド インスタンス グループ(ステートレス)] を選択します。詳細については、ステートレス MIG とステートフル MIG をご覧ください。
- [名前] に「
ig-us-tcp-80
」と入力します。 - [ロケーション] で [シングルゾーン] を選択します。
- [リージョン] で
us-central1
を選択します。 - [ゾーン] で
us-central1-a
を選択します。 - [インスタンス テンプレート] で
ig-us-template-tcp-80
を選択します。 グループ内に作成するインスタンスの数を指定します。
この例では、[自動スケーリング] で次のオプションを指定します。
- [自動スケーリング モード] で [
Off:do not autoscale
] を選択します。 - [インスタンスの最大数] に「
2
」と入力します。
- [自動スケーリング モード] で [
[作成] をクリックします。
gcloud
このガイドの gcloud
の手順は、Cloud Shell または bash がインストールされた別の環境を使用していることを前提としています。
gcloud compute instance-templates create
コマンドを使用して、HTTP サーバーで VM インスタンス テンプレートを作成します。IPv4 トラフィックと IPv6 トラフィックの両方を処理する場合は、次のコマンドを使用します。
gcloud compute instance-templates create ig-us-template-tcp-80 \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --ipv6-network-tier=PREMIUM \ --stack-type=IPv4_IPv6 \ --tags=network-lb-tcp-80 \ --image-family=debian-12 \ --image-project=debian-cloud \ --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 instance-templates create ig-us-template-tcp-80 \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --tags=network-lb-tcp-80 \ --image-family=debian-12 \ --image-project=debian-cloud \ --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'
gcloud compute instance-groups managed create
コマンドを使用して、ゾーンにマネージド インスタンス グループを作成します。gcloud compute instance-groups managed create ig-us-tcp-80 \ --zone us-central1-a \ --size 2 \ --template ig-us-template-tcp-80
ポート 8080 の TCP、UDP、ESP、ICMP トラフィック用にインスタンス グループを作成する
コンソール
インスタンス テンプレートを作成します。Google Cloud コンソールで [インスタンス テンプレート] ページに移動します。
- [インスタンス テンプレートを作成] をクリックします。
- [名前] に「
ig-us-template-l3-default
」と入力します。 - [ブートディスク] が Debian GNU/Linux 12 (bookworm) などの Debian イメージに設定されていることを確認します。以降の手順では、
apt-get
などの Debian でのみ使用できるコマンドを使用します。 - [詳細オプション] セクションを開きます。
[管理] セクションを開き、次のスクリプトを [起動スクリプト] フィールドにコピーします。起動スクリプトを修正し、Apache サーバーがポート
80
ではなく、ポート8080
をリッスンするように構成します。#! /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 sed -ire 's/^Listen 80$/Listen 8080/g' /etc/apache2/ports.conf systemctl restart apache2
[ネットワーキング] セクションを開き、次の情報を指定します。
- [ネットワーク タグ] に
network-lb-l3-default
を追加します。 - [ネットワーク インターフェース] で [default] をクリックし、次のフィールドを構成します。
- ネットワーク:
lb-network
- サブネットワーク:
lb-subnet
- ネットワーク:
- [ネットワーク タグ] に
[作成] をクリックします。
マネージド インスタンス グループを作成します。Google Cloud コンソールで [インスタンス グループ] ページに移動します。
- [インスタンス グループを作成] をクリックします。
- [新しいマネージド インスタンス グループ(ステートレス)] を選択します。詳細については、ステートレス MIG とステートフル MIG をご覧ください。
- [名前] に「
ig-us-l3-default
」と入力します。 - [ロケーション] で [シングルゾーン] を選択します。
- [リージョン] で
us-central1
を選択します。 - [ゾーン] で
us-central1-c
を選択します。 - [インスタンス テンプレート] で
ig-us-template-l3-default
を選択します。 グループ内に作成するインスタンスの数を指定します。
この例では、[自動スケーリング] で次のオプションを指定します。
- [自動スケーリング モード] で [
Off:do not autoscale
] を選択します。 - [インスタンスの最大数] に「
2
」と入力します。
- [自動スケーリング モード] で [
[作成] をクリックします。
gcloud
このガイドの gcloud
の手順は、Cloud Shell または bash がインストールされた別の環境を使用していることを前提としています。
gcloud compute instance-templates create
コマンドを使用して、HTTP サーバーで VM インスタンス テンプレートを作成します。起動スクリプトを修正し、Apache サーバーがポート
80
ではなく、ポート8080
をリッスンするように構成します。IPv4 トラフィックと IPv6 トラフィックの両方を処理する場合は、次のコマンドを使用します。
gcloud compute instance-templates create ig-us-template-l3-default \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --ipv6-network-tier=PREMIUM \ --stack-type=IPv4_IPv6 \ --tags=network-lb-l3-default \ --image-family=debian-12 \ --image-project=debian-cloud \ --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 sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'
IPv4 トラフィックのみを処理する場合は、次のコマンドを使用します。
gcloud compute instance-templates create ig-us-template-l3-default \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --tags=network-lb-l3-default \ --image-family=debian-12 \ --image-project=debian-cloud \ --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 sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'
gcloud compute instance-groups managed create
コマンドを使用して、ゾーンにマネージド インスタンス グループを作成します。gcloud compute instance-groups managed create ig-us-l3-default \ --zone us-central1-c \ --size 2 \ --template ig-us-template-l3-default
ファイアウォール ルールを構成する
次のファイアウォール ルールを作成します。
- 外部 TCP トラフィックがポート 80 の
ig-us-tcp-80
インスタンス グループのバックエンド インスタンス(ターゲットタグnetwork-lb-tcp-80
を使用)に到達できるようにするファイアウォール ルール。IPv4 トラフィックと IPv6 のトラフィックを許可する別々のファイアウォール ルールを作成します。 - 他の外部トラフィック(ポート 8080 の TCP、UDP、ESP、ICMP)が、
ig-us-l3-default
インスタンス グループのバックエンド インスタンス(ターゲットタグnetwork-lb-l3-default
を使用)に到達できるようにするファイアウォール ルール。IPv4 トラフィックと IPv6 のトラフィックを許可する別々のファイアウォール ルールを作成します。
この例では、すべてのソース範囲からのトラフィックが構成済みポートのバックエンド インスタンスに到達できるようにファイアウォール ルールを作成します。ヘルスチェック プローブ専用のファイアウォール ルールを作成する場合は、ヘルスチェックの概要: プローブ IP 範囲とファイアウォール ルールに記載されているソース IP アドレス範囲を使用します。
コンソール
- Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。
[ファイアウォール ポリシー] に移動 - IPv4 TCP トラフィックが
ig-us-tcp-80
インスタンス グループのバックエンドに到達できるようにするには、次のファイアウォール ルールを作成します。- [ファイアウォール ルールを作成] をクリックします。
- [名前] に「
allow-network-lb-tcp-80-ipv4
」を入力します。 - ファイアウォール ルールを適用するネットワークを選択します(デフォルト)。
- [ターゲット] で [指定されたターゲットタグ] を選択します。
- [ターゲットタグ] フィールドに「
network-lb-tcp-80
」と入力します。 - [ソースフィルタ] を [IPv4 範囲] に設定します。
- [送信元 IPv4 範囲] を
0.0.0.0/0
に設定します。これにより、任意の送信元からのトラフィックが許可されます。これにより、外部トラフィックとヘルスチェック プローブの両方がバックエンド インスタンスに到達できるようになります。 - [プロトコルとポート] で [指定したプロトコルとポート] をオンにします。[TCP] チェックボックスをオンにして、「
80
」を入力します。 - [作成] をクリックします。新しいファイアウォール ルールがコンソールに表示されるまで少し時間がかかる場合があります。表示されない場合は、[更新] をクリックしてルールを表示してみてください。
- IPv4 UDP、ESP、ICMP トラフィックが
ig-us-l3-default
インスタンス グループのバックエンドに到達できるようにするには、次のファイアウォール ルールを作成します。- [ファイアウォール ルールを作成] をクリックします。
- [名前] に「
allow-network-lb-l3-default-ipv4
」を入力します。 - ファイアウォール ルールを適用するネットワークを選択します(デフォルト)。
- [ターゲット] で [指定されたターゲットタグ] を選択します。
- [ターゲットタグ] フィールドに「
network-lb-l3-default
」と入力します。 - [ソースフィルタ] を [IPv4 範囲] に設定します。
- [送信元 IPv4 範囲] を
0.0.0.0/0
に設定します。これにより、任意の送信元からのトラフィックが許可されます。これにより、外部トラフィックとヘルスチェック プローブの両方がバックエンド インスタンスに到達できるようになります。 - [プロトコルとポート] で [指定したプロトコルとポート] をオンにします。
- [TCP] チェックボックスをオンにして、「
8080
」を入力します。 - [UDP] チェックボックスをオンにします。
- [その他] チェックボックスをオンにして、「
esp, icmp
」と入力します。
- [TCP] チェックボックスをオンにして、「
- [作成] をクリックします。新しいファイアウォール ルールがコンソールに表示されるまで少し時間がかかる場合があります。表示されない場合は、[更新] をクリックしてルールを表示してみてください。
- IPv6 TCP トラフィックが
ig-us-tcp-80
インスタンス グループのバックエンドに到達できるようにするには、次のファイアウォール ルールを作成します。- [ファイアウォール ルールを作成] をクリックします。
- [名前] に「
allow-network-lb-tcp-80-ipv6
」を入力します。 - ファイアウォール ルールを適用するネットワークを選択します(デフォルト)。
- [ターゲット] で [指定されたターゲットタグ] を選択します。
- [ターゲットタグ] フィールドに「
network-lb-tcp-80
」と入力します。 - [ソースフィルタ] を [IPv6 範囲] に設定します。
- [送信元 IPv6 範囲] を
::/0
に設定します。これにより、任意の送信元からのトラフィックが許可されます。これにより、外部トラフィックとヘルスチェック プローブの両方がバックエンド インスタンスに到達できるようになります。 - [プロトコルとポート] で [指定したプロトコルとポート] をオンにします。[TCP] の横にあるチェックボックスをオンにして、「
80
」と入力します。 - [作成] をクリックします。新しいファイアウォール ルールがコンソールに表示されるまで少し時間がかかる場合があります。表示されない場合は、[更新] をクリックしてルールを表示してみてください。
- IPv6 UDP、ESP、ICMPv6 トラフィックが
ig-us-l3-default
インスタンス グループ内のバックエンドに到達できるようにするには、次のファイアウォール ルールを作成します。このファイアウォール ルールにより、TCP ヘルスチェック プローブがポート 8080 のインスタンスに到達できるようになります。- [ファイアウォール ルールを作成] をクリックします。
- [名前] に「
allow-network-lb-l3-default-ipv6
」を入力します。 - ファイアウォール ルールを適用するネットワークを選択します(デフォルト)。
- [ターゲット] で [指定されたターゲットタグ] を選択します。
- [ターゲットタグ] フィールドに「
network-lb-l3-default
」と入力します。 - [ソースフィルタ] を [IPv6 範囲] に設定します。
- [送信元 IPv6 範囲] を
::/0
に設定します。これにより、任意の送信元からのトラフィックが許可されます。これにより、外部トラフィックとヘルスチェック プローブの両方がバックエンド インスタンスに到達できるようになります。 - [プロトコルとポート] で [指定したプロトコルとポート] をオンにします。
- [TCP] の横にあるチェックボックスをオンにして、「
8080
」と入力します。 - [UDP] の横にあるチェックボックスをオンにします。
- [その他] の横にあるチェックボックスをオンにして、「
esp, 58
」と入力します。
- [TCP] の横にあるチェックボックスをオンにして、「
- [作成] をクリックします。新しいファイアウォール ルールがコンソールに表示されるまで少し時間がかかる場合があります。表示されない場合は、[更新] をクリックしてルールを表示してみてください。
gcloud
IPv4 TCP トラフィックが
ig-us-tcp-80
インスタンス グループのバックエンドに到達できるようにするには、次のファイアウォール ルールを作成します。gcloud compute firewall-rules create allow-network-lb-tcp-80-ipv4 \ --network=lb-network \ --target-tags network-lb-tcp-80 \ --allow tcp:80 \ --source-ranges=0.0.0.0/0
IPv4 UDP、ESP、ICMP トラフィックが
ig-us-l3-default
インスタンス グループのバックエンドに到達できるようにするには、次のファイアウォール ルールを作成します。このファイアウォール ルールにより、TCP ヘルスチェック プローブがポート 8080 のインスタンスに到達できるようになります。gcloud compute firewall-rules create allow-network-lb-l3-default-ipv4 \ --network=lb-network \ --target-tags network-lb-l3-default \ --allow tcp:8080,udp,esp,icmp \ --source-ranges=0.0.0.0/0
IPv6 TCP トラフィックが
ig-us-tcp-80
インスタンス グループのバックエンドに到達できるようにするには、次のファイアウォール ルールを作成します。gcloud compute firewall-rules create allow-network-lb-tcp-80-ipv6 \ --network=lb-network \ --target-tags network-lb-tcp-80 \ --allow tcp:80 \ --source-ranges=::/0
IPv6 UDP、ESP、ICMPv6 トラフィックが
ig-us-l3-default
インスタンス グループ内のバックエンドに到達できるようにするには、次のファイアウォール ルールを作成します。このファイアウォール ルールにより、TCP ヘルスチェック プローブがポート 8080 のインスタンスに到達できるようになります。gcloud compute firewall-rules create allow-network-lb-l3-default-ipv6 \ --network=lb-network \ --target-tags network-lb-l3-default \ --allow tcp:8080,udp,esp,58 \ --source-ranges=::/0
ロードバランサを構成する
次に、2 つのロードバランサを設定します。転送ルールに同じ外部 IP アドレスを使用するように両方のロードバランサを構成します。1 つのロードバランサはポート 80 で TCP トラフィックを処理し、もう 1 つのロードバランサはポート 8080 で TCP、UDP、ESP、ICMP トラフィックを処理します。
ロードバランサを構成すると、構成した静的外部 IP アドレス宛てのパケットがバックエンド VM インスタンスに送信されます。Compute Engine で提供されるイメージを使用する場合は、この IP アドレスを処理するようにインスタンスが自動的に構成されます。その他のイメージを使用する場合は、このアドレスを eth0
のエイリアスまたは各インスタンスのループバックとして構成する必要があります。
2 つのロードバランサを設定するには、次の操作を行います。
コンソール
構成を開始する
Google Cloud コンソールで、[ロード バランシング] ページに移動します。
- [ロードバランサを作成] をクリックします。
- [ロードバランサの種類] で [ネットワーク ロードバランサ(TCP / UDP / SSL)] を選択し、[次へ] をクリックします。
- [プロキシまたはパススルー] で [パススルー ロードバランサ] を選択し、[次へ] をクリックします。
- [インターネット接続または内部] で [インターネット接続(外部)] を選択し、[次へ] をクリックします。
- [構成] をクリックします。
基本的な構成
- [名前] フィールドに、新しいロードバランサの名前
backend-service-tcp-80
を入力します。 - [リージョン] リストで [
us-central1
] を選択します。
バックエンドの構成
- [バックエンドの構成] をクリックします。
- [バックエンドの構成] ページで次の変更を行います。
- [新しいバックエンド] セクションで、[IP スタックタイプ] を選択します。IPv4 トラフィックと IPv6 トラフィックの両方を処理するデュアル スタック バックエンドを作成した場合は、[IPv4 と IPv6(デュアルスタック)] を選択します。IPv4 トラフィックのみを処理するには、[IPv4(シングルスタック)] を選択します。
- [インスタンス グループ] リストで
ig-us-tcp-80
を選択し、[完了] をクリックします。 - [ヘルスチェック] リストで [ヘルスチェックを作成] をクリックし、次の情報を入力します。
- 名前:
tcp-health-check-80
- プロトコル:
TCP
- ポート:
80
- 名前:
- [保存] をクリックします。
- 続行する前に、[バックエンドの構成] の隣に青いチェックマークがあることを確認します。
フロントエンドの構成
- [フロントエンドの構成] をクリックします。
- [名前] フィールドに「
forwarding-rule-tcp-80
」と入力します。 - IPv4 トラフィックを処理する手順は次のとおりです。
- [IP バージョン] で [IPv4] を選択します。
- [内部 IP の目的] セクションの [IP アドレス] リストで、[IP アドレスを作成] を選択します。
- [名前] フィールドに「
network-lb-ipv4
」と入力します。 - [予約] をクリックします。
- [名前] フィールドに「
- [ポート] で [単一] を選択します。[ポート番号] フィールドに「
80
」と入力します。 - [完了] をクリックします。
IPv6 トラフィックを処理する手順は次のとおりです。
- [IP バージョン] で [IPv6] を選択します。
- [サブネットワーク] で [lb-subnet] を選択します。
- [IPv6 範囲] リストで、[IP アドレスを作成] を選択します。
- [名前] フィールドに「
network-lb-ipv6
」と入力します。 - [予約] をクリックします。
- [名前] フィールドに「
- [ポート] で [単一] を選択します。[ポート番号] フィールドに「
80
」と入力します。 - [完了] をクリックします。
[フロントエンドの構成] の左側にある青い丸のチェックマークが表示されていれば、設定に成功しています。
構成を確認する
- [確認と完了] をクリックします。
- ロードバランサの構成を確認します。
- 省略可: [同等のコード] をクリックして、ロードバランサの作成に使用する REST API リクエストを表示します。
[作成] をクリックします。
[ロード バランシング] ページで、新しいロードバランサの [バックエンド] 列に緑色のチェックマークが表示されていれば、新しく作成したロードバランサは正常な状態です。
2 つ目のロードバランサを作成する
構成を開始する
Google Cloud コンソールで、[ロード バランシング] ページに移動します。
- [ロードバランサを作成] をクリックします。
- [ロードバランサの種類] で [ネットワーク ロードバランサ(TCP / UDP / SSL)] を選択し、[次へ] をクリックします。
- [プロキシまたはパススルー] で [パススルー ロードバランサ] を選択し、[次へ] をクリックします。
- [インターネット接続または内部] で [インターネット接続(外部)] を選択し、[次へ] をクリックします。
- [構成] をクリックします。
基本的な構成
- [名前] フィールドに、新しいロードバランサの名前
backend-service-l3-default
を入力します。 - [リージョン] リストで [
us-central1
] を選択します。
バックエンドの構成
- [バックエンドの構成] をクリックします。
- [バックエンドの構成] ページで次の変更を行います。
- [新しいバックエンド] セクションで、[IP スタックタイプ] を選択します。IPv4 トラフィックと IPv6 トラフィックの両方を処理するデュアル スタック バックエンドを作成した場合は、[IPv4 と IPv6(デュアルスタック)] を選択します。IPv4 トラフィックのみを処理するには、[IPv4(シングルスタック)] を選択します。
- [インスタンス グループ] リストで
ig-us-l3-default
を選択し、[完了] をクリックします。 - [プロトコル] リストで [L3(複数のプロトコル)] を選択します。
- [ヘルスチェック] リストで [ヘルスチェックを作成] をクリックし、次の情報を入力します。
- 名前:
tcp-health-check-8080
- プロトコル:
TCP
- ポート:
8080
- 名前:
- [保存] をクリックします。
- 続行する前に、[バックエンドの構成] の隣に青いチェックマークがあることを確認します。
フロントエンドの構成
- [フロントエンドの構成] をクリックします。
- [名前] フィールドに「
forwarding-rule-l3-default
」と入力します。 - IPv4 トラフィックを処理する手順は次のとおりです。
- [IP バージョン] で [IPv4] を選択します。
- [内部 IP の目的] セクションの [IP アドレス] リストで、[IP アドレスを作成] を選択します。
- [名前] フィールドに「
network-lb-ipv4
」と入力します。 - [予約] をクリックします。
- [名前] フィールドに「
- [プロトコル] リストで [L3(複数のプロトコル)] を選択します。
- [ポート] で [すべて] を選択します。
- [完了] をクリックします。
IPv6 トラフィックを処理する手順は次のとおりです。
- [IP バージョン] で [IPv6] を選択します。
- [サブネットワーク] で [lb-subnet] を選択します。
- [IPv6 範囲] リストで、[IP アドレスを作成] を選択します。
- [名前] フィールドに「
network-lb-ipv6
」と入力します。 - [予約] をクリックします。
- [名前] フィールドに「
- [プロトコル] フィールドで、[L3(複数のプロトコル)] を選択します。
- [ポート] で [すべて] を選択します。
- [完了] をクリックします。
[フロントエンドの構成] の左側にある青い丸のチェックマークが表示されていれば、設定に成功しています。
構成を確認する
- [確認と完了] をクリックします。
- ロードバランサの構成を確認します。
- 省略可: [同等のコード] をクリックして、ロードバランサの作成に使用する REST API リクエストを表示します。
[作成] をクリックします。
[ロード バランシング] ページで、新しいロードバランサの [バックエンド] 列に緑色のチェックマークが表示されていれば、新しく作成したロードバランサは正常な状態です。
gcloud
静的外部 IP アドレスを予約します。
IPv4 トラフィックの場合: ロードバランサに静的外部 IP アドレスを作成します。
gcloud compute addresses create network-lb-ipv4 \ --region us-central1
IPv6 トラフィックの場合: ロードバランサの静的外部 IPv6 アドレス範囲を作成します。使用するサブネットは、外部 IPv6 サブネット範囲のあるデュアル スタック サブネットである必要があります。
gcloud compute addresses create network-lb-ipv6 \ --region us-central1 \ --subnet lb-subnet \ --ip-version IPV6 \ --endpoint-type NETLB
ポート
80
の TCP ヘルスチェックを作成します。このヘルスチェックは、ig-us-tcp-80
インスタンス グループのバックエンドの正常性を確認するために使用されます。gcloud compute health-checks create tcp tcp-health-check-80 \ --region us-central1 \ --port 80
ポート
8080
の TCP ヘルスチェックを作成します。このヘルスチェックは、ig-us-l3-default
インスタンス グループのバックエンドの正常性を確認するために使用されます。gcloud compute health-checks create tcp tcp-health-check-8080 \ --region us-central1 \ --port 8080
ポート
80
の TCP トラフィックを処理するロードバランサを作成します。プロトコルを
TCP
に設定してバックエンド サービスを作成します。gcloud compute backend-services create backend-service-tcp-80 \ --protocol TCP \ --health-checks tcp-health-check-80 \ --health-checks-region us-central1 \ --region us-central1
バックエンド インスタンス グループをバックエンド サービスに追加します。
gcloud compute backend-services add-backend backend-service-tcp-80 \ --instance-group ig-us-tcp-80 \ --instance-group-zone us-central1-a \ --region us-central1
IPv4 トラフィックの場合: ポート
80
の受信 TCP トラフィックをバックエンド サービスに転送する転送ルールを作成します。TCP
はデフォルトの転送ルール プロトコルで、明示的に設定する必要はありません。手順 1 で予約した IP アドレスをロードバランサの静的外部 IP アドレスとして使用します。
gcloud compute forwarding-rules create forwarding-rule-tcp-80 \ --load-balancing-scheme external \ --region us-central1 \ --ports 80 \ --address network-lb-ipv4 \ --backend-service backend-service-tcp-80
IPv6 トラフィックの場合: ポート
80
の受信 TCP トラフィックをバックエンド サービスに転送する転送ルールを作成します。TCP
はデフォルトの転送ルール プロトコルで、明示的に設定する必要はありません。手順 1 で予約した IPv6 アドレス範囲を、ロードバランサの静的外部 IP アドレスとして使用します。使用するサブネットは、外部 IPv6 サブネット範囲のあるデュアル スタック サブネットである必要があります。
gcloud compute forwarding-rules create forwarding-rule-tcp-80 \ --load-balancing-scheme external \ --region us-central1 \ --network-tier PREMIUM \ --ip-version IPV6 \ --subnet lb-subnet \ --address network-lb-ipv6 \ --ports 80 \ --backend-service backend-service-tcp-80
TCP(ポート
8080
)、UDP、ESP、ICMP トラフィックを処理するロードバランサを作成します。プロトコルを
UNSPECIFIED
に設定してバックエンド サービスを作成します。gcloud compute backend-services create backend-service-l3-default \ --protocol UNSPECIFIED \ --health-checks tcp-health-check-8080 \ --health-checks-region us-central1 \ --region us-central1
バックエンド インスタンス グループをバックエンド サービスに追加します。
gcloud compute backend-services add-backend backend-service-l3-default \ --instance-group ig-us-l3-default \ --instance-group-zone us-central1-c \ --region us-central1
IPv4 トラフィックの場合: サポートされているすべての IP プロトコル トラフィック(ポート
8080
の TCP、UDP、ESP、ICMP など)を処理するため、プロトコルをL3_DEFAULT
に設定した転送ルールを作成します。すべてのポートにL3_DEFAULT
転送ルールを構成する必要があります。最初のロードバランサと同じ外部 IPv4 アドレスを使用します。
gcloud compute forwarding-rules create forwarding-rule-l3-default \ --load-balancing-scheme external \ --region us-central1 \ --ports all \ --ip-protocol L3_DEFAULT \ --address network-lb-ipv4 \ --backend-service backend-service-l3-default
IPv6 トラフィックの場合: サポートされているすべての IP プロトコル トラフィック(ポート
8080
の TCP、UDP、ESP、ICMP など)を処理するため、プロトコルをL3_DEFAULT
に設定した転送ルールを作成します。すべてのポートにL3_DEFAULT
転送ルールを構成する必要があります。手順 1 で予約した IPv6 アドレス範囲を、ロードバランサの静的外部 IP アドレスとして使用します。使用するサブネットは、外部 IPv6 サブネット範囲のあるデュアル スタック サブネットである必要があります。
gcloud compute forwarding-rules create forwarding-rule-l3-default \ --load-balancing-scheme external \ --region us-central1 \ --network-tier PREMIUM \ --ip-version IPV6 \ --subnet lb-subnet \ --address network-lb-ipv6 \ --ports all \ --ip-protocol L3_DEFAULT \ --backend-service backend-service-l3-default
ロードバランサをテストする
ロード バランシング サービスの構成が完了したので、ロードバランサの外部 IP アドレスにトラフィックの送信を開始できます。また、バックエンド インスタンスに分散されるトラフィックを監視できます。
ロードバランサの外部 IP アドレスを調べる
コンソール
- ロード バランシングの [詳細] ページにある [転送ルール] タブに移動します。
[転送ルール] タブに移動 - ロードバランサが使用する転送ルールを探します。
- [IP アドレス] 列で、IPv4 と IPv6 の各転送ルールに表示されている外部 IP アドレスをメモします。
gcloud: IPv4
次のコマンドを入力して、ロードバランサが使用する転送ルールの外部 IP アドレスを表示します。
gcloud compute forwarding-rules describe forwarding-rule-tcp-80 \ --region us-central1
この例では、両方の IPv4 転送ルールに同じ IP アドレスを使用しているため、forwarding-rule-l3-default
も使用できます。
gcloud: IPv6
次のコマンドを入力して、ロードバランサが使用する forwarding-rule-tcp-80
転送ルールの外部 IPv6 アドレスを表示します。
gcloud compute forwarding-rules describe forwarding-rule-tcp-80 \ --region us-central1
この例では、両方の IPv6 転送ルールに同じ IP アドレスを使用しているため、forwarding-rule-l3-default
も使用できます。
ロードバランサにトラフィックを送信する
この手順により、ロードバランサに外部トラフィックが送信されます。次のテストを行い、ポート 80 の TCP トラフィックが ig-us-tcp-80
インスタンス グループによって負荷分散され、その他すべてのトラフィック(ポート 8080 の TCP、UDP、ESP、ICMP)が ig-us-l3-default
インスタンス グループによって負荷分散されていることを確認します。
ポート 80 の TCP リクエストの動作を確認する
curl
を使用して IP アドレスに接続し、ロードバランサにウェブ リクエストを送信します(ポート 80 の TCP 経由)。IPv4 接続のクライアントから、次のコマンドを実行します。
$ while true; do curl -m1 IP_ADDRESS; done
IPv6 接続のクライアントから、次のコマンドを実行します。
$ while true; do curl -m1 http://IPV6_ADDRESS; done
たとえば、割り当てられた IPv6 アドレスが
[2001:db8:1:1:1:1:1:1/96]
の場合、コマンドは次のようになります。$ while true; do curl -m1 http://[2001:db8:1:1:1:1:1:1]; done
curl
コマンドによって返された値の文字列をメモします。レスポンスを生成するバックエンド VM の名前が文字列内に表示されます(たとえば、Page served from: VM_NAME
)。ig-us-tcp-80
インスタンス グループのインスタンスからのみ、レスポンスが返されます。最初のレスポンスで失敗した場合は、構成が完全に読み込まれてインスタンスが正常であるとマークされるまで最大 30 秒待ってから、もう一度やり直してください。
ポート 8080 の TCP リクエストの動作を確認する
curl
を使用して IP アドレスに接続し、ロードバランサにウェブ リクエストを送信します(ポート 8080
の TCP 経由)。
IPv4 接続のクライアントから、次のコマンドを実行します。
$ while true; do curl -m1 IPV4_ADDRESS:8080; done
IPv6 接続のクライアントから、次のコマンドを実行します。
$ while true; do curl -m1 http://IPV6_ADDRESS; done
たとえば、割り当てられた IPv6 アドレスが
[2001:db8:1:1:1:1:1:1/96]
の場合、コマンドは次のようになります。$ while true; do curl -m1 http://[2001:db8:1:1:1:1:1:1]:8080; done
curl
コマンドによって返された値の文字列をメモします。ig-us-l3-default
インスタンス グループのインスタンスからのみ、レスポンスが返されます。
これは、ロードバランサの IP アドレスのポート 8080
に送信されたトラフィックが、ig-us-l3-default
インスタンス グループのバックエンドによってのみ処理されていることを示しています。
ICMP リクエストの動作を確認する
ICMP トラフィックの動作を確認するには、tcpdump
コマンドを実行して、ロードバランサへの ICMP リクエストを ig-us-l3-default
インスタンス グループのバックエンド VM のみが処理していることを確認します。
バックエンド VM に SSH で接続します。
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
[VM インスタンス] ページに移動仮想マシン インスタンスのリストで、接続するインスタンスの行にある [SSH] をクリックします。
次のコマンドを実行し、
tcpdump
を使用して ICMP トラフィックのリッスンを開始します。sudo tcpdump icmp -w ~/icmpcapture.pcap -s0 -c 10000 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
SSH ウィンドウを開いたままにします。
4 つのバックエンド VM すべてに手順 1 と 2 を繰り返します。
ロードバランサに ICMP リクエストを送信します。
IPv4 レスポンスをテストするには、
ping
を使用してロードバランサの IPv4 アドレスに接続します。ping IPV4_ADDRESS
IPv6 レスポンスをテストするには、
ping6
を使用してロードバランサの IPv6 アドレスに接続します。ping6 IPV6_ADDRESS
たとえば、割り当てられた IPv6 アドレスが
[2001:db8:1:1:1:1:1:1/96]
の場合、コマンドは次のようになります。ping6 2001:db8:1:1:1:1:1:1
開いている各 VM の SSH ウィンドウに戻り、
tcpdump
キャプチャ コマンドを停止します。これを行うには、Ctrl+C を使用します。VM ごとに、
icmpcapture.pcap
ファイルにあるtcpdump
コマンドの出力を確認します。sudo tcpdump -r ~/icmpcapture.pcap -n
ig-us-l3-default
インスタンス グループのバックエンド VM の場合、次のようなエントリが表示されます。reading from file /home/[user-directory]/icmpcapture.pcap, link-type EN10MB (Ethernet) 22:13:07.814486 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 1, length 64 22:13:07.814513 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 1, length 64 22:13:08.816150 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 2, length 64 22:13:08.816175 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 2, length 64 22:13:09.817536 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 3, length 64 22:13:09.817560 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 3, length 64 ...
ig-us-tcp-80
インスタンス グループのバックエンド VM の場合は、パケットを受信していないため、ファイルに何も記録されません。reading from file /home/[user-directory]/icmpcapture.pcap, link-type EN10MB (Ethernet)
追加の構成オプション
BYOIP を含む IPv6 転送ルールを作成する
前の手順で作成したロードバランサは、IP version
を IPv4
または IPv6
とする転送ルールで構成されています。このセクションでは、お客様所有 IP(BYOIP)アドレスを使用して IPv6 転送ルールを作成する手順について説明します。
お客様所有 IP アドレスを使用すると、Google Cloud リソースに独自のパブリック IPv6 アドレスをプロビジョニングして使用できます。詳細については、お客様所有 IP アドレスの使用をご覧ください。
BYOIP アドレスを使用して IPv6 転送ルールの構成を開始する前に、次の手順を完了する必要があります。
新しい転送ルールを作成するには、次の手順を行います。
コンソール
Google Cloud コンソールで、[ロード バランシング] ページに移動します。
- 変更するロードバランサの名前をクリックします。
- [ 編集] をクリックします。
- [フロントエンドの構成] をクリックします。
- [フロントエンド IP とポートの追加] をクリックします。
- [新しいフロントエンドの IP とポート] セクションで、次の情報を指定します。
- [プロトコル] は [TCP] です。
- [IP バージョン] フィールドで、[IPv6] を選択します。
- [IPv6 範囲のソース] フィールドで、[BYOIP] を選択します。
- [IP コレクション] リストで、転送ルール オプションを有効にして、前の手順で作成したサブプレフィックスを選択します。
- [IPv6 範囲] フィールドに IPv6 アドレス範囲を入力します。IPv6 アドレス範囲は、IPv6 サブプレフィックスの仕様に準拠していなければなりません。
- [ポート] フィールドにポート番号を入力します。
- [完了] をクリックします。
- [フロントエンド IP とポートの追加] をクリックします。
- [新しいフロントエンドの IP とポート] セクションで、次の情報を指定します。
- [プロトコル] は [L3(複数のプロトコル)] です。
- [IP バージョン] フィールドで、[IPv6] を選択します。
- [IPv6 範囲のソース] フィールドで、[BYOIP] を選択します。
- [IP コレクション] リストで、転送ルール オプションを有効にして、前の手順で作成したサブプレフィックスを選択します。
- [IPv6 範囲] フィールドに IPv6 アドレス範囲を入力します。IPv6 アドレス範囲は、IPv6 サブプレフィックスの仕様に準拠していなければなりません。
- [ポート] フィールドで [すべて] を選択します。
- [完了] をクリックします。
- [更新] をクリックします。
Google Cloud CLI
gcloud compute forwarding-rules create
コマンドを使用して転送ルールを作成します。
gcloud compute forwarding-rules create FWD_RULE_NAME \ --load-balancing-scheme EXTERNAL \ --ip-protocol L3_DEFAULT \ --ports ALL \ --ip-version IPV6 \ --region REGION_A \ --address IPV6_CIDR_RANGE \ --backend-service BACKEND_SERVICE \ --ip-collection PDP_NAME
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
: 転送ルールの名前REGION_A
: 転送ルールのリージョンIPV6_CIDR_RANGE
: 転送ルールが提供する IPv6 アドレス範囲。IPv6 アドレス範囲は、IPv6 サブプレフィックスの仕様に準拠していなければなりません。BACKEND_SERVICE
: バックエンド サービスの名前PDP_NAME
: パブリック委任プレフィックスの名前。PDP は、EXTERNAL_IPV6_FORWARDING_RULE_CREATION モードのサブプレフィックスでなければなりません。
次のステップ
- ゾーン NEG バックエンドを使用して外部パススルー ネットワーク ロードバランサを構成し、パケットを VM インスタンスの
nic0
以外のネットワーク インターフェースに転送できるようにする。ゾーン NEG を使用した外部パススルー ネットワーク ロードバランサを設定するをご覧ください。 - 外部パススルー ネットワーク ロードバランサがバックエンド サービスでどのように動作するか確認する。バックエンド サービスベースの外部パススルー ネットワーク ロードバランサの概要をご覧ください。
- 外部パススルー ネットワーク ロードバランサをターゲット プール バックエンドからリージョン バックエンド サービスに移行する方法を確認する。外部パススルー ネットワーク ロードバランサをターゲット プールからバックエンド サービスに移行するをご覧ください。
- Google Cloud Armor を使用して外部パススルー ネットワーク ロードバランサの高度なネットワーク DDoS 保護を構成する。高度なネットワーク DDoS 保護を構成するをご覧ください。
- リソースを削除する。ロードバランサの設定の削除をご覧ください。