共有 VPC を使用した内部 HTTP(S) 負荷分散の設定

このドキュメントでは、共有 VPC ネットワークで内部 HTTP(S) 負荷分散を構成する手順について説明します。

共有 VPC ネットワークを使用しない場合は、内部 HTTP(S) 負荷分散の設定をご覧ください。

始める前に

  1. 共有 VPC の概要を確認します。
  2. 内部 HTTP(S) 負荷分散の概要共有 VPC アーキテクチャ セクションと制限事項セクションを含む)を確認します。

権限

共有 VPC 用に内部 HTTP(S) ロードバランサを設定するには、管理者が事前に設定とプロビジョニングを行う必要があります。これを行うと、サービス プロジェクトのオーナーは、管理者がプロビジョニングしたリソースを使用して、ロードバランサとバックエンドをデプロイできます。

このセクションでは、このガイドに従って共有 VPC ネットワークに内部 HTTP(S) ロードバランサを設定するために必要な権限について簡単に説明します。

共有 VPC の設定

次のロールが必要です。

  1. 共有 VPC の設定やホスト プロジェクトの有効化などの 1 回限りの管理タスクを実行する。
  2. 新しいサービス プロジェクトをオンボーディングするたびに繰り返す必要がある管理タスクを実行する。これには、サービス プロジェクトの接続、ネットワーク リソースのプロビジョニングと構成、サービス プロジェクト管理者へのアクセス権の付与が含まれます。

これらのタスクは、共有 VPC ホスト プロジェクトで実行する必要があります。共有 VPC 管理者も共有 VPC ホスト プロジェクトのオーナーにすることをおすすめします。これにより、ネットワーク管理者とセキュリティ管理者のロールが自動的に付与されます。

タスク 必要なロール
共有 VPC の設定、ホスト プロジェクトの有効化、サービス プロジェクト管理者へのアクセス権の付与 共有 VPC 管理者
共有 VPC でのサブネットの作成とサービス プロジェクト管理者へのアクセス権の付与 ネットワーク管理者
ファイアウォール ルールの追加と削除 セキュリティ管理者

サブネットをプロビジョニングしたら、ホスト プロジェクトのオーナーは、これらのリソースを使用するすべてのユーザー(通常はサービス プロジェクト管理者またはデベロッパー)にホスト プロジェクトでネットワーク ユーザーロールを付与します。

タスク 必要なロール
ホスト プロジェクトに属する VPC とサブネットの使用 ネットワーク ユーザー

このロールは、プロジェクト レベルまたは個々のサブネットに対して付与できます。Google では個々のサブネットにロールを付与することをおすすめします。プロジェクトにロールを付与すると、ホスト プロジェクトの VPC 内の現在および将来のすべてのサブネットに対してアクセスを与えることになります。

内部 HTTP(S) ロードバランサとバックエンドのデプロイと更新

サービス プロジェクト管理者が負荷分散リソースとバックエンドを作成するには、サービス プロジェクトで次のロールが必要です。これらのロールによって付与される権限は、サービス プロジェクトのオーナーまたは編集者には自動的に付与されます。

サービス プロジェクトで付与されるロール
タスク 必要なロール
ロードバランサのコンポーネントの作成 ネットワーク管理者
インスタンスの作成 インスタンス管理者
SSL 証明書の作成と変更 セキュリティ管理者

詳細については、次のガイドをご覧ください。

設定の概要

図に示すように、この例では共有 VPC ネットワークのデプロイで内部 HTTP(S) ロードバランサを作成します。

共有 VPC での内部 HTTP(S) 負荷分散
共有 VPC での内部 HTTP(S) 負荷分散

内部 HTTP(S) ロードバランサのネットワーク リソース(プロキシ専用サブネットやバックエンド インスタンスのサブネットなど)は、ホスト プロジェクトに作成されます。バックエンド インスタンスのファイアウォール ルールもホスト プロジェクトに作成されます。

ロードバランサの転送ルール、ターゲット プロキシ、URL マップ、バックエンド サービス、バックエンド インスタンスがサービス プロジェクトに作成されます。

前提条件

このセクションの手順は、内部 HTTP(S) ロードバランサを作成するたびに実行する必要はありません。ただし、ロードバランサの作成に進む前に、ここで説明するリソースにアクセスできることを確認する必要があります。

ホスト プロジェクトとサービス プロジェクトでの共有 VPC の設定

  1. 共有 VPC を設定します
  2. ホスト プロジェクトを有効化します
  3. サービス プロジェクトを接続します

以降の手順では、共有 VPC がすでに設定されていることを前提としています。この設定には、組織の IAM ポリシーの設定と、ホスト プロジェクトとサービス プロジェクトの指定が含まれています。

共有 VPC を設定し、ホスト プロジェクトとサービス プロジェクトを有効にするまで、先に進まないでください。

ホスト プロジェクトでのネットワークとサブネットの構成

2 つのサブネット(ロードバランサのフロントエンドとバックエンド用サブネット、およびロードバランサのプロキシ用サブネット)を持つ共有 VPC ネットワークが必要です。

この例では、次のネットワーク、リージョン、サブネットを使用します。

  • ネットワーク。ネットワークの名前は lb-network です。

  • ロードバランサのフロントエンドとバックエンド用のサブネット。us-west1 リージョンの lb-frontend-and-backend-subnet という名前のサブネットは、プライマリ IP 範囲として 10.1.2.0/24 を使用します。

  • プロキシのサブネット。us-west1 リージョンの proxy-only-subnet という名前のサブネット。プライマリ IP 範囲として 10.129.0.0/23 を使用します。

ロードバランサのフロントエンドとバックエンドのサブネットを構成する

この手順は、内部 HTTP(S) ロードバランサを作成するたびに実行する必要はありません。サービス プロジェクトが、プロキシ専用サブネットだけでなく、共有 VPC ネットワーク内のサブネットにもアクセスできることだけを確認する必要があります。

Cloud Console

  1. Google Cloud Console で、[VPC ネットワーク] ページに移動します。
    [VPC ネットワーク] ページに移動
  2. [VPC ネットワークを作成] をクリックします。
  3. [名前] に「lb-network」と入力します。
  4. [サブネット] セクションで次の設定を行います。
    • [サブネット作成モード] を [カスタム] に設定します。
    • [新しいサブネット] セクションに、次の情報を入力します。
      • 名前: lb-frontend-and-backend-subnet
      • リージョン: us-west1
      • IP アドレス範囲: 10.1.2.0/24
    • [完了] をクリックします。
  5. [作成] をクリックします。

gcloud

  1. gcloud compute networks create コマンドを使用して、VPC ネットワークを作成します。

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. サブネットを us-west1 リージョン内の lb-network ネットワークに作成します。

    gcloud compute networks subnets create lb-frontend-and-backend-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-west1
    

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

プロキシ専用サブネットは、lb-network VPC ネットワークの us-west1 リージョン内のすべての内部 HTTP(S) ロードバランサで使用されます。リージョンごと、ネットワークごとにアクティブなプロキシ専用サブネットは 1 つだけです。

このネットワークの us-west1 リージョンに内部 HTTP(S) ロードバランサ用に予約されているプロキシ専用サブネットがすでに存在する場合は、この手順を実施しないでください。

Cloud Console

  1. Cloud Console で、[VPC ネットワーク] ページに移動します。
    [VPC ネットワーク] ページに移動
  2. 共有 VPC ネットワークの名前 lb-network をクリックします。
  3. [サブネットを追加] をクリックします。
  4. [名前] に「proxy-only-subnet」と入力します。
  5. [リージョン] で us-west1 を選択します。
  6. [内部 HTTP(S) 負荷分散を予約する] を [オン] に設定します。
  7. [IP アドレス範囲] に「10.129.0.0/23」と入力します。
  8. [追加] をクリックします。

gcloud

gcloud compute networks subnets create コマンドを使用して、プロキシ専用サブネットを作成します。

gcloud compute networks subnets create proxy-only-subnet \
  --purpose=INTERNAL_HTTPS_LOAD_BALANCER \
  --role=ACTIVE \
  --region=us-west1 \
  --network=lb-network \
  --range=10.129.0.0/23

サービス プロジェクト管理者にバックエンド サブネットへのアクセス権を付与する

サービス プロジェクト管理者は lb-frontend-and-backend-subnet サブネットにアクセスして、ロードバランサのフロントエンド IP アドレスを選択し、ロードバランサのバックエンドをプロビジョニングする必要があります。

共有 VPC 管理者は、サービス プロジェクト管理者(またはサブネットを使用するリソースとバックエンドをデプロイするデベロッパー)にアクセス権を付与する必要があります。手順については、一部のサブネットのサービス プロジェクト管理者をご覧ください。

ホスト プロジェクトでのファイアウォール ルールの構成

この手順は、内部 HTTP(S) ロードバランサを作成するたびに実行する必要はありません。これは、ホスト プロジェクト管理者がホスト プロジェクトで実行する必要がある 1 回限りの手順です。

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

  • fw-allow-ssh負荷分散されたインスタンスに適用される内向きルール。任意のアドレスから TCP ポート 22 への SSH 接続を許可します。このルールには、送信元の IP 範囲をより限定的に指定できます。たとえば、SSH セッションを開始するシステムの IP 範囲を指定できます。この例では、ターゲットタグ allow-ssh を使用して、ファイアウォール ルールが適用される仮想マシン(VM)を識別します。

  • fw-allow-health-check負荷分散されたインスタンスに適用される内向きルール。Google Cloud ヘルスチェック システム(130.211.0.0/2235.191.0.0/16)からのすべての TCP トラフィックを許可します。この例では、ターゲットタグ load-balanced-backend を使用して、適用するインスタンスを識別します。

  • fw-allow-proxies負荷分散されたインスタンスに適用される内向きルール。内部 HTTP(S) ロードバランサが管理するプロキシからポート 804438080 への TCP トラフィックを許可します。この例では、ターゲットタグ load-balanced-backend を使用して、適用するインスタンスを識別します。

これらのファイアウォール ルールがなければ、デフォルトの内向き拒否ルールによってバックエンド インスタンスへの受信トラフィックがブロックされます。

Cloud Console

  1. Cloud Console で、[ファイアウォール ルール] ページに移動します。
    [ファイアウォール ルール] ページに移動
  2. [ファイアウォール ルールを作成] をクリックして、SSH 接続の受信を許可するルールを作成します。
    • 名前: fw-allow-ssh
    • ネットワーク: lb-network
    • トラフィックの方向: 上り
    • 一致したときのアクション: 許可
    • ターゲット: 指定されたターゲットタグ
    • ターゲットタグ: allow-ssh
    • ソースフィルタ: IP ranges
    • ソース IP の範囲: 0.0.0.0/0
    • プロトコルとポート:
      • 指定されたプロトコルとポートを選択します。
      • tcp にチェックを入れて、ポート番号に「22」と入力します。
  3. [作成] をクリックします。
  4. [ファイアウォール ルールを作成] をもう一度クリックして、Google Cloud ヘルスチェックを許可するルールを作成します。
    • 名前: fw-allow-health-check
    • ネットワーク: lb-network
    • トラフィックの方向: 上り
    • 一致したときのアクション: 許可
    • ターゲット: 指定されたターゲットタグ
    • ターゲットタグ: load-balanced-backend
    • ソースフィルタ: IP ranges
    • 送信元 IP 範囲: 130.211.0.0/2235.191.0.0/16
    • プロトコルとポート:
      • 指定されたプロトコルとポートを選択します。
      • tcp にチェック入れて、「80」と入力します。
        このルールは、ヘルスチェックに使用されているプロトコルとポートのみに制限することをおすすめします。プロトコルとポートに tcp:80 を使用すると、Google Cloud はポート 80 で HTTP を使用して VM に接続できますが、ポート 443 では HTTPS を使用して VM に接続することはできません。
  5. [作成] をクリックします。
  6. [ファイアウォール ルールを作成] をもう一度クリックをして、ロードバランサのプロキシ サーバーがバックエンドに接続できるようにするルールを作成します:
    • 名前: fw-allow-proxies
    • ネットワーク: lb-network
    • トラフィックの方向: 上り
    • 一致したときのアクション: 許可
    • ターゲット: 指定されたターゲットタグ
    • ターゲットタグ: load-balanced-backend
    • ソースフィルタ: IP ranges
    • ソース IP の範囲: 10.129.0.0/23
    • プロトコルとポート:
      • 指定されたプロトコルとポートを選択します。
      • tcp にチェックを入れて、ポート番号に「80, 443, 8080」と入力します。
  7. [作成] をクリックします。

gcloud

  1. ネットワーク タグ 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:22
    
  2. Google Cloud ヘルスチェックを許可する fw-allow-health-check ルールを作成します。この例では、ヘルスチェック プローブからのすべての TCP トラフィックを許可します。ただし、必要に応じてポートの範囲を狭く構成することもできます。

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --target-tags=load-balanced-backend \
        --rules=tcp
    
  3. 内部 HTTP(S) ロードバランサのプロキシにバックエンドへの接続を許可する fw-allow-proxies ルールを作成します。

    gcloud compute firewall-rules create fw-allow-proxies \
      --network=lb-network \
      --action=allow \
      --direction=ingress \
      --source-ranges=10.129.0.0/23 \
      --target-tags=load-balanced-backend \
      --rules=tcp:80,tcp:443,tcp:8080
    

サービス プロジェクトでの内部 HTTP(S) ロードバランサの構成

このセクションでは、ロードバランサとバックエンドを設定する方法について説明します。これらの手順は、サービス プロジェクト管理者(またはサービス プロジェクト内で操作するデベロッパー)が行う必要があり、ホスト プロジェクト管理者の関与は必要ありません。このセクションの手順は、内部 HTTP(S) 負荷分散を設定する標準の手順とほぼ同じです。

このセクションでは、Compute Engine VM または Google Kubernetes Engine クラスタの Pod で実行されるサービスの負荷分散を設定するために必要な構成について説明します。クライアントは、ロードバランサの転送ルールで構成した IP アドレスとポートに接続します。クライアントがこの IP アドレスとポートにトラフィックを送信すると、リクエストは内部 HTTP(S) ロードバランサの URL マップに従ってバックエンド インスタンス(Compute Engine VM または GKE Pod)に転送されます。

この例では、エフェメラル内部 IP アドレスの割り当てを許可せずに、内部 HTTP(S) ロードバランサの転送ルールに予約済み内部 IP アドレスを明示的に設定しています。転送ルールの IP アドレスは予約しておくことをおすすめします。

マネージド インスタンス グループを作成する

このセクションでは、テンプレートとマネージド インスタンス グループの作成方法を説明します。このマネージド インスタンス グループに VM インスタンスを作成し、内部 HTTP(S) ロードバランサのバックエンド サーバーを実行します。クライアントからのトラフィックは、これらのバックエンド サーバーに負荷分散されます。わかりやすく説明するために、バックエンド サーバーはそれぞれ独自のホスト名を提供します。

Cloud Console

  1. Cloud Console で、[インスタンス グループ] ページに移動します。
    [インスタンス グループ] ページに移動
  2. [インスタンス グループを作成] をクリックします。
  3. 左側の [新しいマネージド インスタンス グループ] を選択します。
  4. [名前] に「l7-ilb-backend-example」と入力します。
  5. [ロケーション] で [シングルゾーン] を選択します。
  6. [リージョン] で us-west1 を選択します。
  7. [ゾーン] で us-west1-a を選択します。
  8. [インスタンス テンプレート] で [新しいインスタンス テンプレートを作成] を選択します。

    1. [名前] に「l7-ilb-backend-template」と入力します。
    2. [ブートディスク] が Debian GNU/Linux 9 (stretch) などの Debian イメージに設定されていることを確認します。これらの手順では、apt-get などの Debian でのみ使用できるコマンドを使用します。ブートディスクを変更する必要がある場合は、[変更] をクリックします。
      1. [オペレーティング システム] で [Debian] を選択します。
      2. [バージョン] で、使用可能な Debian イメージ(Debian GNU/Linux 9 (stretch) など)を選択します。
      3. [選択] をクリックします。
    3. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] の [管理] タブで、次のスクリプトを [起動スクリプト] フィールドに挿入します。

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://169.254.169.254/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2'
      
    4. [ネットワーキング] で [共有ネットワーク(共有元のホスト プロジェクト: HOST_PROJECT_ID] を選択します。

    5. [ネットワーク] で lb-network を選択し、[サブネット] に lb-frontend-and-backend-subnet を選択します。

    6. ネットワーク タグ allow-sshload-balanced-backend を追加します。

    7. [保存して次へ] をクリックします。

  9. グループ内に作成するインスタンスの数を指定します。

    この例では、[自動スケーリング モード] から次の項目を選択できます。

    • 自動スケーリングしない
    • [インスタンス数] に「2」を入力します。

    オプションとして、UI の [自動スケーリング] セクションで、インスタンスの CPU 使用率に基づいてインスタンスを自動的に追加または削除するようにインスタンス グループを構成できます。

  10. [作成] をクリックして、新しいインスタンス グループを作成します。

gcloud

このガイドの gcloud の手順は、Cloud Shell または bash がインストールされた別の環境を使用していることを前提としています。

  1. gcloud compute instance-templates create コマンドを使用して、HTTP サーバーで VM インスタンス テンプレートを作成します。

    gcloud compute instance-templates create l7-ilb-backend-template \
    --region=us-west1 \
    --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
    --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
    --tags=allow-ssh,load-balanced-backend \
    --image-family=debian-9 \
    --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://169.254.169.254/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2' \
    --project SERVICE_PROJECT_ID
    
  2. gcloud compute instance-groups managed create コマンドを使用して、ゾーンにマネージド インスタンス グループを作成します。

    gcloud compute instance-groups managed create l7-ilb-backend-example \
        --zone=us-west1-a \
        --size=2 \
        --template=l7-ilb-backend-template \
        --project SERVICE_PROJECT_ID
    

ロードバランサを構成する

この例では、次の内部 HTTP(S) ロードバランサのリソースを作成する方法について説明します。

  • HTTP ヘルスチェック
  • マネージド インスタンス グループをバックエンドとして使用するバックエンド サービス
  • URL マップ
  • SSL 証明書(HTTPS の場合のみ必須)
  • ターゲット プロキシ
  • 転送ルール

プロキシの可用性

同じ共有 VPC ネットワークを使用しているサービス プロジェクトの数によっては、各 Google Cloud プロジェクトが独自のネットワークをホストするネットワークのデプロイモデルよりも早く、割り当てまたは上限に達する場合があります。

たとえば、Google Cloud リージョン内で、新しい内部 HTTP(S) ロードバランサに応じるプロキシの容量が足りなくなることがあります。その場合、Cloud Console でロードバランサを作成しようとするとプロキシの可用性に関する警告メッセージが表示されます。この問題を解決するには、次のいずれかを行います。

  • 容量の問題が解決するまで待ちます。
  • この上限を引き上げるには、Google Cloud セールスチームにお問い合わせください。

Cloud Console

ロードバランサ タイプの選択

  1. Cloud Console で、[負荷分散] ページに移動します。
    [負荷分散] ページに移動
  2. [HTTP(S) 負荷分散] で [設定を開始] をクリックします。
  3. [VM 間のみ] を選択します。この設定は、ロードバランサが内部であることを意味します。
  4. [続行] をクリックします。

ロードバランサの準備

  1. ロードバランサの [名前] に「l7-ilb-shared-vpc」と入力します。
  2. [リージョン] で us-west1 を選択します。
  3. [ネットワーク] で [共有ネットワーク(共有元のホスト プロジェクト: HOST_PROJECT_ID] を選択します。
    1. プルダウンから [lb-network] を選択します。
      [共有 VPC ネットワークに必要なプロキシ専用サブネット] という警告が表示されたら、ホスト プロジェクト管理者が lb-network 共有 VPC ネットワークの us-west1 リージョンに proxy-only-subnet を作成していることを確認します。このページで、プロキシ専用サブネットを表示する権限がなくても、ロードバランサの作成は成功します。
  4. ウィンドウを開いたままにして続行します。

バックエンド サービスの構成

  1. [バックエンドの構成] をクリックします。
  2. [バックエンド サービスの作成または選択] メニューから [バックエンド サービスを作成] を選択します。
  3. バックエンド サービスの [名前] を l7-ilb-backend-service に設定します。
  4. [バックエンド タイプ] をインスタンス グループに設定します。
  5. [新しいバックエンド] セクションで、次の操作を行います。
    1. [インスタンス グループ] を l7-ilb-backend-example に設定します。
    2. [ポート番号] を 80 に設定します。
    3. [分散モード] を [使用率] に設定します。
    4. [完了] をクリックします。
  6. [ヘルスチェック] セクションで、[ヘルスチェックを作成] を選択し、次のパラメータを選択します。
    1. 名前: l7-ilb-basic-check
    2. プロトコル: HTTP
    3. ポート: 80
  7. [保存して次へ] をクリックします。
  8. [作成] をクリックします。

URL マップの構成

[ルーティング ルール] をクリックします。l7-ilb-backend-service が、ホストとパスが一致しなかった場合に使用される唯一のバックエンド サービスであることを確認します。

トラフィック管理の詳細については、トラフィック管理の設定をご覧ください。

フロントエンドを構成する

HTTP の場合:

  1. [フロントエンドの設定] をクリックします。
  2. [フロントエンド IP とポートの追加] をクリックします。
  3. [名前] を l7-ilb-forwarding-rule に設定します。
  4. [プロトコル] を HTTP に設定します。
  5. [サブネットワーク] を [lb-frontend-and-backend-subnet] に設定します。
    プルダウン リストで選択できる場合でも、フロントエンドにプロキシ専用サブネットは選択しないでください。
  6. [内部 IP] で [静的内部 IP アドレスの予約] を選択します。
  7. 表示されるパネルで、次の情報を入力します。
    1. 名前: l7-ilb-ip
    2. [静的 IP アドレス] セクションで、[ユーザー選択] を選択します。
    3. [カスタム IP アドレス] セクションに「10.1.2.99」と入力します。
    4. [予約] をクリックします。
  8. [ポート] を 80 に設定します。
  9. [完了] をクリックします。

HTTPS の場合:

クライアントとロードバランサ間で HTTPS を使用する場合は、プロキシを構成するために 1 つ以上の SSL 証明書リソースが必要になります。SSL 証明書リソースの作成方法については、SSL 証明書をご覧ください。現在、内部 HTTP(S) ロードバランサでは Google マネージド証明書がサポートされません。

  1. [フロントエンドの設定] をクリックします。
  2. [フロントエンド IP とポートの追加] をクリックします。
  3. [名前] フィールドに「l7-ilb-forwarding-rule」と入力します。
  4. [プロトコル] フィールドで [HTTPS (includes HTTP/2)] を選択します。
  5. [サブネットワーク] を [lb-frontend-and-backend-subnet] に設定します。
    プルダウン リストで選択できる場合でも、フロントエンドにプロキシ専用サブネットは選択しないでください。
  6. [内部 IP] で [静的内部 IP アドレスの予約] を選択します。
  7. 表示されるパネルで、次の情報を入力します。
    1. 名前: l7-ilb-ip
    2. [静的 IP アドレス] セクションで、[ユーザー選択] を選択します。
    3. [カスタム IP アドレス] セクションに「10.1.2.99」と入力します。
    4. [予約] をクリックします。
  8. HTTPS トラフィックを許可するように、ポート443 に設定されていることを確認します。
  9. [証明書] プルダウン リストをクリックします。
    1. プライマリ SSL 証明書として使用しようとしているセルフマネージド SSL 証明書リソースがすでにある場合は、プルダウン メニューから選択します。
    2. そうでない場合は、[新しい証明書を作成] を選択します。
      1. [名前] に「l7-ilb-cert」と入力します。
      2. 該当するフィールドに PEM 形式のファイルをアップロードします。
        • 公開鍵証明書
        • 証明書チェーン
        • 秘密鍵
      3. [作成] をクリックします。
  10. プライマリ SSL 証明書リソースに加えて証明書リソースを追加するには、次の手順に沿って操作します。
    1. [証明書を追加] をクリックします。
    2. [証明書] リストから証明書を選択するか、[新しい証明書の作成] をクリックし、上記の手順を行います。
  11. [完了] をクリックします。

構成を確認して完了する

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

gcloud

  1. gcloud compute health-checks create http コマンドを使用して HTTP ヘルスチェックを定義します。

    gcloud compute health-checks create http l7-ilb-basic-check \
       --region=us-west1 \
       --use-serving-port \
       --project SERVICE_PROJECT_ID
    
  2. gcloud compute backend-services create コマンドを使用してバックエンド サービスを定義します。

    gcloud compute backend-services create l7-ilb-backend-service \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --protocol=HTTP \
      --health-checks=l7-ilb-basic-check \
      --health-checks-region=us-west1 \
      --region=us-west1 \
      --project SERVICE_PROJECT_ID
    
  3. gcloud compute backend-services add-backend コマンドを使用して、バックエンド サービスにバックエンドを追加します。

    gcloud compute backend-services add-backend l7-ilb-backend-service \
      --balancing-mode=UTILIZATION \
      --instance-group=l7-ilb-backend-example \
      --instance-group-zone=us-west1-a \
      --region=us-west1 \
      --project SERVICE_PROJECT_ID
    
  4. gcloud compute url-maps create コマンドを使用して、URL マップを作成します。

    gcloud compute url-maps create l7-ilb-map \
      --default-service=l7-ilb-backend-service \
      --region=us-west1 \
      --project SERVICE_PROJECT_ID
    
  5. ターゲット プロキシを作成します。

    HTTP の場合:

    内部 HTTP ロードバランサの場合は、gcloud compute target-http-proxies create コマンドを使用してターゲット プロキシを作成します。

    gcloud compute target-http-proxies create l7-ilb-proxy \
      --url-map=l7-ilb-map \
      --url-map-region=us-west1 \
      --region=us-west1 \
      --project SERVICE_PROJECT_ID
    

    HTTPS の場合:

    SSL 証明書リソースの作成方法については、SSL 証明書をご覧ください。現在、内部 HTTP(S) ロードバランサでは Google マネージド証明書がサポートされません。

    ファイルパスを変数名に割り当てます。

    export LB_CERT=path to PEM-formatted file
    
    export LB_PRIVATE_KEY=path to PEM-formatted file
    

    gcloud compute ssl-certificates create コマンドを使用してリージョン SSL 証明書を作成します。

    gcloud compute ssl-certificates create l7-ilb-cert \
      --certificate=$LB_CERT \
      --private-key=$LB_PRIVATE_KEY \
      --region=us-west1
    

    リージョン SSL 証明書を使用して、gcloud compute target-https-proxies create コマンドでターゲット プロキシを作成します。

    gcloud compute target-https-proxies create l7-ilb-proxy \
      --url-map=l7-ilb-map \
      --region=us-west1 \
      --ssl-certificates=l7-ilb-cert \
      --project SERVICE_PROJECT_ID
    
  6. 転送ルールを作成します。

    カスタム ネットワークでは、転送ルールでサブネットを参照する必要があります。

    転送ルールの IP アドレスには、lb-frontend-and-backend-subnet を使用します。プロキシ専用サブネットを使用すると、転送ルールの作成に失敗します。

    HTTP の場合:

    適切なフラグを設定して gcloud compute forwarding-rules create コマンドを実行します。

    gcloud compute forwarding-rules create l7-ilb-forwarding-rule \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
      --address=10.1.2.99 \
      --ports=80 \
      --region=us-west1 \
      --target-http-proxy=l7-ilb-proxy \
      --target-http-proxy-region=us-west1 \
      --project SERVICE_PROJECT_ID
    

    HTTPS の場合:

    適切なフラグを設定して gcloud compute forwarding-rules create コマンドを実行し、転送ルールを作成します。

    gcloud compute forwarding-rules create l7-ilb-forwarding-rule \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
      --address=10.1.2.99 \
      --ports=443 \
      --region=us-west1 \
      --target-https-proxy=l7-ilb-proxy \
      --target-https-proxy-region=us-west1 \
      --project SERVICE_PROJECT_ID
    

テスト

VM インスタンスを作成して接続をテストする

クライアントは、ホスト プロジェクトまたは接続されたサービス プロジェクトのいずれかに配置できます。この例では、サービス プロジェクトにクライアント VM をデプロイして、ロードバランサが動作していることをテストします。クライアントは、同じ共有 VPC ネットワークを使用し、ロードバランサと同じリージョンに存在する必要があります。

gcloud compute instances create l7-ilb-client-us-west1-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
    --zone=us-west1-a \
    --tags=allow-ssh \
    --project SERVICE_PROJECT_ID

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

作成したインスタンスにログインし、内部 HTTP(S) ロードバランサの転送ルールの IP アドレスを介してバックエンドの HTTP(S) サービスに到達可能であること、バックエンド インスタンス間でトラフィックの負荷分散が行われていることをテストします。

各クライアント インスタンスへ SSH を介して接続する

gcloud compute ssh l7-ilb-client-us-west1-a \
    --zone=us-west1-a

IP がホスト名を提供していることを確認する

curl 10.1.2.99

HTTPS テストの場合、curl は次のもので置き換えます。

curl -k -s 'https//:10.1.2.99:443'

-k フラグを指定すると、curl は証明書の検証をスキップします。

100 個のリクエストを実行し負荷分散されていることを確認する

HTTP の場合:

{
  RESULTS=
  for i in {1..100}
  do
      RESULTS="$RESULTS:$(curl --silent 10.1.2.99)"
  done
  echo "***"
  echo "*** Results of load-balancing to 10.1.2.99: "
  echo "***"
  echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
  echo
}

HTTPS の場合:

{
  RESULTS=
  for i in {1..100}
  do
      RESULTS="$RESULTS:$(curl -k -s 'https://:10.1.2.99:443')"
  done
  echo "***"
  echo "*** Results of load-balancing to 10.1.2.99: "
  echo "***"
  echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
  echo
}

次のステップ