GSP155

概要
このハンズオンラボでは、Compute Engine 仮想マシン(VM)上でレイヤ 7(L7)アプリケーション ロードバランサを設定する方法について学びます。L7 ロードバランサは HTTP(S) プロトコルを理解できるため、URL、ヘッダー、Cookie、リクエストのコンテンツなどのパラメータに基づいてルーティングを決定できます。これにより、アプリケーションのパフォーマンスと応答性が向上します。
Google Cloud でロードバランスするには、いくつかの方法があります。
このラボでは、次のロードバランサの設定について詳しく説明します。
基本的なコンセプトを理解できるよう、コマンドは手動で入力することをおすすめしますが、多くのラボでは必要なコマンドが含まれたコードブロックが用意されています。
コードブロックのコマンドをコピーして、該当する場所に貼り付けることもできます。
目標
このラボでは、次のタスクの実行方法について学びます。
- リソースのデフォルトのリージョンとゾーンを構成する。
- アプリケーション ロードバランサを作成する。
- インスタンスへのトラフィックをテストする。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、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 の概要ガイドをご覧ください。
タスク 1. すべてのリソースにデフォルトのリージョンとゾーンを設定する
-
デフォルト リージョンを設定します。
gcloud config set compute/region {{{project_0.default_region | Region}}}
-
Cloud Shell でデフォルト ゾーンを設定します。
gcloud config set compute/zone {{{project_0.default_zone | Zone}}}
ゾーンとリージョンの選択の詳細については、Compute Engine のリージョンとゾーンのドキュメントをご覧ください。
タスク 2. 複数のウェブサーバー インスタンスを作成する
このロード バランシングのシナリオでは、3 つの Compute Engine VM インスタンスを作成し、これらのインスタンスに Apache をインストールします。また、HTTP トラフィックがインスタンスに到達できるようにファイアウォール ルールを追加します。
以下のコードでは、ゾーンが に設定されます。tags フィールドを設定すると、これらのインスタンスをファイアウォール ルールなどでまとめて参照できます。これらのコマンドにより、各インスタンスに Apache もインストールされ、インスタンスごとに固有のホームページが提供されます。
-
次のコードを使用して、デフォルト ゾーンに仮想マシン www1 を作成します。
gcloud compute instances create www1 \
--zone={{{project_0.default_zone | Zone}}} \
--tags=network-lb-tag \
--machine-type=e2-small \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
echo "
Web Server: www1
" | tee /var/www/html/index.html'
-
次のコードを使用して、デフォルト ゾーンに仮想マシン www2 を作成します。
gcloud compute instances create www2 \
--zone={{{project_0.default_zone | Zone}}} \
--tags=network-lb-tag \
--machine-type=e2-small \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
echo "
Web Server: www2
" | tee /var/www/html/index.html'
-
デフォルト ゾーンに仮想マシン www3 を作成します。
gcloud compute instances create www3 \
--zone={{{project_0.default_zone | Zone}}} \
--tags=network-lb-tag \
--machine-type=e2-small \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
echo "
Web Server: www3
" | tee /var/www/html/index.html'
-
これらの VM インスタンスへの外部トラフィックを許可するファイアウォール ルールを作成します。
gcloud compute firewall-rules create www-firewall-network-lb \
--target-tags network-lb-tag --allow tcp:80
次に、インスタンスの外部 IP アドレスを取得してインスタンスが実行されていることを確認する必要があります。
-
次のコマンドを実行してインスタンスを一覧表示します。インスタンスの IP アドレスは EXTERNAL_IP 列に表示されます。
gcloud compute instances list
-
curl を使用して、各インスタンスが実行中であることを確認します。[IP_ADDRESS] は、各 VM の外部 IP アドレスに置き換えてください。
curl http://[IP_ADDRESS]
[進行状況を確認] をクリックして、ウェブサーバーのグループが作成されたことを確認します。
複数のウェブサーバー インスタンスを作成する
タスク 3. アプリケーション ロードバランサを作成する
アプリケーション ロード バランシングは Google Front End(GFE)に実装されます。GFE はグローバルに分散しており、Google のグローバル ネットワークとコントロール プレーンを使用して連携します。
URL ルールを構成して、ある特定のインスタンス グループに一部の URL をルーティングし、別のインスタンス グループには他の URL をルーティングすることができます。
グループに十分な容量があり、リクエストに適している場合、リクエストは常にユーザーに最も近いインスタンス グループにルーティングされます。最も近いグループに十分な容量がない場合、リクエストは十分な容量がある最も近いグループに送信されます。
Compute Engine バックエンドでロードバランサを設定するには、VM がインスタンス グループに属している必要があります。このマネージド インスタンス グループの VM で外部アプリケーション ロードバランサのバックエンド サーバーを実行します。このラボでは、バックエンド サーバーはそれぞれ独自のホスト名を提供します。
-
まず、ロードバランサ テンプレートを作成します。
gcloud compute instance-templates create lb-backend-template \
--region={{{project_0.default_region | Region}}} \
--network=default \
--subnet=default \
--tags=allow-health-check \
--machine-type=e2-medium \
--image-family=debian-11 \
--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'
マネージド インスタンス グループ(MIG)では、複数の同一 VM でのアプリケーション操作が可能です。
自動スケーリング、自動修復、リージョン(マルチゾーン)デプロイ、自動更新などの自動化 MIG サービスを活用することで、ワークロードのスケーラビリティと高可用性を実現できます。
-
作成したテンプレートに基づいて、マネージド インスタンス グループを作成します。
gcloud compute instance-groups managed create lb-backend-group \
--template=lb-backend-template --size=2 --zone={{{project_0.default_zone | Zone}}}
-
fw-allow-health-check ファイアウォール ルールを作成します。
gcloud compute firewall-rules create fw-allow-health-check \
--network=default \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=allow-health-check \
--rules=tcp:80
注: この上り(内向き)ルールは、Google Cloud ヘルスチェック システム(130.211.0.0/22 と 35.191.0.0/16)からのトラフィックを許可します。
このラボでは、ターゲットタグ allow-health-check を使用して VM が識別されます。
-
インスタンスが稼働し始めたので、次に、ユーザーがロードバランサに接続する際に使用するグローバル静的外部 IP アドレスを設定します。
gcloud compute addresses create lb-ipv4-1 \
--ip-version=IPV4 \
--global
予約された IPv4 アドレスを確認します。
gcloud compute addresses describe lb-ipv4-1 \
--format="get(address)" \
--global
注: この IP アドレスは、このラボで後ほど参照する必要があるため保存してください。
-
ロードバランサのヘルスチェックを作成します(正常なバックエンドにのみトラフィックが送信されることを確認するため)。
gcloud compute health-checks create http http-basic-check \
--port 80
-
バックエンド サービスを作成します。
gcloud compute backend-services create web-backend-service \
--protocol=HTTP \
--port-name=http \
--health-checks=http-basic-check \
--global
-
インスタンス グループをバックエンドとしてバックエンド サービスに追加します。
gcloud compute backend-services add-backend web-backend-service \
--instance-group=lb-backend-group \
--instance-group-zone={{{project_0.default_zone | Zone}}} \
--global
-
受信リクエストをデフォルトのバックエンド サービスにルーティングする URL マップを作成します。
gcloud compute url-maps create web-map-http \
--default-service web-backend-service
注: URL マップは、リクエストをバックエンド サービスまたはバックエンド バケットにルーティングするために使用する Google Cloud 構成リソースです。
たとえば、外部アプリケーション ロードバランサでは、1 つの URL マップを使用して、URL マップで構成されたルールに基づいてリクエストを異なる宛先にルーティングできます。
- https://example.com/video に対するリクエストは 1 つのバックエンド サービスに送信されます。
- https://example.com/audio に対するリクエストは、別のバックエンド サービスに送信されます。
- https://example.com/images に対するリクエストは、Cloud Storage バックエンド バケットに送信されます。
- 他のホストとパスの組み合わせに対するリクエストは、デフォルトのバックエンド サービスに送信されます。
-
作成した URL マップにリクエストをルーティングするターゲット HTTP プロキシを作成します。
gcloud compute target-http-proxies create http-lb-proxy \
--url-map web-map-http
-
受信リクエストをプロキシにルーティングするグローバル転送ルールを作成します。
gcloud compute forwarding-rules create http-content-rule \
--address=lb-ipv4-1\
--global \
--target-http-proxy=http-lb-proxy \
--ports=80
注:
転送ルールおよび対応する IP アドレスは、Google Cloud ロードバランサのフロントエンド構成を表します。
転送ルールの概要について詳しくは、転送ルールの概要ガイドをご覧ください。
[進行状況を確認] をクリックして、L7 アプリケーション ロードバランサが作成されたことを確認します。
アプリケーション ロードバランサを作成する
タスク 4. インスタンスに送信されるトラフィックをテストする
-
Google Cloud コンソールの [検索] フィールドに「ロード バランシング」と入力し、検索結果から [ロード バランシング] を選択します。
-
作成したロードバランサ web-map-http をクリックします。
-
[バックエンド] セクションでバックエンドの名前をクリックして、VM が正常であることを確認します。正常でない場合は、しばらく待ってからページを再読み込みします。
-
VM が正常になったら、ウェブブラウザで http://IP_ADDRESS/ に移動してロードバランサをテストします。IP_ADDRESS は、前にコピーしたロードバランサの IP アドレスに置き換えてください。
注: これには 3~5 分ほどかかる場合があります。接続できない場合は、少し待ってからブラウザを再読み込みしてください。
ページを提供したインスタンスの名前とそのゾーン(Page served from: lb-backend-group-xxxx など)を示すコンテンツを含むページがブラウザで表示されます。
[進行状況を確認] をクリックして、インスタンスに送信されたトラフィックをテストします。
ウェブブラウザを使用してロードバランサをテストする
お疲れさまでした
このラボでは、アプリケーション ロードバランサを作成し、インスタンス テンプレートとマネージド インスタンス グループを使用してウェブサーバー インスタンスにトラフィックを送信する演習を行いました。
次のステップと詳細情報
ロードバランサに関するその他のドキュメント:
Google Cloud にはヘルスチェック用のツールがあり、バックエンド インスタンスがトラフィックに適切に反応しているかどうかが判定されます。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2025 年 7 月 18 日
ラボの最終テスト日: 2025 年 7 月 18 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。