このドキュメントでは、ロードバランサのフロントエンドや 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 ロードバランサ サービス ユーザーのロール( このロールを割り当てる方法については、バックエンド サービスを使用する権限を Compute ロードバランサ管理者に付与するをご覧ください。 |
Google Cloud プロジェクトを作成する
このドキュメントの例では、手順を 2 回繰り返して 2 つの Google Cloud プロジェクトを作成します。
コンソール
新しいプロジェクトを作成するには、次の操作を行います。
- Google Cloud コンソールの [リソースの管理] ページに移動します。
残りの手順は、 Google Cloud コンソールに表示されます。
- ページの上部にある [組織の選択] プルダウン リストで、プロジェクトを作成する組織リソースを選択します。無料トライアルをご使用の場合はこのリストが表示されないため、この手順はスキップしてください。
- [プロジェクトを作成] をクリックします。
- 表示される [新しいプロジェクト] ウィンドウで、プロジェクト名を入力し、該当する請求先アカウントを選択します。プロジェクト名には文字、数字、単一引用符、ハイフン、スペース、感嘆符のみを使用でき、4~30 文字にする必要があります。
- [場所] ボックスに親組織またはフォルダ リソースを入力します。このリソースが新しいプロジェクトの階層上の親になります。[組織なし] を選択した場合は、そのプロジェクトを選択して、独自のリソース階層の最上位として新しいプロジェクトを作成できます。
- 新しいプロジェクトの詳細を入力し終えたら、[作成] をクリックします。
gcloud
-
In the Google Cloud console, 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.
新しいプロジェクトを作成するには、次のように
gcloud projects create
コマンドを使用します。gcloud projects create PROJECT_ID
PROJECT_ID は、作成するプロジェクトの ID です。プロジェクト ID は先頭を小文字にする必要があります。また、使用できるのは ASCII 文字、数字、ハイフンのみで、6~30 文字にする必要があります。
設定の概要
次の図に示すように、グローバル外部アプリケーション ロードバランサのフロントエンドと URL マップは、ロードバランサのバックエンド サービスやバックエンド バケットとは異なるプロジェクトに作成されます。このタイプのプロジェクト間のデプロイは、共有 VPC 環境を使用しません。
この構成では、URL マップは静的コンテンツ(/images/*
)のリクエストをバックエンド バケットに転送しますが、他のすべてのリクエストはデフォルトのバックエンド サービスに転送されます。
次の表に、プロジェクト A とプロジェクト B で作成されるリソースの概要を示します。ロードバランサのフロントエンドと URL マップはプロジェクト A に作成され、バックエンド コンポーネントはプロジェクト B に作成されます。
プロジェクト A で作成されたリソース | プロジェクト B で作成されたリソース |
---|---|
|
|
以降のセクションでは、前述の表に記載されているさまざまなリソースを構成します。まず、プロジェクト B のロードバランサのバックエンド VM 用に VPC ネットワークとサブネットを構成します。
プロジェクト B でロードバランサのバックエンド VM のネットワークとサブネットを構成する
この例では、バックエンド VM は次のネットワークとサブネットに作成されます。
ネットワーク。ネットワークは、
lb-network
という名前のカスタムモード VPC ネットワークです。ロードバランサのバックエンド VM のサブネット。
us-west1
リージョンのlb-backend-subnet
という名前のサブネットは、プライマリ IP 範囲として10.1.2.0/24
を使用します。サブネットのプライマリおよびセカンダリ IPv4 アドレス範囲は、リージョン内部 IPv4 アドレスです。詳細については、有効な IPv4 範囲をご覧ください。
コンソール
Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
[VPC ネットワークを作成] をクリックします。
[名前] に「
lb-network
」と入力します。[サブネット] セクションで、[サブネット作成モード] を [カスタム] に設定します。
[新しいサブネット] セクションに、次の情報を入力します。
- 名前:
lb-backend-subnet
- [リージョン] では、[
us-west1
] を選択します。 - IP アドレス範囲:
10.1.2.0/24
- 名前:
[完了] をクリックします。
[作成] をクリックします。
gcloud
gcloud compute networks create
コマンドを使用して、lb-network
というカスタム VPC ネットワークを作成します。gcloud compute networks create lb-network \ --subnet-mode=custom \ --project=PROJECT_B_ID
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 では、外部アプリケーション ロードバランサのバックエンド サーバーが実行されます。この例では、バックエンドはそれぞれのホスト名でサービスを提供します。
コンソール
Google Cloud コンソールで、Compute Engine の [インスタンス テンプレート] ページに移動します。
[インスタンス テンプレートを作成] をクリックします。
[名前] に「
backend-template
」と入力します。[ブートディスク] セクションで、ブートディスクが Debian GNU/Linux 12(bookworm)などの Debian イメージに設定されていることを確認します。必要に応じてイメージを変更するには、[変更] をクリックします。
[詳細オプション] セクションを開きます。
[ネットワーキング] を開いて次のフィールドを構成します。
- [ネットワーク タグ] に「
load-balanced-backend
」と入力します。 - [ネットワーク インターフェース] セクションで、次のフィールドを構成します。
- ネットワーク:
lb-network
- サブネット:
lb-backend-subnet
- IP スタックタイプ: IPv4
- ネットワーク:
- [完了] をクリックします
- [ネットワーク タグ] に「
[管理] を開きます。[起動スクリプト] フィールドに、次のスクリプトを入力します。
#! /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' \
[作成] をクリックします。
gcloud
インスタンス テンプレートを作成します。
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
マネージド インスタンス グループを作成する
コンソール
Google Cloud コンソールで、Compute Engine の [インスタンス グループ] ページに移動します。
[インスタンス グループを作成] をクリックします。
オプションから、[新しいマネージド インスタンス グループ(ステートレス)] を選択します。
インスタンス グループの名前として「
lb-backend
」と入力します。[インスタンス テンプレート] リストで、前の手順で作成したインスタンス テンプレート
backend-template
を選択します。[ロケーション] セクションで、[シングルゾーン] を選択し、次の値を入力します。
[リージョン] で
us-west1
を選択します。[ゾーン] で
us-west1-a
を選択します。
[自動スケーリング] セクションに次の値を入力します。
[自動スケーリング モード] で [オン: グループに対してインスタンスを追加および削除します] を選択します。
[インスタンスの最小数] に
2
を選択します。[インスタンスの最大数] に
3
を選択します。
[ポート マッピング] セクションで、[ポートを追加] をクリックして、次の値を入力します。
[ポート名] に「
http
」と入力します。[ポート番号] に「
80
」と入力します。
[作成] をクリックします。
gcloud
マネージド インスタンス グループを作成し、前の手順で作成したインスタンス テンプレートを選択します。
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --zone=us-west1-a \ --size=2 \ --template=INSTANCE_TEMPLATE_NAME \ --project=PROJECT_B_ID
インスタンス グループに名前付きポートを追加します。
gcloud compute instance-groups set-named-ports INSTANCE_GROUP_NAME \ --named-ports=http:80 \ --zone=us-west1-a \ --project=PROJECT_B_ID
ヘルスチェックを作成する
ヘルスチェックは、バックエンドの稼働を確認するテストです。HTTP プロトコルを使用し、ポート 80 で検査を行うヘルスチェックを作成します。後で、ロードバランサが参照するバックエンド サービスにこのヘルスチェックを接続します。
コンソール
Google Cloud コンソールで、Compute Engine の [ヘルスチェック] ページに移動します。
ヘルスチェックの名前に「
lb-health-check
」と入力します。[プロトコル] を HTTP に設定します。
[作成] をクリックします。
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/22
と35.191.0.0/16
)からのすべての TCP トラフィックが許可されます。この例では、ターゲットタグload-balanced-backend
を使用して、適用するインスタンスを識別します。
コンソール
Google Cloud コンソールで、[ファイアウォール ポリシー] ページに移動します。
[ファイアウォール ルールを作成] をクリックして、クライアント VM で受信する SSH 接続を許可するルールを作成します。
- 名前:
fw-allow-health-check
- ネットワーク:
lb-network
- トラフィックの方向: 上り(内向き)
- 一致したときのアクション: 許可
- ターゲット: 指定されたターゲットタグ
- ターゲットタグ:
load-balanced-backend
- ソースフィルタ: IPv4 の範囲
- 送信元 IPv4 範囲:
130.211.0.0/22
と35.191.0.0/16
- プロトコルとポート:
- 指定されたプロトコルとポートを選択します。
- [TCP] チェックボックスをオンにして、ポート番号に「
80
」と入力します。このルールは、ヘルスチェックに使用されているプロトコルとポートのみに制限することをおすすめします。プロトコルとポートに tcp:80 を使用すると、 Google Cloud はポート 80 で HTTP を使用して VM に接続できますが、ポート 443 で HTTPS を使用して VM に接続することはできません。
- 名前:
[作成] をクリックします。
gcloud
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
バックエンド サービスを作成する
バックエンド全体にトラフィックを分散するグローバル バックエンド サービスを作成します。この手順の一環として、作成したヘルスチェックをバックエンド サービスに割り当て、インスタンス グループをバックエンドとしてバックエンド サービスに追加する必要があります。
コンソール
Google Cloud コンソールで、[ロード バランシング] ページに移動します。
[バックエンド] セクションに移動します。
[バックエンド サービスを作成] をクリックします。
[Global backend service] で、[作成] ボタンをクリックします。
バックエンド サービスの名前として「
cross-ref-backend-service
」と入力します。[バックエンド タイプ] で [インスタンス グループ] を選択します。
[プロトコル] を HTTP に設定します。
[名前付きポート] フィールドに「
http
」と入力します。これは、マネージド インスタンス グループの作成時に入力したものと同じポート名です。バックエンド サービスにバックエンドを追加する手順は次のとおりです。
[バックエンド] セクションで、[インスタンス グループ] を
lb-backend
に設定します。これは、前の手順で作成したマネージド インスタンス グループです。[ポート番号] に「
80
」と入力します。バックエンドを追加するには、[完了] をクリックします。
ヘルスチェックを追加するには、[ヘルスチェック] リストで、先ほど作成したヘルスチェック
lb-health-check
を選択します。バックエンド サービスを作成するには、[作成] をクリックします。
gcloud
バックエンド全体にトラフィックを分散するグローバル バックエンド サービスを作成します。
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
インスタンス グループをバックエンドとしてバックエンド サービスに追加します。
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 でバックエンド バケットを構成する
バックエンド バケットを作成するには、次の操作を行う必要があります。
- Cloud Storage バケットを作成します。
- コンテンツをバケットにコピーします。
- バケットを一般公開します。
- バックエンド バケットを作成し、Cloud Storage バケットを参照するようにします。
Cloud Storage バケットを作成する
コンソール
- Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
[
作成] をクリックします。[バケットに名前を付ける] ボックスに、命名ガイドラインに沿ったグローバルに一意の名前を入力します。
[データの保存場所の選択] をクリックします。
[ロケーション タイプ] を [リージョン] に設定します。
リージョンのリストから [us-east1] を選択します。
[作成] をクリックします。
gcloud
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
)のロールを付与します。
コンソール
バケット内のすべてのオブジェクトに対するアクセス権をすべてのユーザーに付与するには、バケットごとに次の手順を繰り返します。
- Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
バケットのリストで、公開するバケットの名前をクリックします。
ページ上部にある [権限] タブを選択します。
[権限] セクションで、[
アクセスを許可] ボタンをクリックします。[アクセスを許可] ダイアログが表示されます。[新しいプリンシパル] フィールドに「
allUsers
」と入力します。[ロールを選択] フィールドで、フィルタ ボックスに「
Storage Object Viewer
」と入力し、フィルタされた結果から [Storage オブジェクト閲覧者] を選択します。[保存] をクリックします。
[一般公開アクセスを許可] をクリックします。
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 バケットに転送します。
コンソール
Google Cloud コンソールで、[ロード バランシング] ページに移動します。
[バックエンド] セクションに移動します。
[バックエンド バケットを作成] をクリックします。
バックエンド バケットの名前を入力します。
バックエンド バケットを参照する Cloud Storage バケットを選択します。
[作成] をクリックします。
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 アドレスを予約します。
コンソール
Google Cloud コンソールで、VPC の [IP アドレス] ページに移動します。
[静的外部 IP アドレスを予約] をクリックします。
[名前] に「
cross-ref-ip-address
」と入力します。[ネットワーク サービス階層] に [プレミアム] を設定します。
[IP バージョン] を IPv4 に設定します。
[タイプ] を [グローバル] に設定します。
[予約] をクリックします。
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 ターゲット プロキシに関連付けることができます。
グローバル外部アプリケーション ロードバランサのコンポーネントを構成する
コンソール
構成を開始する
Google Cloud コンソールで、[ロード バランシング] ページに移動します。
- [ロードバランサを作成] をクリックします。
- [ロードバランサの種類] で [アプリケーション ロードバランサ(HTTP / HTTPS)] を選択し、[次へ] をクリックします。
- [インターネット接続または内部] で [インターネット接続(外部)] を選択し、[次へ] をクリックします。
- [グローバルまたはシングル リージョンのデプロイ] で [グローバル ワークロードに最適] を選択し、[次へ] をクリックします。
- [ロードバランサの世代] で [グローバル外部アプリケーション ロードバランサ] を選択し、[次へ] をクリックします。
- [構成] をクリックします。
基本的な構成
- ロードバランサの名前を入力します。
- 続行するには、ページを開いたままにしてください。
フロントエンドを構成する
HTTP の場合:
- [フロントエンドの構成] をクリックします。
- 転送ルールの名前を入力します。
- [プロトコル] を
HTTP
に設定します。 - ロードバランサの IP アドレスを予約するで作成した IP アドレスを選択します。
- [ポート] を
80
に設定します。 - [完了] をクリックします。
HTTPS の場合:
クライアントとロードバランサ間で HTTPS を使用する場合は、プロキシを構成するために 1 つ以上の SSL 証明書リソースが必要になります。SSL 証明書リソースの作成方法については、SSL 証明書をご覧ください。
- [フロントエンドの構成] をクリックします。
- 転送ルールの名前を入力します。
- [プロトコル] フィールドで
HTTPS (includes HTTP/2)
を選択します。 - ロードバランサの IP アドレスを予約するで作成した IP アドレスを選択します。
- HTTPS トラフィックを許可するように、[ポート] が
443
に設定されていることを確認します。 - [証明書] リストをクリックします。
- 前に作成した SSL 証明書の名前を選択します。
- [完了] をクリックします。
バックエンドを構成する
- [バックエンドの構成] をクリックします。
- [プロジェクト間のバックエンド サービス] をクリックします。
- [プロジェクト ID] に、サービス プロジェクト B のプロジェクト ID を入力します。
- [バックエンド サービスを選択] リストから、使用するプロジェクト B のバックエンド サービスを選択します。
- [OK] をクリックします。
ルーティング ルールを構成する
[ルーティング ルール] をクリックします。
モードに [詳細なホストとパスのルール] を選択します。
[ホストとパスのルールを追加] を選択します。
[ホスト] フィールドに「
*
」と入力して、すべてのホスト名が一致するようにします。[パスマッチャー] セクションに、次の 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/*
へのすべてのリクエストをバックエンド バケットに転送します。他のすべてのリクエストはデフォルトのバックエンド サービスに転送されます。[完了] をクリックします。
トラフィック管理の詳細については、トラフィック管理の概要をご覧ください。
構成を確認して完了する
前の手順で構成したロードバランサのさまざまなコンポーネントを確認します。[バックエンド] セクションには、バックエンド サービスとバックエンド バケットの両方への参照があります。
[作成] をクリックします。
gcloud
gcloud CLI を使用して前述のロード バランシング コンポーネントを作成するには、次の操作を行います。
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
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
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 証明書の名前に置き換えます。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/*
へのリクエストはバックエンド バケットに転送され、グラフィック ファイルが返されます。