このページでは、クロスリージョン内部プロキシ ネットワーク ロードバランサをデプロイして、オンプレミスまたは他のパブリック クラウドにあり、ハイブリッド接続経由で到達可能なネットワーク エンドポイントにトラフィックをロード バランシングする方法について説明します。
まだ行っていない場合は、ハイブリッド接続 NEG の概要を確認して、ハイブリッド ロード バランシングを設定するためのネットワーク要件を把握してください。
設定の概要
この例では、次の図に示すように、ゾーンとハイブリッド接続の NEG バックエンドが混在する環境用にクロスリージョン内部プロキシ ネットワーク ロードバランサを設定します。
ハイブリッド ロード バランシングのデプロイメントを設定する前に、ハイブリッド接続を構成する必要があります。選択したハイブリッド接続プロダクトに応じて、Cloud VPN または Cloud Interconnect(Dedicated または Partner)のいずれかを使用します。
権限
ハイブリッド ロード バランシングを設定するには、次の権限が必要です。
Google Cloud上で必要な権限
- Google Cloud とオンプレミス環境または他のクラウド環境との間のハイブリッド接続を確立する権限。必要な権限の一覧については、関連する Network Connectivity プロダクトのドキュメントをご覧ください。
- ハイブリッド接続 NEG とロードバランサを作成する権限。このガイドで説明するタスクの実行に必要な権限は、Compute ロードバランサ管理者のロール(
roles/compute.loadBalancerAdmin
)に含まれています。
オンプレミス環境またはGoogle Cloud 以外のクラウド環境で必要な権限
IP:Port
の組み合わせでGoogle Cloud からオンプレミス環境または他のクラウド環境のサービスに到達できるように、ネットワーク エンドポイントを構成する権限。詳細については、お使いの環境のネットワーク管理者にお問い合わせください。- Google のヘルスチェック プローブがエンドポイントに到達することを許可するように、ファイアウォール ルールをオンプレミス環境または他のクラウド環境に作成する権限。
さらに、このページの手順を完了するには、ハイブリッド接続 NEG、ロードバランサ、ゾーン NEG(およびそれらのエンドポイント)を作成して、ロードバランサの Google Cloudベースのバックエンドとして機能させる必要があります。
そのためには、プロジェクトのオーナーまたは編集者であるか、次の Compute Engine IAM のロールが必要です。
タスク | 必要なロール |
---|---|
ネットワーク、サブネット、ロードバランサ コンポーネントの作成 | Compute ネットワーク管理者(roles/compute.networkAdmin ) |
ファイアウォール ルールの追加と削除 | Compute セキュリティ管理者(roles/compute.securityAdmin ) |
インスタンスの作成 | Compute インスタンス管理者(roles/compute.instanceAdmin ) |
ハイブリッド接続を確立する
オンプレミス環境または他のクラウド環境と Google Cloud を接続するには、Cloud Router またはルーター アプライアンス VM とともに Cloud Interconnect VLAN アタッチメントまたは Cloud VPN トンネルを使用して、ハイブリッド接続を確立する必要があります。高可用性接続の使用をおすすめします。
グローバル動的ルーティングが有効になっている Cloud Router は、Border Gateway Protocol(BGP)を介して特定のエンドポイントを学習し、 Google Cloud VPC ネットワークにそのエンドポイントをプログラムします。リージョン動的ルーティングはサポートされていません。静的ルートもサポートされていません。
ハイブリッド ネットワーキング(Cloud Interconnect、Cloud VPN、またはルーター アプライアンス VM)とロードバランサの両方を構成するには、同じプロジェクト内の同じネットワークまたは別の VPC ネットワークを使用できます。次の点にご注意ください。
別の VPC ネットワークを使用する場合は、2 つのネットワークを VPC ネットワーク ピアリングを使用して接続するか、同じ Network Connectivity Center ハブの VPC スポークにする必要があります。
同じ VPC ネットワークを使用する場合は、VPC ネットワークのサブネットの CIDR 範囲がリモートの CIDR 範囲と競合しないようにしてください。IP アドレスが重複する場合、リモート接続よりもサブネット ルートが優先されます。
手順については、次のドキュメントをご覧ください。
Google Cloud外部にある環境を設定する
次の手順で、ハイブリッド ロード バランシング用のオンプレミス環境またはその他のクラウド環境を設定します。
- オンプレミス サービスをGoogle Cloud (
IP:Port
)に公開するようにネットワーク エンドポイントを構成します。 - オンプレミス環境または他のクラウド環境でファイアウォール ルールを構成します。
- プライベート環境への特定の必要なルートをアドバタイズするように Cloud Router を構成します。
ネットワーク エンドポイントを設定する
ハイブリッド接続を設定したら、オンプレミス環境または他のクラウド環境内に、IP:port
の組み合わせを使用して Cloud Interconnect、Cloud VPN、またはルーター アプライアンス経由で到達可能なネットワーク エンドポイントを構成します。この IP:port
の組み合わせは、このプロセスの後半に Google Cloud で作成されるハイブリッド接続 NEG の 1 つ以上のエンドポイントとして構成されます。
IP エンドポイントへのパスが複数ある場合、ルーティングは Cloud Router の概要で説明されているように動作します。
ファイアウォール ルールを設定する
オンプレミス環境またはその他のクラウド環境に、次のファイアウォール ルールを作成する必要があります。
- オンプレミス環境またはその他のクラウド環境で上り(内向き)許可ファイアウォール ルールを作成して、リージョンのプロキシ専用サブネットからのトラフィックがエンドポイントに到達できるようにします。
ハイブリッド NEG では、Google のヘルスチェック プローブ範囲からのトラフィックを許可する必要はありません。ただし、1 つのバックエンド サービスでハイブリッド NEG とゾーン NEG の組み合わせを使用している場合は、ゾーン NEG の Google ヘルスチェック プローブ範囲からのトラフィックを許可する必要があります。
ルートをアドバタイズする
オンプレミス環境またはその他のクラウド環境に次のカスタム IP 範囲をアドバタイズするように、Cloud Router を構成します。
- リージョンのプロキシ専用サブネットの範囲。
Google Cloud 環境を設定する
以降のステップでは、環境間のハイブリッド接続の構成に使用した VPC ネットワーク(この手順では NETWORK
)を使用します。
また、使用するリージョン(この手順では REGION_A
と REGION_B
)が Cloud VPN トンネルまたは Cloud Interconnect VLAN の作成に使用したリージョンと同じであることを確認します。
バックエンド サブネットを構成する
このサブネットは、ロードバランサのゾーン NEG バックエンドの作成に使用します。
コンソール
Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
環境間のハイブリッド接続の構成に使用されたネットワークに移動します。
[サブネット] セクションで次の設定を行います。
- [サブネット作成モード] を [カスタム] に設定します。
- [新しいサブネット] セクションに、次の情報を入力します。
- サブネットの名前を入力します。
- [リージョン] には、REGION_A を選択します。
- IP アドレス範囲を入力します。
- [完了] をクリックします。
[作成] をクリックします。
別のリージョンにサブネットを追加するには、[サブネットを追加] をクリックして、REGION_B の前の手順を繰り返します。
gcloud
環境間のハイブリッド接続の構成に使用したネットワークにサブネットを作成します。
gcloud compute networks subnets create SUBNET_A \ --network=NETWORK \ --range=LB_SUBNET_RANGE1 \ --region=REGION_A
gcloud compute networks subnets create SUBNET_B \ --network=NETWORK \ --range=LB_SUBNET_RANGE2 \ --region=REGION_B
API
subnetworks.insert
メソッドに POST
リクエストを送信します。PROJECT_ID
は実際のプロジェクト ID に置き換えます。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/subnetworks { "name": "SUBNET_A", "network": "projects/PROJECT_ID/global/networks/NETWORK", "ipCidrRange": "LB_SUBNET_RANGE1", "region": "projects/PROJECT_ID/regions/REGION_A", }
subnetworks.insert
メソッドに POST
リクエストを送信します。PROJECT_ID
は実際のプロジェクト ID に置き換えます。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/subnetworks { "name": "SUBNET_B", "network": "projects/PROJECT_ID/global/networks/NETWORK", "ipCidrRange": "LB_SUBNET_RANGE2", "region": "projects/PROJECT_ID/regions/REGION_B", }
次のように置き換えます。
SUBNET_A
とSUBNET_B
: サブネットの名前LB_SUBNET_RANGE1
とLB_SUBNET_RANGE2
: サブネットの IP アドレス範囲REGION_A
とREGION_B
: ロードバランサを構成したリージョン
プロキシ専用サブネットを構成する
プロキシ専用サブネットには、Google がユーザーに代わって Envoy プロキシを実行する際に使用する一連の IP アドレスが用意されています。このプロキシは、クライアントからの接続を終端し、バックエンドへの新しい接続を作成します。
このプロキシ専用サブネットは、VPC ネットワークの同じリージョン内のすべての Envoy ベースのロードバランサで使用されます。特定の目的では、リージョンごと、ネットワークごとにアクティブなプロキシ専用サブネットが 1 つだけの場合があります。
コンソール
Google Cloud コンソールを使用している場合は、後ほど [ロード バランシング] ページでプロキシ専用サブネットを作成することもできます。
プロキシ専用サブネットを今すぐ作成する場合は、次の操作を行います。
Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
- VPC ネットワークの名前をクリックします。
- [サブネット] タブで [サブネットを追加] をクリックします。
- プロキシ専用サブネットの [名前] を指定します。
- [リージョン] リストで [REGION_A] を選択します。
- [目的] リストで、[クロスリージョンのマネージド プロキシ] を選択します。
- [IP アドレス範囲] フィールドに「
10.129.0.0/23
」と入力します。 - [追加] をクリックします。
REGION_B にプロキシ専用サブネットを作成します。
- [サブネットを追加] をクリックします。
- プロキシ専用サブネットの [名前] を指定します。
- [リージョン] リストで [REGION_B] を選択します。
- [目的] リストで、[クロスリージョンのマネージド プロキシ] を選択します。
- [IP アドレス範囲] フィールドに「
10.130.0.0/23
」と入力します。 - [追加] をクリックします。
gcloud
gcloud compute networks subnets create
コマンドを使用して、プロキシ専用サブネットを作成します。
gcloud compute networks subnets create PROXY_SN_A \ --purpose=GLOBAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION_A \ --network=NETWORK \ --range=PROXY_ONLY_SUBNET_RANGE1
gcloud compute networks subnets create PROXY_SN_B \ --purpose=GLOBAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION_B \ --network=NETWORK \ --range=PROXY_ONLY_SUBNET_RANGE2
次のように置き換えます。
PROXY_SN_A
とPROXY_SN_B
: プロキシ専用サブネットの名前PROXY_ONLY_SUBNET_RANGE1
とPROXY_ONLY_SUBNET_RANGE2
: プロキシ専用サブネットの IP アドレス範囲REGION_A
とREGION_B
: ロードバランサを構成したリージョン
API
subnetworks.insert
メソッドを使用してプロキシ専用サブネットを作成します。PROJECT_ID
は、実際のプロジェクト ID に置き換えます。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/subnetworks { "name": "PROXY_SN_A", "ipCidrRange": "PROXY_ONLY_SUBNET_RANGE1", "network": "projects/PROJECT_ID/global/networks/NETWORK", "region": "projects/PROJECT_ID/regions/REGION_A", "purpose": "GLOBAL_MANAGED_PROXY", "role": "ACTIVE" }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/subnetworks { "name": " PROXY_SN_B", "ipCidrRange": "PROXY_ONLY_SUBNET_RANGE2", "network": "projects/PROJECT_ID/global/networks/NETWORK", "region": "projects/PROJECT_ID/regions/REGION_B", "purpose": "GLOBAL_MANAGED_PROXY", "role": "ACTIVE" }
ファイアウォール ルールの作成
この例では、 Google Cloudのゾーン NEG バックエンド用に次のファイアウォール ルールを作成します。
fw-allow-health-check
: ロードバランスされているインスタンスに適用される上り(内向き)ルール。Google Cloud ヘルスチェック システム(130.211.0.0/22
と35.191.0.0/16
)からのトラフィックを許可します。この例では、ターゲットタグallow-health-check
を使用して、適用するゾーン NEG を識別します。fw-allow-ssh
: 任意のアドレスから TCP ポート 22 への SSH 受信接続を許可する上り(内向き)ルール。このルールには、送信元の IP 範囲をより限定的に指定できます。たとえば、SSH セッションを開始するシステムの IP 範囲を指定できます。この例では、ターゲットタグallow-ssh
を使用して、適用する VM を識別させています。fw-allow-proxy-only-subnet
: プロキシ専用サブネットからの接続がゾーン NEG バックエンドに到達することを許可する上り(内向き)ルール。
コンソール
Google Cloud コンソールで、[ファイアウォール ポリシー] ページに移動します。
[ファイアウォール ルールを作成] をクリックして、ヘルスチェック プローブからのトラフィックを許可するルールを作成します。
- [名前] に「
fw-allow-health-check
」と入力します。 - [ネットワーク] で NETWORK を選択します。
- [ターゲット] で [指定されたターゲットタグ] を選択します。
- [ターゲットタグ] フィールドに「
allow-health-check
」を入力します。 - [ソースフィルタ] を [IPv4 範囲] に設定します。
- [送信元 IPv4 範囲] を
130.211.0.0/22
と35.191.0.0/16
に設定します。 - [プロトコルとポート] で [指定したプロトコルとポート] を選択します。
- [TCP] を選択し、ポート番号に「
80
」と入力します。 - [作成] をクリックします。
- [名前] に「
[ファイアウォール ルールを作成] を再度クリックして、SSH 接続の受信を許可するルールを作成します。
- 名前:
fw-allow-ssh
- ネットワーク: NETWORK
- 優先度:
1000
- トラフィックの方向: 上り(内向き)
- 一致したときのアクション: 許可
- ターゲット: 指定されたターゲットタグ
- ターゲットタグ:
allow-ssh
- ソースフィルタ: IPv4 の範囲
- 送信元 IPv4 範囲:
0.0.0.0/0
- プロトコルとポート: [指定したプロトコルとポート] を選択します。
- [TCP] を選択し、ポート番号に「
22
」と入力します。 - [作成] をクリックします。
- 名前:
[ファイアウォール ルールを作成] を再度クリックして、プロキシ専用サブネットからの受信接続を許可するルールを作成します。
- 名前:
fw-allow-proxy-only-subnet
- ネットワーク: NETWORK
- 優先度:
1000
- トラフィックの方向: 上り(内向き)
- 一致したときのアクション: 許可
- ターゲット: 指定されたターゲットタグ
- ターゲットタグ:
allow-proxy-only-subnet
- ソースフィルタ: IPv4 の範囲
- 送信元 IPv4 範囲: PROXY_ONLY_SUBNET_RANGE1 と PROXY_ONLY_SUBNET_RANGE2
- プロトコルとポート: [指定したプロトコルとポート] を選択します。
- [TCP] を選択し、ポート番号に「
80
」と入力します。 - [作成] をクリックします。
- 名前:
gcloud
Google Cloud ヘルスチェックが TCP ポート
80
でバックエンド インスタンスに到達できるようにfw-allow-health-check-and-proxy
ルールを作成します。gcloud compute firewall-rules create fw-allow-health-check \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp:80
ネットワーク タグ
allow-ssh
を使用して、VM との SSH 接続を許可するfw-allow-ssh
ファイアウォール ルールを作成します。source-ranges
を省略すると、Google Cloud は任意の送信元としてルールを解釈します。gcloud compute firewall-rules create fw-allow-ssh \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
ロードバランサが TCP ポート
80
でバックエンド インスタンスと通信することを許可するプロキシ専用サブネットの上り(内向き)許可ファイアウォール ルールを作成します。gcloud compute firewall-rules create fw-allow-proxy-only-subnet \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-proxy-only-subnet \ --source-ranges=PROXY_ONLY_SUBNET_RANGE1,PROXY_ONLY_SUBNET_RANGE2 \ --rules=tcp:80
ゾーン NEG を設定する
Google Cloudベースのバックエンドの場合は、ハイブリッド接続を構成したリージョンに複数のゾーン NEG を構成することをおすすめします。
この例では、REGION1
にゾーン NEG を設定します(GCE_VM_IP_PORT
タイプのエンドポイント)。まず、NEG_ZONE1
ゾーンに VM を作成します。次に、NEG_ZONE2
にゾーン NEG を作成し、VM のネットワーク エンドポイントを NEG に追加します。高可用性をサポートするために、REGION2 リージョンに同様のゾーン NEG を設定します。一方のリージョンのバックエンドが停止した場合、トラフィックはもう一方のリージョンにフェイルオーバーされます。
VM を作成する
コンソール
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
次の名前とゾーンの組み合わせを使用して、VM ごとに手順 3 から 8 を繰り返します。
vm-a1
の名前- ゾーン: NEG_ZONE1(リージョン REGION_A 内)
- サブネット: SUBNET_A
vm-b1
の名前- ゾーン: NEG_ZONE2(リージョン REGION_B 内)
- サブネット: SUBNET_B
[インスタンスを作成] をクリックします。
前の手順で示したように名前を設定します。
[リージョン] で、前の手順で示したように選択します。
[ゾーン] で、前の手順で示したように選択します。
[ブートディスク] セクションで、ブートディスク オプションとして Debian GNU/Linux 12 (bookworm) が選択されていることを確認します。必要に応じて [選択] をクリックし、イメージを変更します。
[詳細オプション] セクションで、[ネットワーキング] を開いて次の操作を行います。
- ネットワーク タグ(
allow-ssh
、allow-health-check
、allow-proxy-only-subnet
)を追加します。 - [ネットワーク インターフェース] セクションで、[ネットワーク インターフェースを追加] をクリックし、次のように変更してから、[完了] をクリックします。
- ネットワーク: NETWORK
- サブネットワーク: 前の手順と同じ。
- プライマリ内部 IP: エフェメラル(自動)
- 外部 IP: エフェメラル
[管理] を開きます。次のスクリプトの内容を [自動化] フィールドにコピーして貼り付けます。スクリプトの内容はすべての 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
- ネットワーク タグ(
[作成] をクリックします。
gcloud
VM とそのゾーンの名前にこれらの組み合わせを使用して、次のコマンドを実行して VM を作成します。スクリプトの内容は両方の VM で同じです。
vm-a1
のVM_NAME
- ゾーン
GCP_NEG_ZONE
(リージョンREGION_A
の NEG_ZONE1 として) - サブネット
LB_SUBNET_NAME
(SUBNET_A として)
- ゾーン
vm-b1
のVM_NAME
- ゾーン
GCP_NEG_ZONE
(リージョンREGION_B
の NEG_ZONE2 として) - サブネット
LB_SUBNET_NAME
(SUBNET_B として)
gcloud compute instances create VM_NAME \ --zone=GCP_NEG_ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --subnet=LB_SUBNET_NAME \ --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'
- ゾーン
ゾーン NEG を作成する
コンソール
ゾーン ネットワーク エンドポイント グループを作成するには:
Google Cloud コンソールで、[ネットワーク エンドポイント グループ] ページに移動します。
次の名前とゾーンの組み合わせを使用して、ゾーン NEG ごとに手順 3 から 8 を繰り返します。
- 名前:
neg-1
- ゾーン: NEG_ZONE1(リージョン
REGION_A
内) - サブネット: SUBNET_A
- ゾーン: NEG_ZONE1(リージョン
- 名前:
neg-2
- ゾーン: NEG_ZONE2(リージョン
REGION_B
内) - サブネット: SUBNET_B
- ゾーン: NEG_ZONE2(リージョン
- 名前:
[ネットワーク エンドポイント グループを作成] をクリックします。
前の手順で示したように名前を設定します。
[ネットワーク エンドポイント グループの種類] で [ネットワーク エンドポイント グループ(ゾーン)] を選択します。
[ネットワーク] で NETWORK を選択します。
前の手順で示したサブネットワークを選択します。
前の手順で示したゾーンを選択します。
[デフォルト ポート] で「
80
」と入力します。[作成] をクリックします。
エンドポイントをゾーン NEG に追加します。
Google Cloud コンソールで、[ネットワーク エンドポイント グループ] ページに移動します。
前の手順で作成したネットワーク エンドポイント グループの名前をクリックします。[ネットワーク エンドポイント グループの詳細] ページが表示されます。
[このグループのネットワーク エンドポイント] セクションで [ネットワーク エンドポイントを追加] をクリックします。[ネットワーク エンドポイントの追加] ページが表示されます。
[VM インスタンス] を選択して、ネットワーク エンドポイントとして内部 IP アドレスを追加します。[ネットワーク インターフェース] セクションに、VM の名前、ゾーン、サブネットが表示されます。
新しいネットワーク エンドポイントの IP アドレスを入力します。
ポートタイプを選択します。
- [デフォルト] を選択すると、エンドポイントはネットワーク エンドポイント グループのすべてのエンドポイントにデフォルト ポート
80
を使用します。この例では、Apache サーバーがポート80
でリクエストを配信しているため、これで十分です。 - [カスタム] を選択した場合は、使用するエンドポイントのポート番号を入力します。
- [デフォルト] を選択すると、エンドポイントはネットワーク エンドポイント グループのすべてのエンドポイントにデフォルト ポート
他のエンドポイントを追加するには、[ネットワーク エンドポイントを追加] をクリックし、前の手順を繰り返します。
すべてのエンドポイントを追加したら、[作成] をクリックします。
gcloud
名前、ゾーン、サブネットの組み合わせを使用して、(
GCE_VM_IP_PORT
エンドポイントを含む)ゾーン NEG を作成します。gcloud compute network-endpoint-groups create
コマンドを使用します。- 名前:
neg-1
- ゾーン
GCP_NEG_ZONE
: リージョンREGION_A
の NEG_ZONE1 - サブネット
LB_SUBNET_NAME
: SUBNET_A
- ゾーン
- 名前:
neg-2
- ゾーン
GCP_NEG_ZONE
: リージョンREGION_B
の NEG_ZONE2 - サブネット
LB_SUBNET_NAME
: SUBNET_B
- ゾーン
gcloud compute network-endpoint-groups create GCP_NEG_NAME \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=GCP_NEG_ZONE \ --network=NETWORK \ --subnet=LB_SUBNET_NAME
次の手順で説明するように、NEG の作成時に
--default-port
オプションを使用してポートを指定するか、各エンドポイントのポート番号を指定します。- 名前:
エンドポイントを
neg1
とneg2
に追加します。gcloud compute network-endpoint-groups update neg1 \ --zone=NEG_ZONE1 \ --add-endpoint='instance=vm-a1,port=80'
gcloud compute network-endpoint-groups update neg2 \ --zone=NEG_ZONE2 \ --add-endpoint='instance=vm-b1,port=80'
ハイブリッド接続 NEG を設定する
NEG を作成するときは、 Google Cloud とオンプレミスまたは他のクラウド環境との間の地理的距離を最小限に抑えるゾーンを使用します。
また、Cloud Interconnect を使用している場合は、NEG の作成に使用するゾーンは、Cloud Interconnect アタッチメントが構成されているリージョンに存在しています。
ハイブリッド NEG は、分散 Envoy ヘルスチェックのみをサポートします。
コンソール
ハイブリッド接続ネットワーク エンドポイント グループを作成するには:
Google Cloud コンソールで、[ネットワーク エンドポイント グループ] ページに移動します。
[ネットワーク エンドポイント グループを作成] をクリックします。
次の名前とゾーンの組み合わせを使用して、ハイブリッド NEG ごとに手順 4~9 を繰り返します。
- 名前 ON_PREM_NEG_NAME:
hybrid-1
- ゾーン: ON_PREM_NEG_ZONE1
- サブネット: SUBNET_A
- 名前 ON_PREM_NEG_NAME:
hybrid-2
- ゾーン: ON_PREM_NEG_ZONE2
- サブネット: SUBNET_B
- 名前 ON_PREM_NEG_NAME:
前の手順で示したように名前を設定します。
ネットワーク エンドポイント グループの種類として [ハイブリッド接続ネットワーク エンドポイント グループ(ゾーン)] を選択します。
[ネットワーク] で NETWORK を選択します。
[サブネット] で、前の手順で示したように選択します。
[ゾーン] で、前の手順で示したように選択します。
デフォルト ポートを入力します。
[作成] をクリックします。
ハイブリッド接続 NEG にエンドポイントを追加します。
Google Cloud コンソールで、[ネットワーク エンドポイント グループ] ページに移動します。
前の手順で作成したネットワーク エンドポイント グループの名前をクリックします。[ネットワーク エンドポイント グループの詳細] ページが表示されます。
[このグループのネットワーク エンドポイント] セクションで [ネットワーク エンドポイントを追加] をクリックします。[ネットワーク エンドポイントの追加] ページが表示されます。
新しいネットワーク エンドポイントの IP アドレスを入力します。
ポートタイプを選択します。
- [デフォルト] を選択すると、エンドポイントはネットワーク エンドポイント グループのすべてのエンドポイントにデフォルト ポートを使用します。
- [カスタム] を選択すると、使用するエンドポイントに異なるポート番号を入力できます。
他のエンドポイントを追加するには、[ネットワーク エンドポイントを追加] をクリックし、前の手順を繰り返します。
すべてのGoogle Cloud 以外のエンドポイントを追加したら、[作成] をクリックします。
gcloud
次の名前の組み合わせを使用してハイブリッド接続 NEG を作成します。
gcloud compute network-endpoint-groups create
コマンドを使用します。- 名前
ON_PREM_NEG_NAME
:hybrid-1
- ゾーン
ON_PREM_NEG_ZONE
: ON_PREM_NEG_ZONE1
- ゾーン
- 名前
ON_PREM_NEG_NAME
:hybrid-2
- ゾーン
GCP_NEG_ZONE
: ON_PREM_NEG_ZONE2
- ゾーン
gcloud compute network-endpoint-groups create ON_PREM_NEG_NAME \ --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \ --zone=ON_PREM_NEG_ZONE \ --network=NETWORK
- 名前
オンプレミス バックエンド VM のエンドポイントを ON_PREM_NEG_NAME に追加します。
gcloud compute network-endpoint-groups update ON_PREM_NEG_NAME \ --zone=ON_PREM_NEG_ZONE \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_1,port=PORT_1" \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_2,port=PORT_2"
このコマンドを使用すると、オンプレミスまたはクラウド環境で構成したネットワーク エンドポイントを追加できます。--add-endpoint
を必要な回数だけ繰り返します。
ロードバランサを構成する
コンソール
gcloud
gcloud compute health-checks create tcp
コマンドを使用して TCP ヘルスチェックを定義します。gcloud compute health-checks create tcp gil4-basic-check \ --use-serving-port \ --global
gcloud compute backend-services create
コマンドを実行し、バックエンド サービスを作成してロギングを有効にします。gcloud compute backend-services create BACKEND_SERVICE \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=TCP \ --enable-logging \ --logging-sample-rate=1.0 \ --health-checks=gil4-basic-check \ --global-health-checks \ --global
gcloud compute backend-services add-backend
コマンドを使用して、バックエンド サービスにバックエンドを追加します。gcloud compute backend-services add-backend BACKEND_SERVICE \ --global \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=MAX_CONNECTIONS \ --network-endpoint-group=neg1 \ --network-endpoint-group-zone=NEG_ZONE1 \ --network-endpoint-group=neg2 \ --network-endpoint-group-zone=NEG_ZONE2
バランシング モードの構成の詳細については、gcloud CLI のドキュメントで
--max-connections-per-endpoint
フラグをご覧ください。MAX_CONNECTIONS には、バックエンドで処理する最大同時接続数を入力します。ハイブリッド NEG をバックエンドとしてバックエンド サービスに追加します。
gcloud compute backend-services add-backend BACKEND_SERVICE \ --global \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=MAX_CONNECTIONS \ --network-endpoint-group=hybrid1 \ --network-endpoint-group-zone=ON_PREM_NEG_ZONE1 \ --network-endpoint-group=hybrid2 \ --network-endpoint-group-zone=ON_PREM_NEG_ZONE2 \
バランシング モードの構成の詳細については、gcloud CLI のドキュメントで
--max-connections-per-endpoint
パラメータをご覧ください。MAX_CONNECTIONS
には、バックエンドで処理する最大同時接続数を入力します。ターゲット プロキシを作成します。
gcloud compute target-tcp-proxies create
コマンドを使用して、ターゲット プロキシを作成します。gcloud compute target-tcp-proxies create gil4-tcp-proxy \ --backend-service=BACKEND_SERVICE \ --global
2 つの転送ルールを作成します。1 つのルールでは、REGION_A の VIP IP_ADDRESS1 を使用します。もう 1 つのルールでは、
REGION_B
の VIP IP_ADDRESS2 を使用します。転送ルールの IP アドレスには、LB_SUBNET_RANGE1 または LB_SUBNET_RANGE2 の IP アドレス範囲を使用します。プロキシ専用サブネットを使用すると、転送ルールの作成に失敗します。カスタム ネットワークでは、転送ルールでサブネットを参照する必要があります。このサブネットは、VM サブネットでありプロキシ専用サブネットではありません。
適切なフラグを設定して
gcloud compute forwarding-rules create
コマンドを実行します。gcloud compute forwarding-rules create gil4-forwarding-rule-a \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_A \ --subnet-region=REGION_A \ --address=IP_ADDRESS1 \ --ports=80 \ --target-tcp-proxy=gil4-tcp-proxy \ --global
gcloud compute forwarding-rules create gil4-forwarding-rule-b \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_B \ --subnet-region=REGION_B \ --address=IP_ADDRESS2 \ --ports=80 \ --target-tcp-proxy=gil4-tcp-proxy \ --global
ロードバランサをテストする
VM インスタンスを作成して接続をテストする
クライアント VM を
REGION_A
、REGION_B
、リージョンに作成します。gcloud compute instances create l4-ilb-client-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --network=NETWORK \ --subnet=SUBNET_A \ --zone=NEG_ZONE1 \ --tags=allow-ssh
gcloud compute instances create l4-ilb-client-b \ --image-family=debian-12 \ --image-project=debian-cloud \ --network=NETWORK \ --subnet=SUBNET_B \ --zone=NEG_ZONE2 \ --tags=allow-ssh
SSH を使用して各クライアント インスタンスに接続します。
gcloud compute ssh l4-ilb-client-a \ --zone=NEG_ZONE1
gcloud compute ssh l4-ilb-client-b \ --zone=NEG_ZONE2
IP アドレスがホスト名を提供していることを確認します。
クライアント VM が両方の IP アドレスに到達できることを確認します。コマンドが成功し、リクエストを処理したバックエンド VM の名前が返されます。
curl IP_ADDRESS1
curl IP_ADDRESS2
100 件のリクエストを実行する
100 件の curl リクエストを実行し、ロードバランスされていることをレスポンスから確認します。
クライアント VM が両方の IP アドレスに到達できることを確認します。コマンドが成功し、リクエストを処理したバックエンド VM の名前が返されます。
{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl --silent IP_ADDRESS1)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS1: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl --silent IP_ADDRESS2)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS2: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
フェイルオーバーをテストする
REGION_B
のバックエンドが異常な状態またはアクセス不能になった場合は、REGION_A
リージョンのバックエンドへのフェイルオーバーを確認します。REGION_B
からすべてのバックエンドを削除してシミュレーションを行います。gcloud compute backend-services remove-backend BACKEND_SERVICE \ --balancing-mode=CONNECTION \ --network-endpoint-group=neg2 \ --network-endpoint-group-zone=NEG_ZONE2
SSH を使用して、
REGION_B
のクライアント VM に接続します。gcloud compute ssh l4-ilb-client-b \ --zone=NEG_ZONE2
REGION_B
リージョンのロード バランシングされた IP アドレスにリクエストを送信します。コマンド出力に、REGION_A
のバックエンド VM からのレスポンスが表示されます。{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS2:443)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS2: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
次のステップ
- プロキシ ネットワーク ロードバランサを IPv6 に変換する
- 内部プロキシ ネットワーク ロードバランサの概要
- Envoy ベースのロードバランサ向けプロキシ専用サブネット
- ロード バランシングの設定をクリーンアップする