ハイブリッド接続でリージョン内部アプリケーション ロードバランサを設定する

このページでは、リージョン内部アプリケーション ロードバランサをデプロイして、オンプレミスまたは他のパブリック クラウドにあり、ハイブリッド接続経由で到達可能なネットワーク エンドポイントにトラフィックをロード バランシングする方法について説明します。

まだ行っていない場合は、ハイブリッド接続 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 とともに Cloud Interconnect VLAN アタッチメントまたは Cloud VPN トンネルを使用して、ハイブリッド接続を確立する必要があります。高可用性接続の使用をおすすめします。

グローバル動的ルーティングが有効になっている Cloud Router は、Border Gateway Protocol(BGP)を介して特定のエンドポイントを学習し、Google Cloud VPC ネットワークにプログラムします。リージョン動的ルーティングはサポートされていません。静的ルートもサポートされていません。

Cloud Interconnect と Cloud VPN のいずれかの構成に使用する 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 ベースのロードバランサに使用されます。

コンソール

  1. Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
    [VPC ネットワーク] に移動
  2. 環境間のハイブリッド接続の構成に使用されたネットワークに移動します。
  3. [サブネットを追加] をクリックします。
  4. 名前PROXY_ONLY_SUBNET_NAME)を入力します。
  5. リージョンREGION)を選択します。
  6. [目的] を [リージョン マネージド プロキシ] に設定します。
  7. IP アドレス範囲PROXY_ONLY_SUBNET_RANGE)を入力します。
  8. [追加] をクリックします。

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 コンソール

  1. Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
    [VPC ネットワーク] に移動
  2. 環境間のハイブリッド接続の構成に使用されたネットワークに移動します。
  3. [サブネット] セクションで次の設定を行います。
    • [サブネット作成モード] を [カスタム] に設定します。
    • [新しいサブネット] セクションに、次の情報を入力します。
      • 名前: LB_SUBNET_NAME
      • リージョン: REGION
      • IP アドレス範囲: LB_SUBNET_RANGE
    • [完了] をクリックします。
  4. [作成] をクリックします。

gcloud

  1. 環境間のハイブリッド接続の構成に使用したネットワーク内にサブネットを作成します。

    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 アドレスを予約できます。

  1. [VPC ネットワーク] ページに移動します。

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

  2. 環境間のハイブリッド接続の構成に使用したネットワークをクリックします。
  3. [静的内部 IP アドレス] をクリックして、[静的アドレスを予約] をクリックします。
  4. 名前LB_IP_ADDRESS)を入力します。
  5. [サブネット] で [LB_SUBNET_NAME] を選択します。
  6. 予約する IP アドレスを指定する場合は、[静的 IP アドレス] の下で、[自分で選択] を選択し、[カスタム IP アドレス] に入力します。それ以外の場合、サブネットの IP アドレスは自動的に割り当てられます。
  7. この IP アドレスを複数の転送ルールで使用する場合は、[目的] で [共有] を選択します。
  8. [予約] をクリックして、プロセスを終了します。

gcloud

  1. gcloud CLI を使用して compute addresses create コマンドを実行します。

    gcloud compute addresses create LB_IP_ADDRESS \
      --region=REGION \
      --subnet=LB_SUBNET_NAME \
    
  2. 割り振られた 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/2235.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: バックエンドにプロキシ専用サブネットからの接続を許可する上り(内向き)ルール。

コンソール

  1. Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。
    [ファイアウォール ポリシー] に移動
  2. [ファイアウォール ルールを作成] をクリックして、ヘルスチェック プローブからのトラフィックを許可するルールを作成します。
    1. [名前] に「fw-allow-health-check」と入力します。
    2. [ネットワーク] で、[NETWORK] を選択します。
    3. [ターゲット] で [指定されたターゲットタグ] を選択します。
    4. [ターゲットタグ] フィールドに「allow-health-check」を入力します。
    5. [ソースフィルタ] を [IPv4 範囲] に設定します。
    6. [送信元 IPv4 範囲] を 130.211.0.0/2235.191.0.0/16 に設定します。
    7. [プロトコルとポート] で [指定したプロトコルとポート] を選択します。
    8. [TCP] を選択し、ポート番号に「80」と入力します。
    9. [作成] をクリックします。
  3. [ファイアウォール ルールを作成] を再度クリックして、SSH 接続の受信を許可するルールを作成します。
    1. 名前: fw-allow-ssh
    2. ネットワーク: NETWORK
    3. 優先度: 1000
    4. トラフィックの方向: 上り(内向き)
    5. 一致したときのアクション: 許可
    6. ターゲット: 指定されたターゲットタグ
    7. ターゲットタグ: allow-ssh
    8. ソースフィルタ: IPv4 の範囲
    9. 送信元 IPv4 範囲: 0.0.0.0/0
    10. プロトコルとポート: [指定したプロトコルとポート] を選択します。
    11. [TCP] を選択し、ポート番号に「22」と入力します。
    12. [作成] をクリックします。
  4. [ファイアウォール ルールを作成] を再度クリックして、プロキシ専用サブネットからの受信接続を許可するルールを作成します。
    1. 名前: fw-allow-proxy-only-subnet
    2. ネットワーク: NETWORK
    3. 優先度: 1000
    4. トラフィックの方向: 上り(内向き)
    5. 一致したときのアクション: 許可
    6. ターゲット: 指定されたターゲットタグ
    7. ターゲットタグ: allow-proxy-only-subnet
    8. ソースフィルタ: IPv4 の範囲
    9. 送信元 IPv4 範囲: PROXY_ONLY_SUBNET_RANGE
    10. プロトコルとポート: [指定したプロトコルとポート] を選択します。
    11. [TCP] を選択し、ポート番号に「80」と入力します。
    12. [作成] をクリックします。

gcloud

  1. 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
    
  2. ネットワーク タグ 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
    
  3. ロードバランサが 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 を作成する

コンソール

  1. Google Cloud コンソールの [VM インスタンス] ページに移動します。
    [VM インスタンス] に移動
  2. [インスタンスを作成] をクリックします。
  3. [名前] を vm-a1 に設定します。
  4. [リージョン] に REGION を選択し、任意のゾーンを選択します。この手順では GCP_NEG_ZONE とします。
  5. [ブートディスク] セクションで、ブートディスク オプションとして Debian GNU/Linux 12 (bookworm) が選択されていることを確認します。必要に応じて [選択] をクリックし、イメージを変更します。
  6. [詳細オプション] をクリックして、次の変更を行います。

    • [ネットワーキング] をクリックして、[ネットワーク タグ] に allow-sshallow-health-checkallow-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
      
  7. [作成] をクリックします。

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

    • 名前: vm-a2、ゾーン: GCP_NEG_ZONE

gcloud

VM とそのゾーンの名前にこれらの組み合わせを使用して、次のコマンドを 2 回実行して VM を作成します。スクリプトの内容は両方の VM で同じです。

  • vm-a1VM_NAME と任意の GCP_NEG_ZONE ゾーン
  • vm-a2VM_NAME と同じ GCP_NEG_ZONE ゾーン

    gcloud compute instances create VM_NAME \
        --zone=GCP_NEG_ZONE \
        --image-family=debian-10 \
        --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 を作成する

コンソール

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

  1. Google Cloud コンソールの [ネットワーク エンドポイント グループ] ページに移動します。
    [ネットワーク エンドポイント グループ] ページに移動
  2. [ネットワーク エンドポイント グループを作成] をクリックします。
  3. ゾーン NEG の名前を入力します。この手順では GCP_NEG_NAME とします。
  4. [ネットワーク エンドポイント グループの種類] で [ネットワーク エンドポイント グループ(ゾーン)] を選択します。
  5. [ネットワーク] で NETWORK を選択します。
  6. [サブネット] で LB_SUBNET_NAME を選択します。
  7. [ゾーン] で GCP_NEG_ZONE を選択します。
  8. [デフォルト ポート] で「80」と入力します。
  9. [作成] をクリックします。

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

  1. Google Cloud コンソールの [ネットワーク エンドポイント グループ] ページに移動します。
    [ネットワーク エンドポイント グループ] に移動
  2. 前のステップで作成したネットワーク エンドポイント グループの名前GCP_NEG_NAME)をクリックします。ネットワーク エンドポイント グループの詳細ページが表示されます。
  3. [このグループのネットワーク エンドポイント] セクションで [ネットワーク エンドポイントを追加] をクリックします。[ネットワーク エンドポイントの追加] ページが表示されます。
  4. [VM インスタンス] を選択して、ネットワーク エンドポイントとして内部 IP アドレスを追加します。[ネットワーク インターフェース] セクションに、VM の名前、ゾーン、サブネットが表示されます。
  5. [IPv4 アドレス] フィールドに、新しいネットワーク エンドポイントの IPv4 アドレスを入力します。
  6. ポートタイプを選択します。
    1. [デフォルト] を選択すると、エンドポイントはネットワーク エンドポイント グループのすべてのエンドポイントにデフォルト ポート 80 を使用します。この例では、Apache サーバーがポート 80 でリクエストを配信しているため、これで十分です。
    2. [カスタム] を選択した場合は、使用するエンドポイントのポート番号を入力します。
  7. 他のエンドポイントを追加するには、[ネットワーク エンドポイントを追加] をクリックし、前の手順を繰り返します。
  8. すべてのエンドポイントを追加したら、[作成] をクリックします。

gcloud

  1. 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 を指定するか、各エンドポイントのポート番号を指定します。

  2. エンドポイントを 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 のドキュメント: 使用可能なリージョンとゾーンをご覧ください。

コンソール

ハイブリッド接続ネットワーク エンドポイント グループを作成するには:

  1. Google Cloud コンソールの [ネットワーク エンドポイント グループ] ページに移動します。
    [ネットワーク エンドポイント グループ] に移動
  2. [ネットワーク エンドポイント グループを作成] をクリックします。
  3. ハイブリッド NEG の名前を入力します。この手順では ON_PREM_NEG_NAME とします。
  4. ネットワーク エンドポイント グループの種類として [ハイブリッド接続ネットワーク エンドポイント グループ(ゾーン)] を選択します。
  5. [ネットワーク] で NETWORK を選択します。
  6. [サブネット] で LB_SUBNET_NAME を選択します。
  7. [ゾーン] で ON_PREM_NEG_ZONE を選択します。
  8. デフォルト ポートを入力します。
  9. [作成] をクリックします。

ハイブリッド接続 NEG にエンドポイントを追加します。

  1. Google Cloud コンソールの [ネットワーク エンドポイント グループ] ページに移動します。
    [ネットワーク エンドポイント グループ] ページに移動
  2. 前のステップで作成したネットワーク エンドポイント グループの名前ON_PREM_NEG_NAME)をクリックします。ネットワーク エンドポイント グループの詳細ページが表示されます。
  3. [このグループのネットワーク エンドポイント] セクションで [ネットワーク エンドポイントを追加] をクリックします。[ネットワーク エンドポイントの追加] ページが表示されます。
  4. 新しいネットワーク エンドポイントの IP アドレスを入力します。
  5. ポートタイプを選択します。
    1. [デフォルト] を選択すると、エンドポイントはネットワーク エンドポイント グループのすべてのエンドポイントにデフォルト ポートを使用します。
    2. [カスタム] を選択すると、使用するエンドポイントに異なるポート番号を入力できます。
  6. 他のエンドポイントを追加するには、[ネットワーク エンドポイントを追加] をクリックし、前の手順を繰り返します。
  7. Google Cloud 以外のエンドポイントをすべて追加したら、[作成] をクリックします。

gcloud

  1. 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
    
  2. オンプレミス バックエンド 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

  1. バックエンドのヘルスチェックを作成します。
       gcloud compute health-checks create http HTTP_HEALTH_CHECK_NAME \
           --region=REGION \
           --use-serving-port
       
    ハイブリッド NEG バックエンドのヘルスチェック プローブはプロキシ専用サブネットの Envoy プロキシから発信され、ゾーン NEG バックエンドのプローブは [Google の中央プローブ IP 範囲](/load-balancing/docs/health-check-concepts#ip-ranges)から発信されます。
  2. 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
      
  3. ゾーン NEG をバックエンドとしてバックエンド サービスに追加します。
    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
    
    バランシング モードの構成の詳細については、gcloud CLI のドキュメントで --max-rate-per-endpoint パラメータをご覧ください。
  4. ハイブリッド NEG をバックエンドとしてバックエンド サービスに追加します。
    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
    
    バランシング モードの構成の詳細については、gcloud CLI のドキュメントで --max-rate-per-endpoint パラメータをご覧ください。
  5. 受信リクエストをバックエンド サービスに転送するための URL マップを作成します。
    gcloud compute url-maps create URL_MAP_NAME \
        --default-service BACKEND_SERVICE \
        --region=REGION
    
  6. 省略可: この手順は、クライアントとロードバランサ間で HTTPS を使用している場合に行います。HTTP ロードバランサの場合、必須ではありません。

    Compute Engine または Certificate Manager の証明書を作成できます。Certificate Manager を使用して証明書を作成するには、次のいずれかの方法を使用します。

    • リージョン セルフマネージド証明書。リージョン セルフマネージド証明書の作成と使用については、リージョン セルフマネージド証明書をデプロイするをご覧ください。証明書マップはサポートされていません。

    • リージョンの Google マネージド証明書。証明書マップはサポートされていません。

      Certificate Manager では、次のタイプのリージョン 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 ターゲット プロキシを作成します。
      gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --url-map-region=REGION \
          --region=REGION
      
      HTTPS ロードバランサの場合は、HTTPS ターゲット プロキシを作成します。プロキシはロードバランサの一部であり、HTTPS ロード バランシング用の SSL 証明書を保持するため、この手順で証明書も読み込みます。
      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 ロードバランサの場合:
        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
      
      HTTPS ロードバランサの場合:
        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.comexample.comA レコードを作成するには、次のようにします。

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

DNS プロバイダとして Cloud DNS を使用する場合は、レコードの追加、変更、削除をご覧ください。

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

ロードバランサをテストするには、ロードバランサと同じリージョンにクライアント VM を作成します。次に、クライアントからロードバランサにトラフィックを送信します。

クライアント VM を作成する

この例では、バックエンド NEG と同じリージョンにクライアント VM(vm-client)を作成します。クライアントを使用するのは、ロードバランサの構成を検証し、テストセクションで説明されている想定される動作を示すためです。

コンソール

  1. Google Cloud コンソールの [VM インスタンス] ページに移動します。
    [VM インスタンス] に移動
  2. [インスタンスを作成] をクリックします。
  3. [名前] を vm-client に設定します。
  4. [ゾーン] を CLIENT_VM_ZONE に設定します。
  5. [詳細オプション] をクリックして、次の変更を行います。
    • [ネットワーキング] をクリックして allow-sshネットワーク タグに追加します。
    • [ネットワーク インターフェース] にある編集ボタンをクリックして、次の変更を行い、[完了] をクリックします。
      • ネットワーク: NETWORK
      • サブネット: LB_SUBNET_NAME
      • プライマリ内部 IP: エフェメラル(自動)
      • 外部 IP: エフェメラル
  6. [作成] をクリックします。

gcloud

クライアント VM はロードバランサと同じリージョン内の任意のゾーンにあり、そのリージョン内の任意のサブネットを使用できます。この例では、クライアントは CLIENT_VM_ZONE ゾーンにあり、バックエンド VM と同じサブネットを使用しています。

gcloud compute instances create vm-client \
    --zone=CLIENT_VM_ZONE \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=LB_SUBNET_NAME

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

ロードバランサを構成したので、ロードバランサの IP アドレスにトラフィックを送信できるようになりました。

  1. SSH を使用してクライアント インスタンスに接続します。

    gcloud compute ssh client-vm \
      --zone=CLIENT_VM_ZONE
    
  2. ロードバランサの IP アドレスを取得します。割り振られた IP アドレスを表示するには、compute addresses describe コマンドを使用します。

    gcloud compute addresses describe l7-ilb-ip-address \
      --region=us-west1
    
  3. ロードバランサがバックエンドのホスト名を想定どおりに処理していることを確認します。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 キープアライブ タイムアウトを更新するには、次の操作を行います。

コンソール

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

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

  2. 変更するロードバランサの名前をクリックします。
  3. [編集] をクリックします。
  4. [フロントエンドの構成] をクリックします。
  5. [高度な機能] を開きます。[HTTP キープアライブ タイムアウト] にタイムアウト値を入力します。
  6. [更新] をクリックします。
  7. 変更を確認するには、[確認と完了] をクリックして、[更新] をクリックします。

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 秒)。

次のステップ