プロジェクト間のバックエンド サービスとバックエンド バケットを使用してグローバル外部アプリケーション ロードバランサを設定する

このドキュメントでは、ロードバランサのフロントエンドや URL マップとは異なるプロジェクトに配置されたバックエンド サービスとバックエンド バケットを使用して、グローバル外部アプリケーション ロードバランサを作成する方法について説明します。このデプロイモデルは、プロジェクト間のサービス参照と呼ばれます。

このドキュメントで使用している例では、共有 VPC 環境を使用してプロジェクト間のサービス参照を構成していません。共有 VPC 環境でプロジェクト間のサービス参照を構成する方法については、共有 VPC を使用してグローバル外部アプリケーション ロードバランサを設定するをご覧ください。

始める前に

設定が次の前提条件を満たしていることを確認します。

必要な IAM ロールと権限

このガイドで説明する作業を行うには、次の IAM ロールが必要です。

タスク 必要なロール
プロジェクトを作成する プロジェクト作成者ロールroles/resourcemanager.projectCreator
コンピューティング リソースを作成する Compute ネットワーク管理者ロールroles/compute.networkAdmin
Cloud Storage バケットを作成する Storage オブジェクト管理者roles/storage.objectAdmin

別のプロジェクトのリソースを使用する

(この例では、プロジェクト A はプロジェクト B にあるバックエンド サービスとバックエンド バケットを参照しています)。

この例では、プロジェクト B の管理者は、プロジェクト B のバックエンド サービスとバックエンド バケットへのアクセスを許可するため、プロジェクト A の管理者に Compute ロードバランサ サービス ユーザーのロールroles/compute.loadBalancerServiceUser)を付与する必要があります。このロールは、プロジェクト レベルまたはリソースレベルで付与できます。

このロールを割り当てる方法については、バックエンド サービスを使用する権限を Compute ロードバランサ管理者に付与するをご覧ください。

Google Cloud プロジェクトを作成する

このドキュメントの例では、手順を 2 回繰り返して 2 つの Google Cloud プロジェクトを作成します。

コンソール

新しいプロジェクトを作成するには、次の操作を行います。

  1. Google Cloud コンソールの [リソースの管理] ページに移動します。

    [リソースの管理] に移動

    残りの手順は、 Google Cloud コンソールに表示されます。

  2. ページの上部にある [組織の選択] プルダウン リストで、プロジェクトを作成する組織リソースを選択します。無料トライアルをご使用の場合はこのリストが表示されないため、この手順はスキップしてください。
  3. [プロジェクトを作成] をクリックします。
  4. 表示される [新しいプロジェクト] ウィンドウで、プロジェクト名を入力し、該当する請求先アカウントを選択します。プロジェクト名には文字、数字、単一引用符、ハイフン、スペース、感嘆符のみを使用でき、4~30 文字にする必要があります。
  5. [場所] ボックスに親組織またはフォルダ リソースを入力します。このリソースが新しいプロジェクトの階層上の親になります。[組織なし] を選択した場合は、そのプロジェクトを選択して、独自のリソース階層の最上位として新しいプロジェクトを作成できます。
  6. 新しいプロジェクトの詳細を入力し終えたら、[作成] をクリックします。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 新しいプロジェクトを作成するには、次のように gcloud projects create コマンドを使用します。

    gcloud projects create PROJECT_ID
    

    PROJECT_ID は、作成するプロジェクトの ID です。プロジェクト ID は先頭を小文字にする必要があります。また、使用できるのは ASCII 文字、数字、ハイフンのみで、6~30 文字にする必要があります。

設定の概要

次の図に示すように、グローバル外部アプリケーション ロードバランサのフロントエンドと URL マップは、ロードバランサのバックエンド サービスやバックエンド バケットとは異なるプロジェクトに作成されます。このタイプのプロジェクト間のデプロイは、共有 VPC 環境を使用しません。

この構成では、URL マップは静的コンテンツ(/images/*)のリクエストをバックエンド バケットに転送しますが、他のすべてのリクエストはデフォルトのバックエンド サービスに転送されます。

クロスリージョン内部アプリケーション ロードバランサは、別のプロジェクトにある Cloud Storage バックエンド サービスとバックエンド バケットにトラフィックを送信します。
プロジェクト間のデプロイ(クリックして拡大)

次の表に、プロジェクト A とプロジェクト B で作成されるリソースの概要を示します。ロードバランサのフロントエンドと URL マップはプロジェクト A に作成され、バックエンド コンポーネントはプロジェクト B に作成されます。

プロジェクト A で作成されたリソース プロジェクト B で作成されたリソース
  • IP アドレス
  • SSL 証明書
  • URL マップ
  • ターゲット プロキシ
  • 転送ルール
  • VPC ネットワーク
  • サブネット
  • バックエンド サービス

    バックエンド サービスは、インスタンス グループ内のバックエンド インスタンスを参照します。バックエンド インスタンスの作成には、次のリソースを使用します。この例では、バックエンド インスタンスは us-west1 リージョンの lb-backend-subnet という名前のサブネットに作成されます。

    • インスタンス テンプレート
    • インスタンス グループ
    • ヘルスチェック
    • ファイアウォール ルール
  • バックエンド バケット
    • バックエンド バケットは Cloud Storage バケットを参照します。

以降のセクションでは、前述の表に記載されているさまざまなリソースを構成します。まず、プロジェクト B のロードバランサのバックエンド VM 用に VPC ネットワークとサブネットを構成します。

プロジェクト B でロードバランサのバックエンド VM のネットワークとサブネットを構成する

この例では、バックエンド VM は次のネットワークとサブネットに作成されます。

  • ネットワーク。ネットワークは、lb-network という名前のカスタムモード VPC ネットワークです。

  • ロードバランサのバックエンド VM のサブネットus-west1 リージョンの lb-backend-subnet という名前のサブネットは、プライマリ IP 範囲として 10.1.2.0/24 を使用します。サブネットのプライマリおよびセカンダリ IPv4 アドレス範囲は、リージョン内部 IPv4 アドレスです。詳細については、有効な IPv4 範囲をご覧ください。

コンソール

  1. Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。

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

  2. [VPC ネットワークを作成] をクリックします。

  3. [名前] に「lb-network」と入力します。

  4. [サブネット] セクションで、[サブネット作成モード] を [カスタム] に設定します。

  5. [新しいサブネット] セクションに、次の情報を入力します。

    • 名前: lb-backend-subnet
    • [リージョン] では、[us-west1] を選択します。
    • IP アドレス範囲: 10.1.2.0/24
  6. [完了] をクリックします。

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

gcloud

  1. gcloud compute networks create コマンドを使用して、lb-network というカスタム VPC ネットワークを作成します。

    gcloud compute networks create lb-network \
        --subnet-mode=custom \
        --project=PROJECT_B_ID
    
  2. gcloud compute networks subnets create コマンドを使用して、us-west1 リージョンの lb-network VPC ネットワークにサブネットを作成します。

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

プロジェクト B でバックエンド サービスを構成する

バックエンド サービスを構成するには、次の操作を行う必要があります。

  • インスタンス テンプレートを作成します。
  • インスタンス グループを作成します。
  • ヘルスチェックを作成します。
  • ファイアウォール ルールを作成します。
  • バックエンド サービスを作成します。

インスタンス テンプレートを作成する

マネージド インスタンス グループを作成する前段階としてインスタンス テンプレートを作成します。これは、仮想マシン(VM)インスタンスの作成に使用できるリソースです。クライアントからのトラフィックは、インスタンス グループ内の VM にロードバランスされます。このマネージド インスタンス グループの VM では、外部アプリケーション ロードバランサのバックエンド サーバーが実行されます。この例では、バックエンドはそれぞれのホスト名でサービスを提供します。

コンソール

  1. Google Cloud コンソールで、Compute Engine の [インスタンス テンプレート] ページに移動します。

    [インスタンス テンプレート] に移動

  2. [インスタンス テンプレートを作成] をクリックします。

  3. [名前] に「backend-template」と入力します。

  4. [ブートディスク] セクションで、ブートディスクが Debian GNU/Linux 12(bookworm)などの Debian イメージに設定されていることを確認します。必要に応じてイメージを変更するには、[変更] をクリックします。

  5. [詳細オプション] セクションを開きます。

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

    1. [ネットワーク タグ] に「load-balanced-backend」と入力します。
    2. [ネットワーク インターフェース] セクションで、次のフィールドを構成します。
      • ネットワーク: lb-network
      • サブネット: lb-backend-subnet
      • IP スタックタイプ: IPv4
    3. [完了] をクリックします
  7. [管理] を開きます。[起動スクリプト] フィールドに、次のスクリプトを入力します。

    #! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    # Retrieve the instance name from metadata
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    # Create an index file
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    # Restart Apache to apply changes
    systemctl restart apache2' \
    
  8. [作成] をクリックします。

gcloud

  1. インスタンス テンプレートを作成します。

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
        --region=us-west1 \
        --network=projects/PROJECT_B_ID/global/networks/lb-network \
        --subnet=projects/PROJECT_B_ID/regions/us-west1/subnetworks/lb-backend-subnet \
        --tags=load-balanced-backend \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --metadata=startup-script='#! /bin/bash
        apt-get update
        apt-get install apache2 -y
        a2ensite default-ssl
        a2enmod ssl
        # Retrieve the instance name from metadata
        vm_hostname="$(curl -H "Metadata-Flavor:Google" \
        http://metadata.google.internal/computeMetadata/v1/instance/name)"
        # Create an index file
        echo "Page served from: $vm_hostname" | \
        tee /var/www/html/index.html
        # Restart Apache to apply changes
        systemctl restart apache2' \
        --project=PROJECT_B_ID
    

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

コンソール

  1. Google Cloud コンソールで、Compute Engine の [インスタンス グループ] ページに移動します。

    [インスタンス グループ] に移動

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

  3. オプションから、[新しいマネージド インスタンス グループ(ステートレス)] を選択します。

  4. インスタンス グループの名前として「lb-backend」と入力します。

  5. [インスタンス テンプレート] リストで、前の手順で作成したインスタンス テンプレート backend-template を選択します。

  6. [ロケーション] セクションで、[シングルゾーン] を選択し、次の値を入力します。

    • [リージョン] で us-west1 を選択します。

    • [ゾーン] で us-west1-a を選択します。

  7. [自動スケーリング] セクションに次の値を入力します。

    • [自動スケーリング モード] で [オン: グループに対してインスタンスを追加および削除します] を選択します。

    • [インスタンスの最小数] に 2 を選択します。

    • [インスタンスの最大数] に 3 を選択します。

  8. [ポート マッピング] セクションで、[ポートを追加] をクリックして、次の値を入力します。

    • [ポート名] に「http」と入力します。

    • [ポート番号] に「80」と入力します。

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

gcloud

  1. マネージド インスタンス グループを作成し、前の手順で作成したインスタンス テンプレートを選択します。

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --zone=us-west1-a \
        --size=2 \
        --template=INSTANCE_TEMPLATE_NAME \
        --project=PROJECT_B_ID
    
  2. インスタンス グループに名前付きポートを追加します。

    gcloud compute instance-groups set-named-ports INSTANCE_GROUP_NAME \
        --named-ports=http:80 \
        --zone=us-west1-a \
        --project=PROJECT_B_ID
    

ヘルスチェックを作成する

ヘルスチェックは、バックエンドの稼働を確認するテストです。HTTP プロトコルを使用し、ポート 80 で検査を行うヘルスチェックを作成します。後で、ロードバランサが参照するバックエンド サービスにこのヘルスチェックを接続します。

コンソール

  1. Google Cloud コンソールで、Compute Engine の [ヘルスチェック] ページに移動します。

    [ヘルスチェック] に移動

  2. ヘルスチェックの名前に「lb-health-check」と入力します。

  3. [プロトコル] を HTTP に設定します。

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

gcloud

HTTP ヘルスチェックを作成します。

gcloud compute health-checks create http lb-health-check \
  --use-serving-port \
  --project=PROJECT_B_ID

ファイアウォール ルールを作成する

ヘルスチェック プローブでは、ネットワーク レベルで上り(内向き)許可ファイアウォール ルールを作成する必要があります。この例では lb-network です。このファイアウォール ルールにより、ヘルスチェック プローブがバックエンド インスタンスに到達できるようになります。この例では、次のファイアウォール ルールを使用します。

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

コンソール

  1. Google Cloud コンソールで、[ファイアウォール ポリシー] ページに移動します。

    [ファイアウォール ポリシー] に移動

  2. [ファイアウォール ルールを作成] をクリックして、クライアント VM で受信する SSH 接続を許可するルールを作成します。

    • 名前: fw-allow-health-check
    • ネットワーク: lb-network
    • トラフィックの方向: 上り(内向き)
    • 一致したときのアクション: 許可
    • ターゲット: 指定されたターゲットタグ
    • ターゲットタグ: load-balanced-backend
    • ソースフィルタ: IPv4 の範囲
    • 送信元 IPv4 範囲: 130.211.0.0/2235.191.0.0/16
    • プロトコルとポート:
      • 指定されたプロトコルとポートを選択します。
      • [TCP] チェックボックスをオンにして、ポート番号に「80」と入力します。このルールは、ヘルスチェックに使用されているプロトコルとポートのみに制限することをおすすめします。プロトコルとポートに tcp:80 を使用すると、 Google Cloud はポート 80 で HTTP を使用して VM に接続できますが、ポート 443 で HTTPS を使用して VM に接続することはできません。
  3. [作成] をクリックします。

gcloud

  1. Google Cloud ヘルスチェックを許可する fw-allow-health-check ファイアウォール ルールを作成します。この例では、ヘルスチェック プローバーからのすべての TCP トラフィックを許可します。ただし、必要に応じてポートの範囲を狭く構成することもできます。

    gcloud compute firewall-rules create FIREWALL_RULE_NAME \
       --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 \
       --project=PROJECT_B_ID
    

バックエンド サービスを作成する

バックエンド全体にトラフィックを分散するグローバル バックエンド サービスを作成します。この手順の一環として、作成したヘルスチェックをバックエンド サービスに割り当て、インスタンス グループをバックエンドとしてバックエンド サービスに追加する必要があります。

コンソール

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

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

  2. [バックエンド] セクションに移動します。

  3. [バックエンド サービスを作成] をクリックします。

  4. [Global backend service] で、[作成] ボタンをクリックします。

  5. バックエンド サービスの名前として「cross-ref-backend-service」と入力します。

  6. [バックエンド タイプ] で [インスタンス グループ] を選択します。

  7. [プロトコル] を HTTP に設定します。

  8. [名前付きポート] フィールドに「http」と入力します。これは、マネージド インスタンス グループの作成時に入力したものと同じポート名です。

  9. バックエンド サービスにバックエンドを追加する手順は次のとおりです。

    1. [バックエンド] セクションで、[インスタンス グループ] を lb-backend に設定します。これは、前の手順で作成したマネージド インスタンス グループです。

    2. [ポート番号] に「80」と入力します。

    3. バックエンドを追加するには、[完了] をクリックします。

  10. ヘルスチェックを追加するには、[ヘルスチェック] リストで、先ほど作成したヘルスチェック lb-health-check を選択します。

  11. バックエンド サービスを作成するには、[作成] をクリックします。

gcloud

  1. バックエンド全体にトラフィックを分散するグローバル バックエンド サービスを作成します。

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTP \
        --port-name=http \
        --health-checks=HEALTH_CHECK_NAME \
        --global \
        --project=PROJECT_B_ID
    
  2. インスタンス グループをバックエンドとしてバックエンド サービスに追加します。

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --instance-group=INSTANCE_GROUP_NAME \
        --instance-group-zone=us-west1-a \
        --global \
        --project=PROJECT_B_ID
    

プロジェクト B でバックエンド バケットを構成する

バックエンド バケットを作成するには、次の操作を行う必要があります。

  1. Cloud Storage バケットを作成します。
  2. コンテンツをバケットにコピーします。
  3. バケットを一般公開します。
  4. バックエンド バケットを作成し、Cloud Storage バケットを参照するようにします。

Cloud Storage バケットを作成する

コンソール

  1. Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

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

  3. [バケットに名前を付ける] ボックスに、命名ガイドラインに沿ったグローバルに一意の名前を入力します。

  4. [データの保存場所の選択] をクリックします。

  5. [ロケーション タイプ] を [リージョン] に設定します。

  6. リージョンのリストから [us-east1] を選択します。

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

gcloud

  1. gcloud storage buckets create コマンドを使用して、us-east1 リージョンにバケットを作成します。

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=PROJECT_B_ID
    

変数 BUCKET_NAME は、Cloud Storage バケット名に置き換えます。

Cloud Storage バケットにグラフィック ファイルをコピーする

Cloud Shell で次のコマンドを実行します。バケット名の変数は一意の Cloud Storage バケット名に置き換えます。一般公開の Cloud Storage バケットから独自の Cloud Storage バケットの images/ フォルダにグラフィック ファイルをコピーします。

gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_NAME/images/

Cloud Storage バケットを公開する

公共のインターネット上のすべてのユーザーがバケット内のすべてのオブジェクトを閲覧できるようにするには、プリンシパル allUsers に Storage オブジェクト閲覧者(roles/storage.objectViewer)のロールを付与します。

コンソール

バケット内のすべてのオブジェクトに対するアクセス権をすべてのユーザーに付与するには、バケットごとに次の手順を繰り返します。

  1. Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、公開するバケットの名前をクリックします。

  3. ページ上部にある [権限] タブを選択します。

  4. [権限] セクションで、[ アクセスを許可] ボタンをクリックします。[アクセスを許可] ダイアログが表示されます。

  5. [新しいプリンシパル] フィールドに「allUsers」と入力します。

  6. [ロールを選択] フィールドで、フィルタ ボックスに「Storage Object Viewer」と入力し、フィルタされた結果から [Storage オブジェクト閲覧者] を選択します。

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

  8. [一般公開アクセスを許可] をクリックします。

gcloud

バケット内のオブジェクトを表示する権限をすべてのユーザーに付与するには、buckets add-iam-policy-binding コマンドを実行します。

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer

バケット名変数は、一意の Cloud Storage バケット名に置き換えます。

バックエンド バケットを作成する

バックエンド バケットは、前に作成した Cloud Storage バケットのラッパーとして機能します。受信トラフィックを Cloud Storage バケットに転送します。

コンソール

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

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

  2. [バックエンド] セクションに移動します。

  3. [バックエンド バケットを作成] をクリックします。

  4. バックエンド バケットの名前を入力します。

  5. バックエンド バケットを参照する Cloud Storage バケットを選択します。

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

gcloud

プロジェクト B で gcloud compute backend-buckets create コマンドを使用してバックエンド バケットを作成します。

gcloud compute backend-buckets create BACKEND_BUCKET_NAME \
  --gcs-bucket-name=BUCKET_NAME \
  --project=PROJECT_B_ID

プロジェクト A でロードバランサのフロントエンド コンポーネントを構成する

このセクションでは、プロジェクト A で次のロードバランサ フロントエンド コンポーネントを構成する方法について説明します。

  • IP アドレス
  • SSL 証明書
  • URL マップ
  • ターゲット プロキシ
  • 転送ルール

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

ロードバランサの転送ルールに割り当てることができるグローバル静的外部 IP アドレスを予約します。

コンソール

  1. Google Cloud コンソールで、VPC の [IP アドレス] ページに移動します。

    [IP アドレス] に移動

  2. [静的外部 IP アドレスを予約] をクリックします。

  3. [名前] に「cross-ref-ip-address」と入力します。

  4. [ネットワーク サービス階層] に [プレミアム] を設定します。

  5. [IP バージョン] を IPv4 に設定します。

  6. [タイプ] を [グローバル] に設定します。

  7. [予約] をクリックします。

gcloud

グローバル静的外部 IP アドレスを作成します。

gcloud compute addresses create IP_ADDRESS_NAME \
    --ip-version=IPV4 \
    --network-tier=PREMIUM \
    --global \
    --project=PROJECT_A_ID

SSL 証明書リソースを設定する

この例では、クライアントとロードバランサの間のリクエスト レスポンス プロトコルとして HTTP または HTTPS を使用できます。HTTPS ロードバランサを作成するには、ロードバランサのフロントエンドに SSL 証明書リソースを追加する必要があります。

次のドキュメントの説明に従って、SSL 証明書リソースを作成します。

Google マネージド証明書を使用することをおすすめします。

証明書を作成したら、証明書を HTTPS ターゲット プロキシに関連付けることができます。

グローバル外部アプリケーション ロードバランサのコンポーネントを構成する

コンソール

構成を開始する

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

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

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

基本的な構成

  1. ロードバランサの名前を入力します。
  2. 続行するには、ページを開いたままにしてください。

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

HTTP の場合:

  1. [フロントエンドの構成] をクリックします。
  2. 転送ルールの名前を入力します。
  3. [プロトコル] を HTTP に設定します。
  4. ロードバランサの IP アドレスを予約するで作成した IP アドレスを選択します。
  5. [ポート] を 80 に設定します。
  6. [完了] をクリックします。

HTTPS の場合:

クライアントとロードバランサ間で HTTPS を使用する場合は、プロキシを構成するために 1 つ以上の SSL 証明書リソースが必要になります。SSL 証明書リソースの作成方法については、SSL 証明書をご覧ください。

  1. [フロントエンドの構成] をクリックします。
  2. 転送ルールの名前を入力します。
  3. [プロトコル] フィールドで HTTPS (includes HTTP/2) を選択します。
  4. ロードバランサの IP アドレスを予約するで作成した IP アドレスを選択します。
  5. HTTPS トラフィックを許可するように、[ポート] が 443 に設定されていることを確認します。
  6. [証明書] リストをクリックします。
  7. 前に作成した SSL 証明書の名前を選択します。
  8. [完了] をクリックします。

バックエンドを構成する

  1. [バックエンドの構成] をクリックします。
  2. [プロジェクト間のバックエンド サービス] をクリックします。
  3. [プロジェクト ID] に、サービス プロジェクト B のプロジェクト ID を入力します。
  4. [バックエンド サービスを選択] リストから、使用するプロジェクト B のバックエンド サービスを選択します。
  5. [OK] をクリックします。

ルーティング ルールを構成する

  1. [ルーティング ルール] をクリックします。

  2. モードに [詳細なホストとパスのルール] を選択します。

  3. [ホストとパスのルールを追加] を選択します。

  4. [ホスト] フィールドに「*」と入力して、すべてのホスト名が一致するようにします。

  5. [パスマッチャー] セクションに、次の YAML 構成を入力します。

    defaultService: projects/PROJECT_B_ID/global/backendServices/BACKEND_SERVICE_NAME
    name: PATH_MATCHER_NAME
    pathRules:
    - paths:
      - /images/*
      service: projects/PROJECT_B_ID/global/backendBuckets/BACKEND_BUCKET_NAME
    

    この例のパスマッチャーは、パスルールとデフォルト サービスで構成されています。パスルールは、/images/* へのすべてのリクエストをバックエンド バケットに転送します。他のすべてのリクエストはデフォルトのバックエンド サービスに転送されます。

  6. [完了] をクリックします。

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

構成を確認して完了する

  1. 前の手順で構成したロードバランサのさまざまなコンポーネントを確認します。[バックエンド] セクションには、バックエンド サービスとバックエンド バケットの両方への参照があります。

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

gcloud

gcloud CLI を使用して前述のロード バランシング コンポーネントを作成するには、次の操作を行います。

  1. gcloud compute url-maps create コマンドを使用して、URL マップを作成します。

    gcloud compute url-maps create URL_MAP_NAME \
      --default-service=projects/PROJECT_B_ID/global/backendServices/BACKEND_SERVICE_NAME \
      --global \
      --project=PROJECT_A_ID
    
  2. URL マップのパスマッチャーを追加します。この例のパスマッチャーは、パスルールとデフォルト サービスで構成されています。パスルールは、/images/* へのすべてのリクエストをバックエンド バケットに転送します。他のすべてのリクエストはデフォルトのバックエンド サービスに転送されます。

    gcloud compute url-maps add-path-matcher URL_MAP_NAME \
      --path-matcher-name=PATH_MATCHER_NAME \
      --default-service=projects/PROJECT_B_ID/global/backendServices/BACKEND_SERVICE_NAME  \
      --backend-bucket-path-rules=/images/*=projects/PROJECT_B_ID/global/backendBuckets/BACKEND_BUCKET_NAME
    
  3. gcloud compute target-http-proxies create コマンドを使用して、ターゲット プロキシを作成します。

    HTTP トラフィックの場合、リクエストを URL マップに転送するターゲット HTTP プロキシを作成します。

    gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --global \
      --project=PROJECT_A_ID
    

    HTTPS トラフィックの場合、リクエストを URL マップに転送するターゲット HTTPS プロキシを作成します。プロキシは、HTTPS ロードバランサの SSL 証明書を保持するロードバランサの一部です。証明書を作成したら、証明書を HTTPS ターゲット プロキシに関連付けることができます。

    gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --ssl-certificates=CERTIFICATE_NAME \
      --global \
      --project=PROJECT_A_ID
    

    CERTIFICATE_NAME は、SSL 証明書の名前に置き換えます。

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

    HTTP トラフィックの場合、受信リクエストを HTTP ターゲット プロキシに転送するグローバル転送ルールを作成します。

    gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --address=IP_ADDRESS_NAME \
      --global \
      --target-http-proxy=TARGET_HTTP_PROXY_NAME \
      --ports=80 \
      --project=PROJECT_A_ID
    

    HTTPS トラフィックの場合、受信リクエストを HTTPS ターゲット プロキシに転送するグローバル転送ルールを作成します。

    gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --address=IP_ADDRESS_NAME \
      --global \
      --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
      --ports=443 \
      --project=PROJECT_A_ID
    

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

ロードバランサの構成には数分かかることがあります。構成が完了したら、ロードバランサにリクエストを送信できます。この例では、リクエストはロードバランサの HTTP 転送ルールに送信されます。

ロードバランサの HTTP 転送ルールの IP アドレスを取得する

gcloud compute forwarding-rules describe HTTP_FORWARDING_RULE_NAME \
    --global

ブラウザで http://IP_ADDRESS を参照すると、リクエストはバックエンド サービスに転送され、バックエンド インスタンスに関する最小限の情報を含むページが返されます。

ただし、ブラウザで http://IP_ADDRESS/images/three-cats.jpg を参照すると、/images/* へのリクエストはバックエンド バケットに転送され、グラフィック ファイルが返されます。

次のステップ