ハイブリッド接続でリージョン内部プロキシ ネットワーク ロードバランサを設定する

リージョン内部プロキシ ネットワーク ロードバランサは、プロキシベースのリージョン レイヤ 4 ロードバランサです。これにより、同じ Virtual Private Cloud(VPC)ネットワーク内のクライアントまたは VPC ネットワークに接続されているクライアントのみがアクセスできる内部 IP アドレスの背後で TCP サービス トラフィックを実行し、スケーリングできます。他の VPC ネットワーク内のクライアントがサービスを利用できるようにする場合は、Private Service Connect を使用してサービスを公開できます。

このページでは、ハイブリッド接続で接続されているオンプレミスまたは他のクラウド環境でバックエンドにトラフィックをロードバランスするようにリージョン内部プロキシ ネットワーク ロードバランサを構成する方法について説明します。ネットワークを Google Cloud に接続するためのハイブリッド接続の構成は、このページの対象外です。

概要

この例では、ロードバランサを使用して、オンプレミスまたは他のクラウド環境にあるバックエンド VM に TCP トラフィックを分散します。

この例では、以下のデプロイを構成します。

ハイブリッド NEG バックエンドを使用したリージョン内部プロキシ ネットワーク ロードバランサの構成例
ハイブリッド NEG バックエンドを使用したリージョン内部プロキシ ネットワーク ロードバランサの構成例(クリックして拡大)

リージョン内部プロキシのネットワーク ロードバランサは、リージョン ロードバランサです。すべてのロードバランサ コンポーネント(バックエンド インスタンス グループ、バックエンド サービス、ターゲット プロキシ、転送ルール)は、同じリージョンに配置されている必要があります。

権限

ハイブリッド ロード バランシングを設定するには、次の権限が必要です。

  • 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)を使用します。このネットワークから任意のサブネットを選択して、ロードバランサの IP アドレスを予約し、ロードバランサを作成できます。この手順では、このサブネットを LB_SUBNET とします。

また、使用するリージョン(この手順では REGION)が Cloud VPN トンネルまたは Cloud Interconnect VLAN アタッチメントの作成に使用したリージョンと同じであることを確認します。

プロキシ専用サブネットを構成する

プロキシ専用サブネットには、Google がユーザーに代わって Envoy プロキシを実行する際に使用する一連の IP アドレスが用意されています。このプロキシは、クライアントからの接続を終端し、バックエンドへの新しい接続を作成します。

プロキシ専用サブネットは、NETWORK VPC ネットワークの REGION リージョン内のすべての Envoy ベースのリージョン ロードバランサで使用されます。

リージョンごと、VPC ネットワークごとにアクティブなプロキシ専用サブネットは 1 つだけです。このリージョンにプロキシ専用サブネットがすでに存在する場合は、この手順をスキップできます。

コンソール

Google Cloud コンソールを使用している場合は、しばらく待ってから、[ロード バランシング] ページでプロキシ専用サブネットを作成できます。

プロキシ専用サブネットを今すぐ作成する場合は、次の操作を行います。

  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

ロードバランサの IP アドレスを予約する

デフォルトでは、各転送ルールに 1 つの IP アドレスが使用されます。共有 IPv4 アドレスを予約すると、複数の転送ルールで同じ IPv4 アドレスを使用できます。ただし、Private Service Connect を使用してロードバランサを公開する場合は、転送ルールに共有 IPv4 アドレスを使用しないでください。

ロードバランサに静的内部 IPv4 アドレスを予約するには、新しい静的内部 IPv4 または IPv6 アドレスを予約するをご覧ください。

ハイブリッド接続 NEG を設定する

NEG を作成するときは、Google Cloud とオンプレミスまたは他のクラウド環境との間の地理的距離を最小限に抑える ZONE を使用します。たとえば、ドイツのフランクフルトのオンプレミス環境にサービスをホストする場合、NEG を作成するときに europe-west3-a Google Cloud ゾーンを指定できます。

さらに、NEG の作成に使用する ZONE は、Cloud VPN トンネルまたは Cloud Interconnect VLAN アタッチメントがハイブリッド接続用に構成されたのと同じリージョンに配置されている必要があります。

使用可能なリージョンとゾーンについては、Compute Engine のドキュメント: 使用可能なリージョンとゾーンをご覧ください。

コンソール

ハイブリッド接続 NEG を作成するには:

  1. Google Cloud コンソールで、[ネットワーク エンドポイント グループ] ページに移動します。

    [ネットワーク エンドポイント グループ] に移動

  2. [ネットワーク エンドポイント グループを作成] をクリックします。

  3. ハイブリッド NEG の名前を入力します。この手順では HYBRID_NEG_NAME とします。

  4. ネットワーク エンドポイント グループの種類として [ハイブリッド接続ネットワーク エンドポイント グループ(ゾーン)] を選択します。

  5. [ネットワーク] で NETWORK を選択します。

  6. [サブネット] で LB_SUBNET を選択します。

  7. [ゾーン] で HYBRID_NEG_ZONE を選択します。

  8. デフォルト ポートを入力します。

  9. [作成] をクリックします。

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

  1. Google Cloud コンソールで、[ネットワーク エンドポイント グループ] ページに移動します。

    [ネットワーク エンドポイント グループ] に移動

  2. 前のステップで作成したネットワーク エンドポイント グループの名前HYBRID_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 HYBRID_NEG_NAME \
       --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
       --zone=HYBRID_NEG_ZONE \
       --network=NETWORK
    
  2. オンプレミス IP:Port エンドポイントをハイブリッド NEG に追加します。

    gcloud compute network-endpoint-groups update HYBRID_NEG_NAME \
        --zone=HYBRID_NEG_ZONE \
        --add-endpoint="ip=ENDPOINT_IP_ADDRESS,port=ENDPOINT_PORT"
    

このコマンドを使用すると、オンプレミスまたはクラウド環境で構成したネットワーク エンドポイントを追加できます。--add-endpoint を必要な回数だけ繰り返します。

必要に応じて、これらの手順を繰り返して複数のハイブリッド NEG を作成できます。

ロードバランサの構成

コンソール

構成を開始する

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

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

  2. [ロードバランサを作成] をクリックします。
  3. [ロードバランサの種類] で [ネットワーク ロードバランサ(TCP / UDP / SSL)] を選択し、[次へ] をクリックします。
  4. [プロキシまたはパススルー] で [プロキシ ロードバランサ] を選択し、[次へ] をクリックします。
  5. [インターネット接続または内部] で [内部] を選択し、[次へ] をクリックします。
  6. [クロスリージョンまたはシングル リージョンのデプロイ] で [リージョン ワークロードに最適] を選択し、[次へ] をクリックします。
  7. [構成] をクリックします。

基本構成

  1. ロードバランサの名前を入力します。
  2. リージョンREGION)を選択します。
  3. ネットワークNETWORK)を選択します。

プロキシ専用サブネットを予約する

プロキシ専用サブネットを予約するには:

  1. [サブネットを予約] をクリックします。
  2. 名前PROXY_ONLY_SUBNET_NAME)を入力します。
  3. IP アドレス範囲PROXY_ONLY_SUBNET_RANGE)を入力します。
  4. [追加] をクリックします。

バックエンドの構成

  1. [バックエンドの構成] をクリックします。
  2. [バックエンド タイプ] で、[ハイブリッド接続ネットワーク エンドポイント グループ(ゾーン)] を選択します。
  3. [プロトコル] で、[TCP] を選択します。
  4. [新しいバックエンド] で、以前に作成したハイブリッド NEG(HYBRID_NEG_NAME)を選択します。[ネットワーク エンドポイント グループの作成] をクリックして、ハイブリッド NEG を今すぐ作成することもできます。NEG の構成方法については、ハイブリッド NEG の設定をご覧ください。
  5. 残りのデフォルト値は変更せずに、[完了] をクリックします。
  6. ヘルスチェックを構成します。
    1. [ヘルスチェック] で [ヘルスチェックを作成] を選択します。
    2. [名前] にヘルスチェックの名前を入力します。
    3. [プロトコル] で、[TCP] を選択します。
    4. [ポート] に「80」と入力します。
  7. 残りのデフォルト値は変更せずに、[保存] をクリックします。
  8. Google Cloud コンソールで、[バックエンドの構成] の横にチェックマークが表示されていることを確認します。チェックマークがない場合は、すべての手順を完了したことを再度確認します。

フロントエンドの構成

  1. [フロントエンドの構成] をクリックします。
  2. 転送ルールの名前を入力します。
  3. [サブネットワーク] で [LB_SUBNET] を選択します。
  4. [IP アドレス] で [LB_IP_ADDRESS] を選択します。
  5. [ポート番号] に、1~65535 のポート番号を入力します。転送ルールは、宛先ポートが一致するパケットのみを転送します。
  6. [プロキシのプロトコル] は、オンプレミスまたは他のクラウド エンドポイントで実行されているサービスで動作する場合にのみ有効にします。たとえば、PROXY プロトコルは Apache HTTP Server ソフトウェアでは動作しません。詳細については、プロキシのプロトコルをご覧ください。
  7. [完了] をクリックします。
  8. Google Cloud Console で、[フロントエンドの構成] の横にチェックマークがあることを確認します。チェックマークがない場合には、前のすべてのステップが完了していることを再度確認してください。

確認と完了

  1. [確認と完了] をクリックします。
  2. 設定を再度確認します。
  3. [作成] をクリックします。

gcloud

  1. バックエンドのリージョン ヘルスチェックを作成します。

    gcloud compute health-checks create tcp TCP_HEALTH_CHECK_NAME \
        --region=REGION \
        --use-serving-port
    

    ハイブリッド NEG バックエンドのヘルスチェック プローブは、プロキシ専用サブネットの Envoy プロキシから発信されています。

  2. バックエンド サービスを作成します。

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --protocol=TCP \
       --region=REGION \
       --health-checks=TCP_HEALTH_CHECK_NAME \
       --health-checks-region=REGION
    
  3. ハイブリッド NEG バックエンドをバックエンド サービスに追加します。

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
       --network-endpoint-group=HYBRID_NEG_NAME \
       --network-endpoint-group-zone=HYBRID_NEG_ZONE \
       --region=REGION \
       --balancing-mode=CONNECTION \
       --max-connections=MAX_CONNECTIONS
    

    MAX_CONNECTIONS には、バックエンドで処理する最大同時接続数を入力します。

  4. ターゲット TCP プロキシを作成します。

    gcloud compute target-tcp-proxies create TARGET_TCP_PROXY_NAME \
       --backend-service=BACKEND_SERVICE_NAME \
       --region=REGION
    
  5. 転送ルールを作成します。

    gcloud compute forwarding-rules create コマンドを使用して転送ルールを作成します。

    FWD_RULE_PORT は、1~65535 の単一のポート番号に置き換えます。転送ルールは、宛先ポートが一致するパケットのみを転送します。

    gcloud compute forwarding-rules create FORWARDING_RULE \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --network=NETWORK \
       --subnet=LB_SUBNET \
       --address=LB_IP_ADDRESS \
       --ports=FWD_RULE_PORT \
       --region=REGION \
       --target-tcp-proxy=TARGET_TCP_PROXY_NAME \
       --target-tcp-proxy-region=REGION
    

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

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

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

ロードバランサと同じリージョンにクライアント VM(client-vm)を作成します。

コンソール

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. [インスタンスを作成] をクリックします。

  3. [名前] を client-vm に設定します。

  4. [ゾーン] を CLIENT_VM_ZONE に設定します。

  5. [詳細オプション] をクリックします。

  6. [ネットワーキング] をクリックして次のフィールドを構成します。

    1. [ネットワーク タグ] に「allow-ssh」と入力します。
    2. [ネットワーク インターフェース] で、次のように選択します。
      • ネットワーク: NETWORK
      • サブネット: LB_SUBNET
  7. [作成] をクリックします。

gcloud

クライアント VM は、ロードバランサと同じ VPC ネットワークとリージョンに存在する必要があります。同じサブネットまたはゾーンに存在する必要はありません。クライアントは、バックエンド VM と同じサブネットを使用します。

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

test VM への SSH トラフィックを許可する

この例では、次のファイアウォール ルールを作成します。

  • fw-allow-ssh: 任意のアドレスから TCP ポート 22 への SSH 受信接続を許可する上り(内向き)ルール。このルールには、送信元の IP 範囲をより限定的に指定できます。たとえば、SSH セッションを開始するシステムの IP 範囲のみを指定できます。この例では、ターゲットタグ allow-ssh を使用して、適用する test client VM を識別させています。

コンソール

  1. Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。[ファイアウォール ポリシー] に移動
  2. [ファイアウォール ルールを作成] をクリックして、受信 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. プロトコルとポート: [指定されたプロトコルとポート] を選択して、tcp:22 を入力します。
    11. [作成] をクリックします。

gcloud

  1. ネットワーク タグ allow-ssh を使用して、VM との SSH 接続を許可する fw-allow-ssh ファイアウォール ルールを作成します。

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=NETWORK \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    

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

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

  1. SSH 経由でクライアント インスタンスに接続します。

    gcloud compute ssh client-vm \
      --zone=CLIENT_VM_ZONE
    
  2. ロードバランサがバックエンドのホスト名を想定どおりに処理していることを確認します。

    1. ロードバランサの IP アドレスを表示するには、compute addresses describe コマンドを使用します。

      gcloud compute addresses describe LB_IP_ADDRESS \
        --region=REGION
      

      IP アドレスをメモしておきます。

    2. ロードバランサ転送ルールの作成時に指定した IP アドレスとポートで、ロードバランサにトラフィックを送信します。ハイブリッド NEG バックエンドがリクエストに応答するかどうかは、Google Cloud 以外のエンドポイントで実行されているサービスによって異なります。

省略可: Private Service Connect を使用してサービスを公開する

ハイブリッド接続でリージョン内部プロキシ ネットワーク ロードバランサを使用すると、VPC ネットワーク内のクライアントがオンプレミス環境または他のクラウド環境でホストされているサービスを利用できるようになります。

ハイブリッド サービスを他の VPC ネットワークで利用できるようにするには、Private Service Connect を使用してサービスを公開します。サービス アタッチメントをリージョン内部プロキシ ネットワーク ロードバランサの前に配置することで、他の VPC ネットワーク内のクライアントが、オンプレミスまたは他のクラウド環境で実行されているハイブリッド サービスに到達できるようになります。

Private Service Connect を使用してハイブリッド サービスを公開する。
Private Service Connect を使用してハイブリッド サービスを公開する(クリックして拡大)

次のステップ