このページでは、複数のプロトコルのトラフィックをロードバランスする内部パススルー ネットワーク ロードバランサの作成方法について説明します。
TCP と UDP を含む複数のプロトコルのロードバランサを構成するには、プロトコルを L3_DEFAULT に設定した転送ルールを作成します。この転送ルールは、プロトコルが UNSPECIFIED に設定されたバックエンド サービスを参照します。
この例では、1 つの内部パススルー ネットワーク ロードバランサを使用して、us-west1 リージョンのバックエンド VM 全体にトラフィックを分散します。ロードバランサには、TCP、UDP、ICMP、ICMPv6、SCTP、ESP、AH、GRE を処理するため、プロトコルが L3_DEFAULT の転送ルールがあります。
始める前に
- Google Cloud CLI をインストールします。ツールの完全な概要については、gcloud CLI の概要をご覧ください。ロード バランシングに関連するコマンドについては、API と gcloud CLI のリファレンスをご覧ください。gcloud CLI を初めて実行する場合は、最初に
gcloud initコマンドを実行して、認証を行います。 - bash について学習します。
権限
このガイドで必要になる権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
- ロードバランサ リソースの作成: Compute ロードバランサ管理者(
roles/compute.loadBalancerAdmin) - Compute Engine インスタンスとインスタンス グループの作成: Compute インスタンス管理者(
roles/compute.instanceAdmin.v1) -
ネットワーキング コンポーネントの作成: Compute ネットワーク管理者(
roles/compute.networkAdmin)
ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
L3_DEFAULT トラフィックにロードバランサを設定する
このセクションの手順では、次の構成について説明します。
lb-networkという名前のカスタムモードの VPC ネットワークを使用する例。IPv4 トラフィックのみを処理する場合は、自動モード ネットワークを使用できます。ただし、IPv6 トラフィックにはカスタムモードのサブネットが必要です。- IPv4 トラフィックに必要なシングル スタック サブネット(
stack-typeはIPv4に設定)。カスタムモードの VPC ネットワークでシングルスタック サブネットを作成する場合は、サブネットに IPv4 サブネット範囲を選択します。IPv6 トラフィックには、デュアルスタック サブネット(stack-typeをIPV4_IPV6に設定)も必要です。カスタムモードの VPC ネットワークにデュアルスタック サブネットを作成する場合は、サブネットに IPv6 アクセスタイプを選択します。この例では、サブネットのipv6-access-typeパラメータをINTERNALに設定します。このサブネット上の新しい VM には、内部 IPv4 アドレスと内部 IPv6 アドレスの両方を割り当てることができます。 - バックエンド VM への受信接続を許可するファイアウォール ルール。
- この例で使用されているバックエンド インスタンス グループとロードバランサのコンポーネントは、次のリージョンとサブネットに存在します。
- リージョン:
us-west1 - サブネット:
lb-subnet(プライマリ IPv4 アドレス範囲は10.1.2.0/24)。サブネットに構成する IPv4 アドレス範囲を選択します。IPv6 アドレス範囲は自動的に割り当てられます。Google では、固定サイズ(/64)の IPv6 CIDR ブロックを提供しています。
- リージョン:
- ゾーン
us-west1-aのマネージド インスタンス グループのバックエンド VM。 - バックエンドへの接続をテストするクライアント VM。
- 次のコンポーネントを含む内部パススルー ネットワーク ロードバランサ。
- バックエンド サービスのヘルスチェック。
- ゾーン インスタンス グループへの接続を管理するために、プロトコルが
UNSPECIFIEDに設定されたus-west1リージョンのバックエンド サービス。 - プロトコルが
L3_DEFAULTに設定され、ポートがALLに設定された転送ルール。
ネットワーク、リージョン、サブネットを構成する
内部 IPv6 範囲を持つサブネットを構成するには、Virtual Private Cloud(VPC)ネットワーク ULA の内部 IPv6 範囲を有効にします。内部 IPv6 サブネット範囲は、この範囲から割り振られます。サンプルのネットワークとサブネットを作成する方法は次のとおりです。
コンソール
IPv4 トラフィックと IPv6 トラフィックの両方をサポートするには、次の操作を行います。
Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
[VPC ネットワークを作成] をクリックします。
[名前] に「
lb-network」と入力します。このネットワークのサブネットで内部 IPv6 アドレス範囲を構成する場合は、次の手順を行います。
- [VPC ネットワーク ULA の内部 IPv6 範囲] で、[有効] を選択します。
- [ULA の内部 IPv6 範囲を割り当てる] で、[自動] または [手動] を選択します。
[サブネット作成モード] で [カスタム] を選択します。
[新しいサブネット] セクションで、サブネットに次の構成パラメータを指定します。
- [名前] に「
lb-subnet」と入力します。 - [リージョン] で
us-west1を選択します。 - デュアルスタック サブネットを作成するには、[IP スタックタイプ] で [IPv4 と IPv6(デュアルスタック)] を選択します。
- [IPv4 範囲] に「
10.1.2.0/24」と入力します。 - [IPv6 アクセスタイプ] で [内部] を選択します。
- [名前] に「
[完了] をクリックします。
[作成] をクリックします。
IPv4 トラフィックをサポートするには、次の操作を行います。
Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
[VPC ネットワークを作成] をクリックします。
[名前] に「
lb-network」と入力します。[サブネット] セクションで次の設定を行います。
- [サブネット作成モード] を [カスタム] に設定します。
- [新しいサブネット] セクションに、次の情報を入力します。
- 名前:
lb-subnet - リージョン:
us-west1 - IP スタックタイプ: IPv4(シングルスタック)
- IP アドレス範囲:
10.1.2.0/24
- 名前:
- [完了] をクリックします。
[作成] をクリックします。
gcloud
IPv4 トラフィックと IPv6 トラフィックの両方の場合は、次のコマンドを使用します。
新しいカスタムモードの VPC ネットワークを作成するには、
gcloud compute networks createコマンドを実行します。このネットワークのサブネットで内部 IPv6 範囲を構成するには、
--enable-ula-internal-ipv6フラグを使用します。このオプションでは、 Google Cloud が内部 IPv6 サブネット範囲に使用するfd20::/20範囲内の/48ULA 接頭辞を割り当てます。gcloud compute networks create lb-network \ --subnet-mode=custom \ --enable-ula-internal-ipv6
lb-network内にus-west1リージョンのバックエンドのサブネットを作成します。サブネットを作成するには、
gcloud compute networks subnets createコマンドを実行します。gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1 \ --stack-type=IPV4_IPV6 --ipv6-access-type=INTERNAL
IPv4 トラフィックのみの場合は、次のコマンドを使用します。
カスタム VPC ネットワークを作成するには、
gcloud compute networks createコマンドを使用します。gcloud compute networks create lb-network --subnet-mode=custom
lb-networkネットワーク内のus-west1リージョンにバックエンドのサブネットを作成するには、gcloud compute networks subnets createコマンドを使用します。gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
API
IPv4 トラフィックと IPv6 トラフィックの両方の場合は、次のコマンドを使用します。
新しいカスタムモードの VPC ネットワークを作成します。
networks.insertメソッドにPOSTリクエストを送信します。このネットワークのサブネットで内部 IPv6 範囲を構成するには、
enableUlaInternalIpv6をtrueに設定します。このオプションは、Google が内部 IPv6 サブネット範囲に使用するfd20::/20範囲内から/48範囲を割り当てます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "autoCreateSubnetworks": false, "name": "lb-network", "mtu": MTU, "enableUlaInternalIpv6": true, }次のように置き換えます。
PROJECT_ID: VPC ネットワークが作成されているプロジェクトの ID。MTU: ネットワークの最大伝送単位。MTU は、1460(デフォルト)または1500のいずれかです。MTU を1500に設定する前に、最大伝送単位の概要を確認してください。
subnetworks.insertメソッドにPOSTリクエストを送信します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "ipCidrRange": "10.1.2.0/24", "network": "lb-network", "name": "lb-subnet" "stackType": IPV4_IPV6, "ipv6AccessType": Internal }
IPv4 トラフィックのみの場合は、次の操作を行います。
networks.insertメソッドにPOSTリクエストを送信します。PROJECT_IDは、Google Cloud プロジェクトの ID に置き換えます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "name": "lb-network", "autoCreateSubnetworks": false }subnetworks.insertメソッドに 2 つのPOSTリクエストを送信します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks { "name": "lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "ipCidrRange": "10.1.2.0/24", "privateIpGoogleAccess": false }
ファイアウォール ルールを構成する
この例では、次のファイアウォール ルールを使用します。
fw-allow-lb-access: VPC ネットワーク内のすべてのターゲットに適用される上り(内向き)ルールで、10.1.2.0/24の範囲にある送信元からのトラフィックを許可します。このルールは、サブネットにあるクライアントからの受信トラフィックを許可します。fw-allow-lb-access-ipv6: VPC ネットワーク内のすべてのターゲットに適用される上り(内向き)ルールであり、IPv6 の範囲の送信元からのトラフィックを許可するもの。このルールは、サブネットにあるすべてのクライアントからの IPv6 受信トラフィックを許可します。fw-allow-ssh: ロードバランスされたインスタンスに適用される上り(内向き)ルール。任意のアドレスから TCP ポート 22 への SSH 接続が許可されます。このルールには、送信元 IP 範囲をより限定的に指定できます。たとえば、SSH セッションを開始するシステムの IP 範囲のみを許可するように指定できます。この例では、ターゲットタグallow-sshを使用して、適用する VM を識別させています。fw-allow-health-check: ロードバランスされているインスタンスに適用される上り(内向き)ルール。 Google Cloud ヘルスチェック システム(130.211.0.0/22と35.191.0.0/16)からのトラフィックを許可します。この例では、ターゲットタグallow-health-checkを使用して、適用するインスタンスが識別されます。fw-allow-health-check-ipv6: ロードバランスされているインスタンスに適用される上り(内向き)ルール。 Google Cloud ヘルスチェック システム(2600:2d00:1:b029::/64)からのトラフィックを許可します。この例では、ターゲットタグallow-health-check-ipv6を使用して、適用するインスタンスが識別されます。
これらのファイアウォール ルールがない場合は、デフォルトの上り(内向き)拒否ルールによってバックエンド インスタンスへの受信トラフィックがブロックされます。
コンソール
Google Cloud コンソールで、[ファイアウォール ポリシー] ページに移動します。
IPv4 TCP、UDP、ICMP トラフィックがバックエンド インスタンス グループ
ig-aに到達できるようにするには:- [ファイアウォール ルールを作成] をクリックします。
- 名前:
fw-allow-lb-access - ネットワーク:
lb-network - 優先度:
1000 - トラフィックの方向: 上り(内向き)
- 一致したときのアクション: 許可
- ターゲット: ネットワーク内のすべてのインスタンス
- ソースフィルタ: IPv4 の範囲
- 送信元 IPv4 範囲:
10.1.2.0/24 - [プロトコルとポート] で [指定したプロトコルとポート] を選択します。
- [TCP] を選択して「
ALL」と入力します。 - [UDP] を選択します。
- [その他] を選択して「
ICMP」と入力します。
- [TCP] を選択して「
[作成] をクリックします。
受信 SSH 接続を許可するには:
- [ファイアウォール ルールを作成] をクリックします。
- 名前:
fw-allow-ssh - ネットワーク:
lb-network - 優先度:
1000 - トラフィックの方向: 上り(内向き)
- 一致したときのアクション: 許可
- ターゲット: 指定されたターゲットタグ
- ターゲットタグ:
allow-ssh - ソースフィルタ: IPv4 の範囲
- 送信元 IPv4 範囲:
0.0.0.0/0 - プロトコルとポート: [指定されたプロトコルとポート] を選択して、「
tcp:22」を入力します。
[作成] をクリックします。
IPv6 TCP、UDP、ICMP トラフィックがバックエンド インスタンス グループ
ig-aに到達できるようにするには:- [ファイアウォール ルールを作成] をクリックします。
- 名前:
fw-allow-lb-access-ipv6 - ネットワーク:
lb-network - 優先度:
1000 - トラフィックの方向: 上り(内向き)
- 一致したときのアクション: 許可
- ターゲット: ネットワーク内のすべてのインスタンス
- ソースフィルタ: IPv6 範囲
- 送信元 IPv6 範囲:
lb-subnetに割り当てられた IPV6_ADDRESS - [プロトコルとポート] で [指定したプロトコルとポート] を選択します。
- [TCP] を選択して「
0-65535」と入力します。 - [UDP] を選択します。
- [その他] を選択し、ICMPv6 プロトコルに「
58」と入力します。
- [TCP] を選択して「
[作成] をクリックします。
Google Cloud IPv6 ヘルスチェックを許可するには:
- [ファイアウォール ルールを作成] をクリックします。
- 名前:
fw-allow-health-check-ipv6 - ネットワーク:
lb-network - 優先度:
1000 - トラフィックの方向: 上り(内向き)
- 一致したときのアクション: 許可
- ターゲット: 指定されたターゲットタグ
- ターゲットタグ:
allow-health-check-ipv6 - ソースフィルタ: IPv6 範囲
- 送信元 IPv6 範囲:
2600:2d00:1:b029::/64 - プロトコルとポート: すべて許可
[作成] をクリックします。
Google Cloud IPv4 ヘルスチェックを許可するには:
- [ファイアウォール ルールを作成] をクリックします。
- 名前:
fw-allow-health-check - ネットワーク:
lb-network - 優先度:
1000 - トラフィックの方向: 上り(内向き)
- 一致したときのアクション: 許可
- ターゲット: 指定されたターゲットタグ
- ターゲットタグ:
allow-health-check - ソースフィルタ: IPv4 の範囲
- 送信元 IPv4 範囲:
130.211.0.0/22と35.191.0.0/16 - プロトコルとポート: すべて許可
[作成] をクリックします。
gcloud
IPv4 TCP トラフィックがバックエンド インスタンス グループ
ig-aに到達できるようにするには、次のルールを作成します。gcloud compute firewall-rules create fw-allow-lb-access \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.1.2.0/24 \ --rules=tcp,udp,icmpネットワーク タグ
allow-sshを使用して VM への SSH 接続を許可するfw-allow-sshファイアウォール ルールを作成します。source-rangesを省略すると、Google Cloud は任意の送信元としてルールを解釈します。gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22IPv6 トラフィックがバックエンド インスタンス グループ
ig-aに到達できるようにするには、次のルールを作成します。gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=IPV6_ADDRESS \ --rules=allIPV6_ADDRESSは、lb-subnetに割り当てられた IPv6 アドレスに置き換えます。Google Cloudヘルスチェックを許可する
fw-allow-health-checkファイアウォール ルールを作成します。gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp,udp,icmpGoogle CloudIPv6 ヘルスチェックを許可する
fw-allow-health-check-ipv6ルールを作成します。gcloud compute firewall-rules create fw-allow-health-check-ipv6 \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check-ipv6 \ --source-ranges=2600:2d00:1:b029::/64 \ --rules=tcp,udp,icmp
API
fw-allow-lb-accessファイアウォール ルールを作成するには、firewalls.insertメソッドにPOSTリクエストを送信します。PROJECT_IDは、Google Cloud プロジェクトの ID に置き換えます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-lb-access", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "10.1.2.0/24" ], "allPorts": true, "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }firewalls.insertメソッドにPOSTリクエストを送信して、fw-allow-lb-access-ipv6ファイアウォール ルールを作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-lb-access-ipv6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "IPV6_ADDRESS" ], "allPorts": true, "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "58" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }IPV6_ADDRESS は、
lb-subnetに割り当てられた IPv6 アドレスに置き換えます。fw-allow-sshファイアウォール ルールを作成するには、firewalls.insertメソッドにPOSTリクエストを送信します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-ssh", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "0.0.0.0/0" ], "targetTags": [ "allow-ssh" ], "allowed": [ { "IPProtocol": "tcp", "ports": [ "22" ] } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }fw-allow-health-checkファイアウォール ルールを作成するには、firewalls.insertメソッドにPOSTリクエストを送信します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-health-check", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "130.211.0.0/22", "35.191.0.0/16" ], "targetTags": [ "allow-health-check" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }firewalls.insertメソッドにPOSTリクエストを送信して、fw-allow-health-check-ipv6ファイアウォール ルールを作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-health-check-ipv6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "2600:2d00:1:b029::/64" ], "targetTags": [ "allow-health-check-ipv6" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
バックエンド VM とインスタンス グループを作成する
このロード バランシングのシナリオでは、Compute Engine ゾーン マネージド インスタンス グループを作成し、Apache ウェブサーバーをインストールします。
IPv4 トラフィックと IPv6 トラフィックの両方を処理するには、バックエンド VM をデュアルスタックとして構成します。VM の stack-type を IPV4_IPV6 に設定します。VM は、サブネットから ipv6-access-type 設定(この例では INTERNAL)も継承します。IPv6 の要件の詳細については、内部パススルー ネットワーク ロードバランサの概要: 転送ルールをご覧ください。
既存の VM をバックエンドとして使用する場合は、gcloud compute instances network-interfaces update コマンドを使用して VM をデュアルスタックに更新します。
内部パススルー ネットワーク ロードバランサのバックエンド VM として参加するインスタンスでは、適切な Linux ゲスト環境、Windows ゲスト環境、または同等の機能を提供する他のプロセスが実行されている必要があります。
説明を簡単にするため、バックエンド VM では Debian GNU/Linux 12 を実行します。
インスタンス グループを作成する
コンソール
IPv4 トラフィックと IPv6 トラフィックの両方をサポートするには、次の操作を行います。
インスタンス テンプレートを作成します。 Google Cloud コンソールで、[インスタンス テンプレート] ページに移動します。
- [インスタンス テンプレートを作成] をクリックします。
- [名前] に「
vm-a1」と入力します。 - [ブートディスク] が 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
[ネットワーキング] セクションを開き、次の情報を指定します。
- [ネットワーク タグ] に
allow-sshとallow-health-check-ipv6を追加します。 - [ネットワーク インターフェース] で [default] をクリックし、次のフィールドを構成します。
- ネットワーク:
lb-network - サブネットワーク:
lb-subnet - IP スタックタイプ: IPv4 および IPv6(デュアルスタック)
- ネットワーク:
- [ネットワーク タグ] に
[作成] をクリックします。
IPv4 トラフィックをサポートするには、次の操作を行います。
インスタンス テンプレートを作成します。 Google Cloud コンソールで、[インスタンス テンプレート] ページに移動します。
[インスタンス テンプレートを作成] をクリックします。
- [名前] に「
vm-a1」と入力します。 - [ブートディスク] が 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
[ネットワーキング] セクションを開き、次の情報を指定します。
- [ネットワーク タグ] に
allow-sshとallow-health-checkを追加します。 - [ネットワーク インターフェース] で [default] をクリックし、次のフィールドを構成します。
- ネットワーク:
lb-network - サブネットワーク:
lb-subnet - IP スタックタイプ: IPv4(シングルスタック)
- ネットワーク:
- [ネットワーク タグ] に
[作成] をクリックします。
- [名前] に「
マネージド インスタンス グループを作成します。 Google Cloud コンソールの [インスタンス グループ] ページに移動します。
- [インスタンス グループを作成] をクリックします。
- [新しいマネージド インスタンス グループ(ステートレス)] を選択します。詳細については、ステートレス MIG とステートフル MIG をご覧ください。
- [名前] に「
ig-a」と入力します。 - [ロケーション] で [シングルゾーン] を選択します。
- [リージョン] で
us-west1を選択します。 - [ゾーン] で
us-west1-aを選択します。 - [インスタンス テンプレート] で [
vm-a1] を選択します。 グループ内に作成するインスタンスの数を指定します。
この例では、[自動スケーリング] で次のオプションを指定します。
- [自動スケーリング モード] で [
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 vm-a1 \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet \ --ipv6-network-tier=PREMIUM \ --stack-type=IPV4_IPV6 \ --tags=allow-ssh \ --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 vm-a1 \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet \ --tags=allow-ssh \ --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-a \ --zone us-west1-a \ --size 2 \ --template vm-a1
api
IPv4 トラフィックと IPv6 トラフィックの両方を処理するには、次の操作を行います。
instances.insertメソッドにPOSTリクエストを送信して VM を作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "vm-a1", "tags": { "items": [ "allow-health-check-ipv6", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "stackType": "IPV4_IPV6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-a1", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname="$(curl -H "Metadata-Flavor:Google" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)"\necho "Page served from: $vm_hostname" | \\\ntee /var/www/html/index.html\nsed -ire "s/^Listen 80$/Listen 8080/g" /etc/\\napache2/ports.conf\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
IPv4 トラフィックを処理する手順は次のとおりです。
instances.insertメソッドにPOSTリクエストを送信して VM を作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "vm-a1", "tags": { "items": [ "allow-health-check", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "stackType": "IPV4", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-a1", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname="$(curl -H "Metadata-Flavor:Google" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)"\necho "Page served from: $vm_hostname" | \\\ntee /var/www/html/index.html\nsed -ire "s/^Listen 80$/Listen 8080/g" /etc/\\napache2/ports.conf\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }instanceGroups.insertメソッドにPOSTリクエストを送信してインスタンス グループを作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups { "name": "ig-a", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }instanceGroups.addInstancesメソッドにPOSTリクエストを送信して、各インスタンス グループにインスタンスを追加します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a/addInstances { "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a1" } ] }
クライアント VM を作成する
この例では、クライアント VM をバックエンド(サーバー)VM と同じリージョンに作成します。クライアントを使用するのは、ロードバランサの構成を検証し、テスト セクションで説明されている想定される動作を示すためです。
IPv4 トラフィックと IPv6 トラフィックの場合:
コンソール
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
[インスタンスを作成] をクリックします。
[名前] を
vm-client-ipv6に設定します。[ゾーン] を
us-west1-aに設定します。[詳細オプション] セクションを開き、次の変更を行います。
- [ネットワーキング] を開き、[ネットワーク タグ] に
allow-sshを追加します。 - [ネットワーク インターフェース] で、[編集] をクリックして次の変更を行い、[完了] をクリックします。
- ネットワーク:
lb-network - サブネット:
lb-subnet - IP スタックタイプ: IPv4 と IPv6(デュアルスタック)
- プライマリ内部 IP: エフェメラル(自動)
- 外部 IP: エフェメラル
- ネットワーク:
- [ネットワーキング] を開き、[ネットワーク タグ] に
[作成] をクリックします。
gcloud
クライアント VM はロードバランサと同じリージョン内の任意のゾーンにあり、そのリージョン内の任意のサブネットを使用できます。この例では、クライアントは us-west1-a ゾーンにあり、バックエンド VM と同じサブネットを使用しています。
gcloud compute instances create vm-client-ipv6 \
--zone=us-west1-a \
--image-family=debian-12 \
--image-project=debian-cloud \
--stack-type=IPV4_IPV6 \
--tags=allow-ssh \
--subnet=lb-subnet
api
instances.insert メソッドに POST リクエストを送信します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances
{
"name": "vm-client-ipv6",
"tags": {
"items": [
"allow-ssh"
]
},
"machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2",
"canIpForward": false,
"networkInterfaces": [
{
"stackType": "IPV4_IPV6",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"accessConfigs": [
{
"type": "ONE_TO_ONE_NAT",
"name": "external-nat",
"networkTier": "PREMIUM"
}
]
}
],
"disks": [
{
"type": "PERSISTENT",
"boot": true,
"mode": "READ_WRITE",
"autoDelete": true,
"deviceName": "vm-client",
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/debian-image-name",
"diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard",
"diskSizeGb": "10"
}
}
],
"scheduling": {
"preemptible": false
},
"deletionProtection": false
}
IPv4 トラフィックの場合:
コンソール
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
[インスタンスを作成] をクリックします。
[名前] に「
vm-client」と入力します。[ゾーン] に「
us-west1-a」と入力します。[詳細オプション] セクションを開きます。
[ネットワーキング] を開いて次のフィールドを構成します。
- [ネットワーク タグ] に「
allow-ssh」と入力します。 - [ネットワーク インターフェース] で、次のように選択します。
- ネットワーク:
lb-network - サブネット:
lb-subnet
- ネットワーク:
- [ネットワーク タグ] に「
[作成] をクリックします。
gcloud
クライアント VM はロードバランサと同じリージョン内の任意のゾーンにあり、そのリージョン内の任意のサブネットを使用できます。この例では、クライアントは us-west1-a ゾーンにあり、バックエンド VM と同じサブネットを使用しています。
gcloud compute instances create vm-client \
--zone=us-west1-a \
--image-family=debian-12 \
--image-project=debian-cloud \
--tags=allow-ssh \
--subnet=lb-subnet
API
instances.insert メソッドに POST リクエストを送信します。
PROJECT_ID は、 Google Cloud プロジェクトの ID に置き換えます。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances
{
"name": "vm-client",
"tags": {
"items": [
"allow-ssh"
]
},
"machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2",
"canIpForward": false,
"networkInterfaces": [
{
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"accessConfigs": [
{
"type": "ONE_TO_ONE_NAT",
"name": "external-nat",
"networkTier": "PREMIUM"
}
]
}
],
"disks": [
{
"type": "PERSISTENT",
"boot": true,
"mode": "READ_WRITE",
"autoDelete": true,
"deviceName": "vm-client",
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/debian-image-name",
"diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard",
"diskSizeGb": "10"
}
}
],
"scheduling": {
"preemptible": false
},
"deletionProtection": false
}
ロードバランサ コンポーネントを構成する
複数のプロトコルに対して 1 つのロードバランサを作成します。
gcloud
ポート 80 の HTTP ヘルスチェックを作成します。このヘルスチェックは、
ig-aインスタンス グループのバックエンドの正常性を確認するために使用されます。gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80プロトコルを
UNSPECIFIEDに設定してバックエンド サービスを作成します。gcloud compute backend-services create be-ilb-l3-default \ --load-balancing-scheme=internal \ --protocol=UNSPECIFIED \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1バックエンド サービスにインスタンス グループを追加します。
gcloud compute backend-services add-backend be-ilb-l3-default \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-aIPv6 トラフィックの場合: サポートされているすべての IPv6 プロトコル トラフィックを処理するように、プロトコルを
L3_DEFAULTに設定した転送ルールを作成します。すべてのポートにL3_DEFAULT転送ルールを構成する必要があります。gcloud compute forwarding-rules create fr-ilb-ipv6 \ --region=us-west1 \ --load-balancing-scheme=internal \ --subnet=lb-subnet \ --ip-protocol=L3_DEFAULT \ --ports=ALL \ --backend-service=be-ilb-l3-default \ --backend-service-region=us-west1 \ --ip-version=IPV6
IPv4 トラフィックの場合: サポートされているすべての IPv4 プロトコル トラフィックを処理するように、プロトコルを
L3_DEFAULTに設定した転送ルールを作成します。すべてのポートにL3_DEFAULT転送ルールを構成する必要があります。10.1.2.99を内部 IP アドレスとして使用します。gcloud compute forwarding-rules create fr-ilb-l3-default \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=10.1.2.99 \ --ip-protocol=L3_DEFAULT \ --ports=ALL \ --backend-service=be-ilb-l3-default \ --backend-service-region=us-west1
API
regionHealthChecks.insertメソッドにPOSTリクエストを送信してヘルスチェックを作成します。PROJECT_IDは、Google Cloud プロジェクトの ID に置き換えます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/regionHealthChecks { "name": "hc-http-80", "type": "HTTP", "httpHealthCheck": { "port": 80 } }regionBackendServices.insertメソッドにPOSTリクエストを送信してリージョン バックエンド サービスを作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb-l3-default", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "UNSPECIFIED", "connectionDraining": { "drainingTimeoutSec": 0 } }IPv6 トラフィックの場合:
forwardingRules.insertメソッドにPOSTリクエストを送信して転送ルールを作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-ipv6", "IPProtocol": "L3_DEFAULT", "allPorts": true, "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default", "ipVersion": "IPV6", "networkTier": "PREMIUM" }IPv4 トラフィックの場合:
forwardingRules.insertメソッドにPOSTリクエストを送信して転送ルールを作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-l3-default", "IPAddress": "10.1.2.99", "IPProtocol": "L3_DEFAULT", "allPorts": true, "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default", "networkTier": "PREMIUM" }
ロードバランサのテスト
次のテストでは、ロードバランサの構成を検証し、想定される動作を確認します。
クライアント VM からの接続をテストする
このテストでは、ロードバランサのバックエンド VM からではなく、個別のクライアント VM からロードバランサに接続します。
gcloud:IPv6
クライアント VM インスタンスに接続します。
gcloud compute ssh vm-client-ipv6 --zone=us-west1-a
IPv6 転送ルール
fr-ilb-ipv6の説明を取得します。説明のIPV6_ADDRESSをメモします。gcloud compute forwarding-rules describe fr-ilb-ipv6 --region=us-west1
IPv6 接続のクライアントから、次のコマンドを実行します。
IPV6_ADDRESSは、fr-ilb-ipv6転送ルールのエフェメラル IPv6 アドレスに置き換えます。curl -m 10 -s http://IPV6_ADDRESS:80
たとえば、割り当てられた IPv6 アドレスが
[fd20:1db0:b882:802:0:46:0:0/96]:80の場合、コマンドは次のようになります。curl -m 10 -s http://[fd20:1db0:b882:802:0:46:0:0]:80
gcloud:IPv4
クライアント VM インスタンスに接続します。
gcloud compute ssh vm-client --zone=us-west1-a
IPv4 転送ルール
fr-ilbの説明を取得します。gcloud compute forwarding-rules describe fr-ilb --region=us-west1
curlを使用して IP アドレスに接続するロードバランサへのウェブ リクエストを作成します。レスポンスが異なるバックエンド VM から返ってくることを確認するために、このリクエストを繰り返します。レスポンスを生成する VM の名前が、各バックエンド VM 上で、/var/www/html/index.htmlのコンテンツによる HTML レスポンスのテキストとして表示されます。予想されるレスポンスはPage served from: vm-a1のようになります。curl http://10.1.2.99
転送ルールは、ポート
80、53を処理するように構成されています。これらのポートにトラフィックを送信するには、次のように、IP アドレスの後にコロン(:)とポート番号を追加します。curl http://10.1.2.99:80
ロードバランサの IP アドレスに ping を実行する
このテストでは、ロードバランサの IP アドレスに対して ping を実行できます。このテストではこの想定される動作が示されます。
gcloud:IPv6
クライアント VM インスタンスに接続します。
gcloud compute ssh vm-client-ipv6 --zone=us-west1-a
ロードバランサの IPv6 アドレスに対して ping を試行します。
IPV6_ADDRESSは、fr-ilb-ipv6転送ルールのエフェメラル IPv6 アドレスに置き換えます。レスポンスが返されます。この例では、
pingコマンドが機能します。ping6 IPV6_ADDRESS
たとえば、割り当てられた IPv6 アドレスが
[2001:db8:1:1:1:1:1:1/96]の場合、コマンドは次のようになります。ping6 2001:db8:1:1:1:1:1:1
出力は次のようになります。
@vm-client: ping
IPV6_ADDRESSPINGIPV6_ADDRESS(IPV6_ADDRESS) 56(84) bytes of data. 64 bytes fromIPV6_ADDRESS: icmp_seq=1 ttl=64 time=1.58 ms
gcloud:IPv4
クライアント VM インスタンスに接続します。
gcloud compute ssh vm-client --zone=us-west1-a
ロードバランサの IPv4 アドレスに対して ping を試行します。レスポンスが返されます。この例では、
pingコマンドが機能します。ping 10.1.2.99
次のような出力が表示されます。
@vm-client: ping 10.1.2.99 PING 10.1.2.99 (10.1.2.99) 56(84) bytes of data. 64 bytes from 10.1.2.99: icmp_seq=1 ttl=64 time=1.58 ms 64 bytes from 10.1.2.99: icmp_seq=2 ttl=64 time=0.242 ms 64 bytes from 10.1.2.99: icmp_seq=3 ttl=64 time=0.295 ms
追加の構成オプション
このセクションでは、代替および追加の構成オプションを提供する構成例を示します。これらのタスクはすべて省略可です。また、任意の順序で行うことができます。
この例では静的内部 IP アドレスを予約できます。この構成により、複数の内部転送ルールが、異なるプロトコルおよび異なるポートで同じ IP アドレスを使用できるようになります。サンプルのロードバランサのバックエンドは、引き続きリージョン us-west1 に配置する必要があります。
次の図は、この例のアーキテクチャを示しています。
次の転送ルール構成を使用することも検討できます。
複数のポートを使用した転送ルール:
- プロトコル
TCPのポート80,8080 - プロトコル
L3_DEFAULTのポートALL
- プロトコル
すべてのポートを含む転送ルール:
- プロトコル
TCPのポートALL - プロトコル
L3_DEFAULTのポートALL
- プロトコル
静的内部 IPv4 アドレスを予約
10.1.2.99 に静的内部 IP アドレスを予約し、その --purpose フラグを SHARED_LOADBALANCER_VIP に設定します。多くの転送ルールで同じ内部 IP アドレスを使用できるようにするには、--purpose フラグを指定する必要があります。
gcloud
gcloud compute addresses create コマンドを使用します。
gcloud compute addresses create internal-lb-ipv4 \
--region us-west1 \
--subnet lb-subnet \
--purpose SHARED_LOADBALANCER_VIP \
--addresses 10.1.2.99
API
addresses.insert メソッドを呼び出します。
PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/addresses
リクエストの本文には、addressType(INTERNAL に設定)、アドレスの name、IP アドレスが属する subnetwork を含める必要があります。address を 10.1.2.99 として指定する必要があります。
{
"addressType": "INTERNAL",
"name": "internal-lb-ipv4",
"subnetwork": "regions/us-west1/subnetworks/lb-subnet",
"purpose": "SHARED_LOADBALANCER_VIP",
"address": "10.1.2.99"
}
ロードバランサ コンポーネントを構成する
次のコンポーネントを使用して 3 つのロードバランサを構成します。
- 最初のロードバランサには、プロトコル
TCPとポート80の転送ルールがあります。ポート80で内部 IP アドレスに到達する TCP トラフィックは、TCP転送ルールによって処理されます。 - 2 番目のロードバランサには、プロトコル
UDPとポート53の転送ルールがあります。ポート53の内部 IP アドレスに到達する UDP トラフィックは、UDP転送ルールによって処理されます。 - 3 番目のロードバランサには、プロトコル
L3_DEFAULTとポートALLの転送ルールがあります。TCPまたはUDP転送ルールと一致しないトラフィックはすべて、L3_DEFAULT転送ルールによって処理されます。 - 3 つのロードバランサはすべて、転送ルールで同じ静的内部 IP アドレス(
internal-lb-ipv4)を共有します。
最初のロードバランサを作成する
ポート 80 の TCP トラフィックを処理するロードバランサを作成します。
gcloud
TCP トラフィックのバックエンド サービスを作成します。
gcloud compute backend-services create be-ilb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1バックエンド サービスにインスタンス グループを追加します。
gcloud compute backend-services add-backend be-ilb \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-aバックエンド サービスの転送ルールを作成します。内部 IP アドレスには、予約済みの静的内部 IP アドレス(
internal-lb-ipv4)を使用します。gcloud compute forwarding-rules create fr-ilb \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=internal-lb-ipv4 \ --ip-protocol=TCP \ --ports=80 \ --backend-service=be-ilb \ --backend-service-region=us-west1
API
regionBackendServices.insertメソッドにPOSTリクエストを送信して、リージョン バックエンド サービスを作成します。PROJECT_IDは、Google Cloud プロジェクトの ID に置き換えます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "TCP", "connectionDraining": { "drainingTimeoutSec": 0 } }Create the forwarding rule by making a
POSTrequest to theforwardingRules.insertmethod:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb", "IPAddress": "internal-lb-ipv4", "IPProtocol": "TCP", "ports": [ "80" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb", "networkTier": "PREMIUM" }
2 つ目のロードバランサを作成する
ポート 53 の UDP トラフィックを処理する 2 つ目のロードバランサを作成します。
gcloud
プロトコルを
UDPに設定してバックエンド サービスを作成します。gcloud compute backend-services create be-ilb-udp \ --load-balancing-scheme=internal \ --protocol=UDP \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1バックエンド サービスにインスタンス グループを追加します。
gcloud compute backend-services add-backend be-ilb-udp \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-aバックエンド サービスの転送ルールを作成します。内部 IP アドレスには、予約済みの静的内部 IP アドレス(
internal-lb-ipv4)を使用します。gcloud compute forwarding-rules create fr-ilb-udp \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=internal-lb-ipv4 \ --ip-protocol=UDP \ --ports=53 \ --backend-service=be-ilb-udp \ --backend-service-region=us-west1
API
regionBackendServices.insertメソッドにPOSTリクエストを送信して、リージョン バックエンド サービスを作成します。PROJECT_IDは、Google Cloud プロジェクトの ID に置き換えます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb-udp", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "UDP", "connectionDraining": { "drainingTimeoutSec": 0 } }forwardingRules.insertメソッドにPOSTリクエストを送信して、転送ルールを作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-udp", "IPAddress": "internal-lb-ipv4", "IPProtocol": "UDP", "ports": [ "53" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-udp", "networkTier": "PREMIUM" }
3 つ目のロードバランサを作成する
3 つ目のロードバランサを作成し、予約された静的内部 IP アドレスを使用する転送ルールを設定します。
gcloud
サポートされている他のすべての IPv4 プロトコル トラフィックを処理するように、プロトコルを L3_DEFAULT に設定して転送ルールを作成します。内部 IP アドレスには、予約済みの静的内部 IP アドレス(internal-lb-ipv4)を使用します。
gcloud compute forwarding-rules create fr-ilb-l3-default \
--region=us-west1 \
--load-balancing-scheme=internal \
--network=lb-network \
--subnet=lb-subnet \
--address=internal-lb-ipv4 \
--ip-protocol=L3_DEFAULT \
--ports=ALL \
--backend-service=be-ilb-l3-default \
--backend-service-region=us-west1
API
forwardingRules.insert メソッドに POST リクエストを送信して転送ルールを作成します。
PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules
{
"name": "fr-ilb-l3-default",
"IPAddress": "internal-lb-ipv4",
"IPProtocol": "L3_DEFAULT",
"ports": [
"ALL"
],
"loadBalancingScheme": "INTERNAL",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default",
"networkTier": "PREMIUM"
}
ロードバランサのテスト
ロードバランサをテストするには、前のセクションの手順に沿って操作します。
次のステップ
- 重要なコンセプトについて確認する。内部パススルー ネットワーク ロードバランサの概要をご覧ください。
- フェイルオーバーの構成方法を確認する。内部パススルー ネットワーク ロードバランサのフェイルオーバーの構成をご覧ください。
- 内部パススルー ネットワーク ロードバランサのロギングとモニタリングの構成を確認する。内部パススルー ネットワーク ロードバランサのロギングとモニタリングをご覧ください。
- トラブルシューティングの詳細を確認する。内部パススルー ネットワーク ロードバランサのトラブルシューティングをご覧ください。
- ロード バランシングの設定をクリーンアップする。