このページでは、リージョン内部アプリケーション ロードバランサをデプロイして、オンプレミスまたは他のパブリック クラウドにあり、ハイブリッド接続経由で到達可能なネットワーク エンドポイントにトラフィックをロード バランシングする方法について説明します。
まだ行っていない場合は、ハイブリッド接続 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)が Cloud VPN トンネルまたは Cloud Interconnect VLAN アタッチメントの作成に使用したリージョンと同じであることを確認します。
プロキシ専用サブネットを構成する
このプロキシ専用サブネットは、REGION リージョン内のすべてのリージョン Envoy ベースのロードバランサに使用されます。
コンソール
- Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
[VPC ネットワーク] に移動 - 環境間のハイブリッド接続の構成に使用されたネットワークに移動します。
- [サブネットを追加] をクリックします。
- 名前(PROXY_ONLY_SUBNET_NAME)を入力します。
- リージョン(REGION)を選択します。
- [目的] を [リージョン マネージド プロキシ] に設定します。
- IP アドレス範囲(PROXY_ONLY_SUBNET_RANGE)を入力します。
- [追加] をクリックします。
gcloud
gcloud compute networks subnets
create
コマンドを使用して、プロキシ専用サブネットを作成します。
gcloud compute networks subnets create PROXY_ONLY_SUBNET_NAME \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION \ --network=NETWORK \ --range=PROXY_ONLY_SUBNET_RANGE
ロードバランサのサブネットを構成する
このサブネットは、ロードバランサのゾーン NEG バックエンド、フロントエンド、内部 IP アドレスの作成に使用されます。
Cloud コンソール
- Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
[VPC ネットワーク] に移動 - 環境間のハイブリッド接続の構成に使用されたネットワークに移動します。
- [サブネット] セクションで次の設定を行います。
- [サブネット作成モード] を [カスタム] に設定します。
- [新しいサブネット] セクションに、次の情報を入力します。
- 名前: LB_SUBNET_NAME
- リージョン: REGION
- IP アドレス範囲: LB_SUBNET_RANGE
- [完了] をクリックします。
- [作成] をクリックします。
gcloud
環境間のハイブリッド接続の構成に使用したネットワーク内にサブネットを作成します。
gcloud compute networks subnets create LB_SUBNET_NAME \ --network=NETWORK \ --range=LB_SUBNET_RANGE \ --region=REGION
ロードバランサの IP アドレスを予約する
デフォルトでは、各転送ルールに 1 つの IP アドレスが使用されます。共有 IP アドレスを予約すると、複数の転送ルールで同じ IP アドレスを使用できます。ただし、Private Service Connect を使用してロードバランサを公開する場合は、転送ルールに共有 IP アドレスを使用しないでください。
コンソール
Google Cloud コンソールを使用してスタンドアロンの内部 IP アドレスを予約できます。
- [VPC ネットワーク] ページに移動します。
- 環境間のハイブリッド接続の構成に使用したネットワークをクリックします。
- [静的内部 IP アドレス] をクリックして、[静的アドレスを予約] をクリックします。
- 名前(LB_IP_ADDRESS)を入力します。
- [サブネット] で [LB_SUBNET_NAME] を選択します。
- 予約する IP アドレスを指定する場合は、[静的 IP アドレス] の下で、[自分で選択] を選択し、[カスタム IP アドレス] に入力します。それ以外の場合、サブネットの IP アドレスは自動的に割り当てられます。
- この IP アドレスを複数の転送ルールで使用する場合は、[目的] で [共有] を選択します。
- [予約] をクリックして、プロセスを終了します。
gcloud
gcloud CLI を使用して
compute addresses create
コマンドを実行します。gcloud compute addresses create LB_IP_ADDRESS \ --region=REGION \ --subnet=LB_SUBNET_NAME \
割り振られた IP アドレスを表示するには、
compute addresses describe
コマンドを使用します。gcloud compute addresses describe LB_IP_ADDRESS \ --region=REGION
複数の転送ルールで同じ IP アドレスを使用する場合は、
--purpose=SHARED_LOADBALANCER_VIP
を指定します。
ゾーン NEG にファイアウォール ルールを作成する
この例では、 Google Cloudのゾーン NEG バックエンド用に次のファイアウォール ルールを作成します。
fw-allow-health-check
: ロードバランスされているインスタンスに適用される上り(内向き)ルールで、Google Cloud ヘルスチェック システム(130.211.0.0/22
と35.191.0.0/16
)からのトラフィックを許可します。この例では、ターゲットタグのallow-health-check
を使用して、適用するバックエンド VM を識別します。ハイブリッド NEG では、Google のヘルスチェック プローブ範囲からのトラフィックを許可する必要はありません。ただし、1 つのバックエンド サービスでハイブリッド NEG とゾーン NEG の組み合わせを使用している場合は、ゾーン NEG の Google ヘルスチェック プローブ範囲からのトラフィックを許可する必要があります。fw-allow-ssh
: 任意のアドレスから TCP ポート 22 への SSH 受信接続を許可する上り(内向き)ルール。このルールには、送信元の IP 範囲をより限定的に指定できます。たとえば、SSH セッションを開始するシステムの IP 範囲を指定できます。この例では、ターゲットタグallow-ssh
を使用して、適用する VM を識別させています。fw-allow-proxy-only-subnet
: バックエンドにプロキシ専用サブネットからの接続を許可する上り(内向き)ルール。
コンソール
- 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_RANGE
- プロトコルとポート: [指定したプロトコルとポート] を選択します。
- [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_RANGE \ --rules=tcp:80
ゾーン NEG を設定する
Google Cloudベースのバックエンドの場合は、ハイブリッド接続を構成したリージョンに複数のゾーン NEG を構成することをおすすめします。
この例では、REGION リージョンにゾーン NEG を設定します(GCE_VM_IP_PORT
タイプのエンドポイント)。まず、GCP_NEG_ZONE ゾーンに VM を作成します。次に、同じ GCP_NEG_ZONE にゾーン NEG を作成し、VM のネットワーク エンドポイントを NEG に追加します。
VM を作成する
コンソール
- Google Cloud コンソールの [VM インスタンス] ページに移動します。
[VM インスタンス] に移動 - [インスタンスを作成] をクリックします。
- [名前] を
vm-a1
に設定します。 - [リージョン] に REGION を選択し、任意のゾーンを選択します。この手順では GCP_NEG_ZONE とします。
- [ブートディスク] セクションで、ブートディスク オプションとして Debian GNU/Linux 12 (bookworm) が選択されていることを確認します。必要に応じて [選択] をクリックし、イメージを変更します。
[詳細オプション] をクリックして、次の変更を行います。
- [ネットワーキング] をクリックして、[ネットワーク タグ] に
allow-ssh
、allow-health-check
、allow-proxy-only-subnet
を追加します。 - [ネットワーク インターフェース] にある編集ボタン
- ネットワーク: NETWORK
- サブネット: LB_SUBNET_NAME
- プライマリ内部 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
- [ネットワーキング] をクリックして、[ネットワーク タグ] に
[作成] をクリックします。
以下の手順を繰り返し、次の名前とゾーンの組み合わせを使用して、2 つ目の VM を作成します。
- 名前:
vm-a2
、ゾーン: GCP_NEG_ZONE
- 名前:
gcloud
VM とそのゾーンの名前にこれらの組み合わせを使用して、次のコマンドを 2 回実行して VM を作成します。スクリプトの内容は両方の VM で同じです。
vm-a1
の VM_NAME と任意の GCP_NEG_ZONE ゾーンvm-a2
の VM_NAME と同じ GCP_NEG_ZONE ゾーン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 の名前を入力します。この手順では GCP_NEG_NAME とします。
- [ネットワーク エンドポイント グループの種類] で [ネットワーク エンドポイント グループ(ゾーン)] を選択します。
- [ネットワーク] で NETWORK を選択します。
- [サブネット] で LB_SUBNET_NAME を選択します。
- [ゾーン] で GCP_NEG_ZONE を選択します。
- [デフォルト ポート] で「
80
」と入力します。 - [作成] をクリックします。
エンドポイントをゾーン NEG に追加します。
- Google Cloud コンソールの [ネットワーク エンドポイント グループ] ページに移動します。
[ネットワーク エンドポイント グループ] に移動 - 前のステップで作成したネットワーク エンドポイント グループの名前(GCP_NEG_NAME)をクリックします。ネットワーク エンドポイント グループの詳細ページが表示されます。
- [このグループのネットワーク エンドポイント] セクションで [ネットワーク エンドポイントを追加] をクリックします。[ネットワーク エンドポイントの追加] ページが表示されます。
- [VM インスタンス] を選択して、ネットワーク エンドポイントとして内部 IP アドレスを追加します。[ネットワーク インターフェース] セクションに、VM の名前、ゾーン、サブネットが表示されます。
- [IPv4 アドレス] フィールドに、新しいネットワーク エンドポイントの IPv4 アドレスを入力します。
- ポートタイプを選択します。
- [デフォルト] を選択すると、エンドポイントはネットワーク エンドポイント グループのすべてのエンドポイントにデフォルト ポート
80
を使用します。この例では、Apache サーバーがポート80
でリクエストを配信しているため、これで十分です。 - [カスタム] を選択した場合は、使用するエンドポイントのポート番号を入力します。
- [デフォルト] を選択すると、エンドポイントはネットワーク エンドポイント グループのすべてのエンドポイントにデフォルト ポート
- 他のエンドポイントを追加するには、[ネットワーク エンドポイントを追加] をクリックし、前の手順を繰り返します。
- すべてのエンドポイントを追加したら、[作成] をクリックします。
gcloud
gcloud compute network-endpoint-groups create
コマンドを使用して、ゾーン NEG を作成します(GCE_VM_IP_PORT
エンドポイントを含む)。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
を指定するか、各エンドポイントのポート番号を指定します。エンドポイントを GCP_NEG_NAME に追加します。
gcloud compute network-endpoint-groups update GCP_NEG_NAME \ --zone=GCP_NEG_ZONE \ --add-endpoint='instance=vm-a1,port=80' \ --add-endpoint='instance=vm-a2,port=80'
ハイブリッド接続 NEG を設定する
NEG を作成するときは、 Google Cloud とオンプレミスまたは他のクラウド環境との間の地理的距離を最小限に抑えられる ZONE を使用します。たとえば、ドイツのフランクフルトにあるオンプレミス環境にサービスをホストする場合、NEG を作成するときに europe-west3-a
Google Cloud ゾーンを指定できます。
また、Cloud Interconnect を使用している場合は、NEG の作成に使用する ZONE は、Cloud Interconnect アタッチメントが構成されているリージョンに存在している必要があります。
使用可能なリージョンとゾーンについては、Compute Engine のドキュメント: 使用可能なリージョンとゾーンをご覧ください。
コンソール
ハイブリッド接続ネットワーク エンドポイント グループを作成するには:
- Google Cloud コンソールの [ネットワーク エンドポイント グループ] ページに移動します。
[ネットワーク エンドポイント グループ] に移動 - [ネットワーク エンドポイント グループを作成] をクリックします。
- ハイブリッド NEG の名前を入力します。この手順では ON_PREM_NEG_NAME とします。
- ネットワーク エンドポイント グループの種類として [ハイブリッド接続ネットワーク エンドポイント グループ(ゾーン)] を選択します。
- [ネットワーク] で NETWORK を選択します。
- [サブネット] で LB_SUBNET_NAME を選択します。
- [ゾーン] で ON_PREM_NEG_ZONE を選択します。
- デフォルト ポートを入力します。
- [作成] をクリックします。
ハイブリッド接続 NEG にエンドポイントを追加するには:
- Google Cloud コンソールの [ネットワーク エンドポイント グループ] ページに移動します。
[ネットワーク エンドポイント グループ] ページに移動 - 前のステップで作成したネットワーク エンドポイント グループの名前(ON_PREM_NEG_NAME)をクリックします。ネットワーク エンドポイント グループの詳細ページが表示されます。
- [このグループのネットワーク エンドポイント] セクションで [ネットワーク エンドポイントを追加] をクリックします。[ネットワーク エンドポイントの追加] ページが表示されます。
- 新しいネットワーク エンドポイントの IP アドレスを入力します。
- ポートタイプを選択します。
- [デフォルト] を選択すると、エンドポイントはネットワーク エンドポイント グループのすべてのエンドポイントにデフォルト ポートを使用します。
- [カスタム] を選択すると、使用するエンドポイントに異なるポート番号を入力できます。
- 他のエンドポイントを追加するには、[ネットワーク エンドポイントを追加] をクリックし、前の手順を繰り返します。
- すべてのGoogle Cloud 以外のエンドポイントを追加したら、[作成] をクリックします。
gcloud
gcloud compute network-endpoint-groups create
コマンドを使用して、ハイブリッド接続 NEG を作成します。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
を必要な回数だけ繰り返します。
必要に応じて、これらの手順を繰り返して複数のハイブリッド NEG を作成できます。
ロードバランサを構成する
コンソール
gcloud
- バックエンドのヘルスチェックを作成します。
ハイブリッド NEG バックエンドのヘルスチェック プローブはプロキシ専用サブネットの Envoy プロキシから発信され、ゾーン NEG バックエンドのプローブは [Google の中央プローブ IP 範囲](/load-balancing/docs/health-check-concepts#ip-ranges)から発信されます。gcloud compute health-checks create http HTTP_HEALTH_CHECK_NAME \ --region=REGION \ --use-serving-port
- Google Cloudベースのバックエンド用のバックエンド サービスを作成します。このバックエンド サービスに、ゾーン NEG とハイブリッド接続 NEG の両方をバックエンドとして追加します。
gcloud compute backend-services create BACKEND_SERVICE \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --health-checks=HTTP_HEALTH_CHECK_NAME \ --health-checks-region=REGION \ --region=REGION
- ゾーン NEG をバックエンドとしてバックエンド サービスに追加します。
バランシング モードの構成の詳細については、gcloud CLI のドキュメントでgcloud compute backend-services add-backend BACKEND_SERVICE \ --region=REGION \ --balancing-mode=RATE \ --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \ --network-endpoint-group=GCP_NEG_NAME \ --network-endpoint-group-zone=GCP_NEG_ZONE
--max-rate-per-endpoint
パラメータをご覧ください。 - ハイブリッド NEG をバックエンドとしてバックエンド サービスに追加します。
バランシング モードの構成の詳細については、gcloud CLI のドキュメントでgcloud compute backend-services add-backend BACKEND_SERVICE \ --region=REGION \ --balancing-mode=RATE \ --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \ --network-endpoint-group=ON_PREM_NEG_NAME \ --network-endpoint-group-zone=ON_PREM_NEG_ZONE
--max-rate-per-endpoint
パラメータをご覧ください。 - 受信リクエストをバックエンド サービスに転送するための URL マップを作成します。
gcloud compute url-maps create URL_MAP_NAME \ --default-service BACKEND_SERVICE \ --region=REGION
- 省略可: この手順は、クライアントとロードバランサ間で HTTPS を使用している場合に行います。HTTP ロードバランサの場合、必須ではありません。
Compute Engine または Certificate Manager の証明書を作成できます。Certificate Manager を使用して証明書を作成するには、次のいずれかの方法を使用します。
- リージョン セルフマネージド証明書。リージョン セルフマネージド証明書の作成と使用については、リージョン セルフマネージド証明書をデプロイするをご覧ください。証明書マップはサポートされていません。
リージョンの Google マネージド証明書。証明書マップはサポートされていません。
Certificate Manager では、次のタイプのリージョン Google マネージド証明書がサポートされています。
- プロジェクトごとの DNS 認証を使用するリージョン Google マネージド証明書。詳細については、リージョン Google マネージド証明書をデプロイするをご覧ください。
- Certificate Authority Service を使用するリージョン Google マネージド(プライベート)証明書。詳細については、CA Service を使用してリージョン Google マネージド証明書をデプロイするをご覧ください。
証明書を作成したら、証明書をターゲット プロキシに直接関連付けます。
Compute Engine セルフマネージド SSL 証明書リソースを作成するには:gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH
- URL マップにリクエストを転送するターゲット HTTP(S) プロキシを作成します。
HTTP ロードバランサの場合は、HTTP ターゲット プロキシを作成します。 HTTPS ロードバランサの場合は、HTTPS ターゲット プロキシを作成します。プロキシはロードバランサの一部であり、HTTPS ロード バランシング用の SSL 証明書を保持するため、この手順で証明書も読み込みます。gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --url-map-region=REGION \ --region=REGION
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME \ --url-map-region=REGION \ --region=REGION
- 受信リクエストをプロキシに転送する転送ルールを作成します。転送ルールの作成には、プロキシ専用サブネットを使用しないでください。
HTTP ロードバランサの場合: HTTPS ロードバランサの場合:gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=LB_SUBNET_NAME \ --address=LB_IP_ADDRESS \ --ports=80 \ --region=REGION \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --target-http-proxy-region=REGION
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=LB_SUBNET_NAME \ --address=LB_IP_ADDRESS \ --ports=443 \ --region=REGION \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --target-https-proxy-region=REGION
ドメインをロードバランサに接続する
ロードバランサが作成されたら、ロードバランサに関連付けられた IP アドレスをメモします(例: 30.90.80.100
)。ドメイン登録サービスを使用して A
レコードを作成し、ドメインがロードバランサを参照するようにします。SSL 証明書に複数のドメインを追加する場合は、それぞれについて A
レコードを追加して、すべてがロードバランサの IP アドレスを指すようにする必要があります。たとえば、www.example.com
と example.com
に A
レコードを作成するには、次のようにします。
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
DNS プロバイダとして Cloud DNS を使用する場合は、レコードの追加、変更、削除をご覧ください。
ロードバランサをテストする
ロードバランサをテストするには、ロードバランサと同じリージョンにクライアント VM を作成します。次に、クライアントからロードバランサにトラフィックを送信します。
クライアント VM を作成する
この例では、バックエンド NEG と同じリージョンにクライアント VM(vm-client
)を作成します。クライアントを使用するのは、ロードバランサの構成を検証し、テストセクションで説明されている想定される動作を示すためです。
コンソール
- Google Cloud コンソールの [VM インスタンス] ページに移動します。
[VM インスタンス] に移動 - [インスタンスを作成] をクリックします。
- [名前] を
vm-client
に設定します。 - [ゾーン] を CLIENT_VM_ZONE に設定します。
- [詳細オプション] をクリックして、次の変更を行います。
- [ネットワーキング] をクリックして
allow-ssh
をネットワーク タグに追加します。 - [ネットワーク インターフェース] にある編集ボタンをクリックして、次の変更を行い、[完了] をクリックします。
- ネットワーク: NETWORK
- サブネット: LB_SUBNET_NAME
- プライマリ内部 IP: エフェメラル(自動)
- 外部 IP: エフェメラル
- [ネットワーキング] をクリックして
- [作成] をクリックします。
gcloud
クライアント VM はロードバランサと同じリージョン内の任意のゾーンにあり、そのリージョン内の任意のサブネットを使用できます。この例では、クライアントは CLIENT_VM_ZONE ゾーンにあり、バックエンド VM と同じサブネットを使用しています。
gcloud compute instances create vm-client \ --zone=CLIENT_VM_ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=LB_SUBNET_NAME
ロードバランサにトラフィックを送信する
ロードバランサを構成したので、ロードバランサの IP アドレスにトラフィックを送信できるようになりました。
SSH を使用してクライアント インスタンスに接続します。
gcloud compute ssh client-vm \ --zone=CLIENT_VM_ZONE
ロードバランサの IP アドレスを取得します。割り振られた IP アドレスを表示するには、
compute addresses describe
コマンドを使用します。gcloud compute addresses describe l7-ilb-ip-address \ --region=us-west1
ロードバランサがバックエンドのホスト名を想定どおりに処理していることを確認します。IP_ADDRESS は、ロードバランサの IP アドレスに置き換えます。
HTTP テストの場合は、次のコマンドを実行します。
curl IP_ADDRESS
HTTPS テストの場合は、次のコマンドを実行します。
curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS:443
-k
フラグを指定すると、curl は証明書の検証をスキップします。
Google Cloud 以外のエンドポイントのテストは、ハイブリッド NEG エンドポイントを介して公開したサービスによって異なります。
追加の構成オプション
このセクションでは、代替および追加の構成オプションを提供する構成例を示します。これらのタスクはすべて省略可です。また、任意の順序で行うことができます。
クライアント HTTP キープアライブ タイムアウトを更新する
前の手順で作成したロードバランサは、クライアント HTTP キープアライブ タイムアウトのデフォルト値で構成されています。クライアントの HTTP キープアライブ タイムアウトを更新するには、次の操作を行います。
コンソール
Google Cloud コンソールで、[ロード バランシング] ページに移動します。
- 変更するロードバランサの名前をクリックします。
- [ 編集] をクリックします。
- [フロントエンドの構成] をクリックします。
- [高度な機能] を開きます。[HTTP キープアライブ タイムアウト] にタイムアウト値を入力します。
- [更新] をクリックします。
- 変更を確認するには、[確認と完了] をクリックして、[更新] をクリックします。
gcloud
HTTP ロードバランサの場合は、gcloud compute target-http-proxies update
コマンドを使用してターゲット HTTP プロキシを更新します。
gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --region=REGION
HTTPS ロードバランサの場合は、gcloud compute target-https-proxies update
コマンドを使用してターゲット HTTPS プロキシを更新します。
gcloud compute target-https-proxies update TARGET_HTTP_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --region REGION
次のように置き換えます。
TARGET_HTTP_PROXY_NAME
: ターゲット HTTP プロキシの名前。TARGET_HTTPS_PROXY_NAME
: ターゲット HTTPS プロキシの名前。HTTP_KEEP_ALIVE_TIMEOUT_SEC
: HTTP キープアライブ タイムアウト値(5~600 秒)。