GSP157

概要
このガイドでは、2 つの異なるリージョン内のインスタンスにトラフィックを転送する HTTP(S) ロードバランサを作成する方法について説明します。このラボでは、4 つの Compute Engine インスタンスを、2 つの異なるリージョンにそれぞれ 2 つずつ作成します。その後、適切なインスタンスに受信接続が送信されるように、システムの残りの部分を設定します。
作成したリソースは、以下のように接続されます。

設定
[ラボを開始] ボタンをクリックする前に
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
- ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。
左側の [ラボの詳細] ペインには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
-
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}}
[ラボの詳細] ペインでもユーザー名を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}}
[ラボの詳細] ペインでもパスワードを確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。
注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
-
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
-
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン
をクリックします。
-
ウィンドウで次の操作を行います。
- Cloud Shell 情報ウィンドウで操作を進めます。
- Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、 が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
- [承認] をクリックします。
出力:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project
出力:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注: Google Cloud における gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
以下の手順は、自動モードの VPC ネットワークまたはレガシー ネットワークを使用していることを前提とします。カスタムモードの VPC ネットワークを使用している場合は、インスタンスの作成など、以下の手順の一部でサブネット範囲を指定する必要があります。
タスク 1. インスタンスの設定
ロードバランサから転送されたトラフィックを受信するために、2 つの異なるリージョンに仮想マシン インスタンスを作成します。テスト用にマシン インスタンスを構成し、すべてのインスタンスに同じタグを付けます。このタグは、受信トラフィックを許可するファイアウォール ルールで使用されます。
起動スクリプトは Apache をインストールし、各インスタンス用の固有のホームページを作成します。
-
リージョンに 2 つのインスタンスを作成します。
gcloud compute instances create www-1 \
--image-family debian-11 \
--image-project debian-cloud \
--machine-type e2-micro \
--zone {{{project_0.default_zone |ZONE}}} \
--tags http-tag \
--metadata startup-script="#! /bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
{{{project_0.startup_script.index_html1_code|Code}}}"
gcloud compute instances create www-2 \
--image-family debian-11 \
--image-project debian-cloud \
--machine-type e2-micro \
--zone {{{project_0.default_zone |ZONE}}} \
--tags http-tag \
--metadata startup-script="#! /bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
{{{project_0.startup_script.index_html_code|Code}}}"
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
プライマリ リージョンのインスタンスを構成する
-
リージョンに 2 つのインスタンスを作成します。
gcloud compute instances create www-3 \
--image-family debian-11 \
--image-project debian-cloud \
--machine-type e2-micro \
--zone {{{project_0.default_zone_2 |ZONE 2}}} \
--tags http-tag \
--metadata startup-script="#! /bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
{{{project_0.startup_script.index_html2_code|Code}}}"
gcloud compute instances create www-4 \
--image-family debian-11 \
--image-project debian-cloud \
--machine-type e2-micro \
--zone {{{project_0.default_zone_2 |ZONE 2}}} \
--tags http-tag \
--metadata startup-script="#! /bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
{{{project_0.startup_script.index_html3_code|Code}}}"
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Configuring instances for secondary region
- 仮想マシン インスタンスへの外部トラフィックを許可するファイアウォール ルールを作成します。このルールにより、すべてのソースからのトラフィックが許可されます。これは、構成のセットアップやテストを行う場合に便利です。
このファイアウォール ルールでは、前に作成した http-tag
タグを使用します。このファイアウォール ルールによって、指定ポート上のタグを持つインスタンスにトラフィックが到達できるようになります。
gcloud compute firewall-rules create www-firewall \
--target-tags http-tag --allow tcp:80
- インスタンスが実行されていることを確認します。次のコマンドを実行してインスタンスを一覧表示し、EXTERNAL_IP 列から IP アドレスを取得します。
gcloud compute instances list
- 各インスタンスの
外部 IP
をコピーして新しいブラウザタブに貼り付け、インスタンスが実行されていること、ウェブサーバーが適切に構成され、開いているファイアウォール ポートを介してデフォルトのホームページで応答できることをテストします。
タスク 2. ロード バランシング用のサービスの構成
インスタンスが稼働状態になったため、次にロード バランシングに必要なサービスをセットアップします。以下のものを作成します。
- グローバル静的外部 IP アドレス。ロードバランサにアクセスするために顧客が使用する外部 IP アドレスです。
- インスタンス グループ。インスタンスを保持します。
- ヘルスチェック。インスタンスが正常に機能しているかを確認します。ロードバランサは正常なインスタンスのみにトラフィックを送信します。
これらのサービスを設定するには、次の手順を実行します。
- ロードバランサに使用する
IPv4
グローバル静的外部 IP アドレスを作成します。
gcloud compute addresses create lb-ip-cr \
--ip-version=IPV4 \
--global
- ゾーンごとにインスタンス グループを作成します。
gcloud compute instance-groups unmanaged create {{{project_0.default_region |REGION}}}-resources-w --zone {{{project_0.default_zone |ZONE}}}
gcloud compute instance-groups unmanaged create {{{project_0.default_region_2 |REGION 2}}}-resources-w --zone {{{project_0.default_zone_2 |ZONE 2}}}
- 以前に作成したインスタンスをインスタンス グループに追加します。
gcloud compute instance-groups unmanaged add-instances {{{project_0.default_region |REGION}}}-resources-w \
--instances www-1,www-2 \
--zone {{{project_0.default_zone |ZONE}}}
gcloud compute instance-groups unmanaged add-instances {{{project_0.default_region_2 |REGION 2}}}-resources-w \
--instances www-3,www-4 \
--zone {{{project_0.default_zone_2 |ZONE 2}}}
- ヘルスチェックの作成
gcloud compute health-checks create http http-basic-check
タスク 3. ロード バランシング サービスの構成
ロード バランシングには、連係する複数のサービスが含まれます。このセクションでは、サービスを設定して接続します。
- 名前付きポート。ロードバランサはこれを使用して、トラフィックをインスタンス グループに転送します。
- バックエンド サービス。これはインスタンスの使用状況と健全性をモニタリングします。バックエンド サービスは、インスタンス グループ内のインスタンスがトラフィックを受信できるかどうかを確認します。できない場合、他の場所に利用率の低いインスタンスがあれば、ロードバランサはトラフィックをそれらのインスタンスに転送します。
- URL マップ。これはリクエストの URL を解析し、リクエスト URL のホストとパスに基づいて特定のリクエストを特定のバックエンド サービスに転送します。この例ではコンテンツベースの転送を使用しないため、URL マップに含まれるのはデフォルトのマッピングのみです。
- 1 つ以上の SSL 証明書リソース(HTTPS を使用する場合)。これにはロードバランサの SSL 証明書情報が含まれます。複数の SSL 証明書を使用でき、証明書ごとに SSL 証明書リソースを作成する必要があります。
- HTTPS を使用している場合は、オプションとして SSL ポリシー。
- ターゲット プロキシ。ユーザーからのリクエストを受け取り、それを URL マップに転送します。ターゲット プロキシは、SSL 証明書リソースを使用して SSL トラフィックを復号化するサービスです。ターゲット プロキシは、HTTP または HTTPS でインスタンスをトラフィックに転送できます。
- 2 つのグローバル転送ルール(IPv4 と IPv6 にそれぞれ 1 つずつ)。グローバルな外部 IP アドレス リソースを保持します。グローバル転送ルールは、受信リクエストをターゲット プロキシに転送します。
- インスタンス グループごとに HTTP サービスを定義し、ポート名を該当するポートにマッピングします。
gcloud compute instance-groups unmanaged set-named-ports {{{project_0.default_region |REGION}}}-resources-w \
--named-ports http:80 \
--zone {{{project_0.default_zone |ZONE}}}
gcloud compute instance-groups unmanaged set-named-ports {{{project_0.default_region_2 |REGION 2}}}-resources-w \
--named-ports http:80 \
--zone {{{project_0.default_zone_2 |ZONE 2}}}
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
IPV4 アドレスを予約し、インスタンス グループとヘルスチェックを作成する
- バックエンド サービスを作成し、そのパラメータを指定します。インスタンスへの移動に HTTP を使用しているため、
--protocol
フィールドを HTTP
に設定します。以前ヘルスチェックとして作成した http-basic-check
ヘルスチェックを使用します。
gcloud compute backend-services create web-map-backend-service \
--protocol HTTP \
--health-checks http-basic-check \
--global
- インスタンス グループをバックエンドとしてバックエンド サービスに追加します。バックエンドに含まれるインスタンス グループの容量(1 秒あたりの最大 CPU 使用率または最大クエリ数)をバックエンドで定義します。この例では、バランシング モードを CPU 使用率に、最大使用率を 80% に、容量スケーリングを 1 に設定します。バックエンド サービスをドレインする場合は、容量スケーリングを 0 に設定します。
gcloud compute backend-services add-backend web-map-backend-service \
--balancing-mode UTILIZATION \
--max-utilization 0.8 \
--capacity-scaler 1 \
--instance-group {{{project_0.default_region |REGION}}}-resources-w \
--instance-group-zone {{{project_0.default_zone |ZONE}}} \
--global
gcloud compute backend-services add-backend web-map-backend-service \
--balancing-mode UTILIZATION \
--max-utilization 0.8 \
--capacity-scaler 1 \
--instance-group {{{project_0.default_region_2 |REGION 2}}}-resources-w \
--instance-group-zone {{{project_0.default_zone_2 |ZONE 2}}} \
--global
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
バックエンド サービスを作成し、インスタンス グループを追加する
- あらゆるインスタンスへの受信リクエストをすべて振り向けるデフォルトの URL マップを作成します。
gcloud compute url-maps create web-map \
--default-service web-map-backend-service
- 作成した URL マップにリクエストをルーティングするターゲット HTTP プロキシを作成します。
gcloud compute target-http-proxies create http-lb-proxy \
--url-map web-map
- ロードバランサ用に作成した静的 IP アドレスを調べます。次のステップでそれらを使用します。
gcloud compute addresses list
- 受信リクエストをプロキシにルーティングする 1 つの IPv4 グローバル転送ルールを作成します。コマンド内の
[LB_IP_ADDRESS]
は、作成した静的 IPv4 アドレスで置き換えます。
gcloud compute forwarding-rules create http-cr-rule \
--address [LB_IP_ADDRESS] \
--global \
--target-http-proxy http-lb-proxy \
--ports 80
注: グローバル転送ルールの作成後、構成が反映されるまで数分かかることがあります。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
URL マップと URL マップへのターゲット HTTP プロキシを作成する
タスク 4. インスタンスにトラフィックを送信する
ロード バランシング サービスの構成が完了したので、転送ルールへのトラフィックの送信を開始できます。また、別のインスタンスに分散されるトラフィックをモニタリングできます。
- グローバル転送ルールの IP アドレスを探します。
gcloud compute forwarding-rules list
- コンソールでロード バランシングを検索し、最初の結果を選択します。[ロード バランシング] ページで、
web-map
行に緑色のチェックマークが表示されます。
![web-map 行が表示された [ロード バランシング] ページ。](https://cdn.qwiklabs.com/25qY7WS9gaQW0OspdFr8vG1qEIoIVfz1aUffv2fIx84%3D)
-
ロードバランサ(web-map
)をクリックして詳細を確認します。ページの [バックエンド] セクションで [正常] 列を見て、インスタンスが正常であることを確認します。インスタンスが正常であることが画面に表示されるまでに少し時間がかかる場合があります。
-
インスタンスが正常と表示されたら、詳細メニューをクリックしてロードバランサの詳細情報にアクセスします。
-
[フロントエンド] セクションで IP アドレスをコピーし、ブラウザに貼り付けて、最も近いインスタンス グループのインスタンスのデフォルト コンテンツを表示します。
![IP ポートがハイライト表示された [ロード バランスの詳細] ページ](https://cdn.qwiklabs.com/QuPRoi49rIb%2BDCXK%2BCLSin8a%2BTtU%2Ft%2F0Pq71m27QIh8%3D)
ロードバランサは、利用可能な最も近いインスタンスにリクエストを転送します。
このラボでは、 リージョンと リージョンにラボ インスタンスを作成しました。インスタンスからのレスポンスは、ラボを実行する際のこれらのリージョンからの距離によって異なります。
たとえば、現在の地理的な場所が us-central1 リージョンに近い場合、us-central1 リージョンのインスタンスからレスポンスが返されます。
Google Cloud のゾーンとリージョンの詳細については、リージョンとゾーンをご確認ください。
- ページを複数回再読み込みすると、ロードバランサがインスタンス グループ内の 2 つのインスタンス間で転送するため、ページの内容が変化します。例(インスタンスの順序は異なる場合があります):
再読み込み

再読み込み

再読み込み

再読み込み

テスト用の自己署名証明書を使用した場合は、ブラウザに警告が表示されます。この証明書を許可することをブラウザに明示的に指示する必要があります。
注: 最も近いリージョンからのレスポンスが表示されます。最初にレスポンスが失敗した場合、設定が完全にロードされ、インスタンスが正常であるとマークされるまで数分待ってからもう一度やり直す必要がある場合があります。ページがリロードされるたびに他のインスタンスが表示されることがあります。別のリージョンでユーザーをシミュレートするには、ウェブプロキシでリクエストを行ってください。
タスク 5. ロード バランシング サービス以外からの HTTP アクセスの遮断
- すべてが動作するようになったら、インスタンスへの HTTP(S) トラフィックがロード バランシングからのみ発生するようにファイアウォール ルールを変更します。
gcloud compute firewall-rules create allow-lb-and-healthcheck \
--source-ranges 130.211.0.0/22,35.191.0.0/16 \
--target-tags http-tag \
--allow tcp:80
- 次に、他のリソースからの HTTP(S) トラフィックを許可するルールを削除します。
gcloud compute firewall-rules delete www-firewall
対象のロードバランサはインスタンスに到達できるが、他のソースは到達できないことをテストします。
- グローバル転送ルールの IP アドレスを検索します。
gcloud compute addresses list
-
IP アドレスをコピーしてブラウザに貼り付け、転送が機能していることを確認します。
-
各インスタンスの IP アドレスを検索し、EXTERNAL_IP
列のアドレスを記録します。
gcloud compute instances list
- インスタンスのアドレスをコピーしてブラウザに貼り付けます。
他のソースからの HTTP(S) トラフィックを許可するファイアウォール ルールを削除したため、これは失敗します。インスタンスは、allow-lb-and-healthcheck
ファイアウォール ルールで定義された送信元範囲からのトラフィックのみを受け入れます。
タスク 6. (オプション)踏み台インスタンス以外の外部 IP を削除する
HTTP ロード バランシングでは、ターゲットの外部 IP ではなく内部 IP が使用されます。ロード バランシングが動作するようになると、ロード バランシングのターゲットから外部 IP を削除することによってセキュリティを強化でき、中間インスタンスを経由して接続することで、ロード バランシング インスタンスでタスクを実行できるようになります。これで、VPC ネットワーク外部のユーザーは、ロードバランサ経由以外の方法ではアクセスできなくなります。
VPC ネットワーク内に、外部 IP アドレスを持つ 1 つ以上のインスタンスを保持する必要があります。こうしたインスタンスは通常、この目的で指定されています。
すべての外部 IP アドレスを誤って削除した場合、Cloud コンソールでアドレスを新たに作成できます。
インスタンスから外部 IP アドレスを削除してください。
- 次のコマンドを実行して、インスタンスから外部 IP アドレスを削除します。[
NAME
] フィールドに表示されているインスタンスの名前をメモします。
gcloud compute instances list
- このインスタンスのアクセス設定を削除します。
NAME
にインスタンスの名前を入力します。
gcloud compute instances delete-access-config NAME
お疲れさまでした
これで完了です。このラボでは、リージョン間のロード バランシング機能を設定してテストしました。このラボでは、HTTP(S) ロード バランシングを使用してクロスリージョン ロード バランシングを構成する実践的な経験を積みました。2 つのリージョンにインスタンスをデプロイし、トラフィックを分散するようにロードバランサを構成することで、Google Cloud がアプリケーションの高可用性とフォールト トレランスを確保する方法に関する実践的な知識を得ることができました。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 11 月 7 日
ラボの最終テスト日: 2024 年 11 月 7 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。