ラボの設定手順と要件
アカウントと進行状況を保護します。このラボを実行するには、常にシークレット ブラウジング ウィンドウとラボの認証情報を使用してください。

Setting Up Network and HTTP Load Balancers [ACE]

ラボ 40分 universal_currency_alt クレジット: 5 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
このコンテンツはまだモバイル デバイス向けに最適化されていません。
快適にご利用いただくには、メールで送信されたリンクを使用して、デスクトップ パソコンでアクセスしてください。

概要

このハンズオンラボでは、ネットワーク ロードバランサと HTTP ロードバランサの違いのほか、Google Compute Engine 仮想マシンで実行されるアプリケーションでの設定方法について学びます。

Google Cloud Platform で負荷を分散するには、いくつかの方法があります。このラボでは、次のロードバランサの設定について詳しく説明します。

根底にあるコンセプトを理解できるよう、コマンドは手動で入力することをおすすめしますが、多くのラボでは必要なコマンドが含まれたコードブロックが用意されています。ラボでは、コードブロックのコマンドをコピーして該当する場所に貼り付けることもできます。

演習内容

  • ネットワーク ロードバランサを設定する。

  • HTTP(S) ロードバランサを設定する。

  • ネットワーク ロードバランサと HTTP ロードバランサの違いを演習で学ぶ。

前提条件

Linux の標準的なテキスト エディタ(vimemacsnano など)の使用経験があると役に立ちます。

設定

各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。

  1. Qwiklabs にシークレット ウィンドウでログインします。

  2. ラボのアクセス時間(例: 1:15:00)に注意し、時間内に完了できるようにしてください。
    一時停止機能はありません。必要な場合はやり直せますが、最初からになります。

  3. 準備ができたら、[ラボを開始] をクリックします。

  4. ラボの認証情報(ユーザー名パスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。

  5. [Google Console を開く] をクリックします。

  6. [別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
    他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。

  7. 利用規約に同意し、再設定用のリソースページをスキップします。

Google Cloud Shell の有効化

Google Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。

Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。

    ハイライト表示された Cloud Shell アイコン

  2. [続行] をクリックします。

環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されます。次に例を示します。

Cloud Shell ターミナルでハイライト表示されたプロジェクト ID

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  • 次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list

出力:

Credentialed accounts: - @.com (active)

出力例:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • 次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project =

出力例:

[core] project = qwiklabs-gcp-44776a13dea667a6 注: gcloud ドキュメントの全文については、 gcloud CLI の概要ガイド をご覧ください。

すべてのリソースにデフォルトのリージョンとゾーンを設定する

Cloud Shell でデフォルト ゾーンを設定します。

gcloud config set compute/zone us-central1-a

デフォルト リージョンを設定します。

gcloud config set compute/region us-central1

ゾーンとリージョンの選択の詳細については、リージョンとゾーンに関するドキュメントをご覧ください。

複数のウェブサーバー インスタンスを作成する

マシンクラスタの挙動をシミュレートするため、インスタンス テンプレートマネージド インスタンス グループを使用して、静的コンテンツを提供するシンプルな Nginx ウェブサーバー クラスタを作成します。インスタンス テンプレートでは、クラスタ内の各仮想マシンの状態(ディスク、CPU、メモリなど)が定義されます。マネージド インスタンス グループでは、インスタンス テンプレートを使用して多数の仮想マシンのインスタンスが作成されます。

Nginx ウェブサーバー クラスタを作成するために、以下を用意します。

  • 起動時に Nginx サーバーを構成するすべての仮想マシン インスタンスで使用される起動スクリプト
  • 起動スクリプトを使用するインスタンス テンプレート
  • ターゲット プール
  • インスタンス テンプレートを使用するマネージド インスタンス グループ

引き続き Cloud Shell で、すべての仮想マシン インスタンスで使用される起動スクリプトを作成します。このスクリプトの起動時に Nginx サーバーが構成されます。

cat << EOF > startup.sh
#! /bin/bash
apt-get update
apt-get install -y nginx
service nginx start
sed -i -- 's/nginx/Google Cloud Platform - '"\$HOSTNAME"'/' /var/www/html/index.nginx-debian.html
EOF

起動スクリプトを使用するインスタンス テンプレートを作成します。

gcloud compute instance-templates create nginx-template \
         --metadata-from-file startup-script=startup.sh

(出力)

Created [...].
NAME           MACHINE_TYPE  PREEMPTIBLE CREATION_TIMESTAMP
nginx-template n1-standard-1             2015-11-09T08:44:59.007-08:00

ターゲット プールを作成します。ターゲット プールは、グループ内のすべてのインスタンスに 1 か所からアクセスできるようにするもので、この後のステップで負荷分散のために必要になります。

gcloud compute target-pools create nginx-pool

(出力)

Created [...].
NAME       REGION       SESSION_AFFINITY BACKUP HEALTH_CHECKS
nginx-pool us-central1

インスタンス テンプレートを使用してマネージド インスタンス グループを作成します。

gcloud compute instance-groups managed create nginx-group \
         --base-instance-name nginx \
         --size 2 \
         --template nginx-template \
         --target-pool nginx-pool

(出力)

Created [...].
NAME         LOCATION       SCOPE  BASE_INSTANCE_NAME  SIZE  TARGET_SIZE  INSTANCE_TEMPLATE  AUTOSCALED
nginx-group  us-central1-a  zone   nginx               0     2            nginx-template     no

これで、名前が nginx- で始まる 2 つの仮想マシン インスタンスが作成されます。これには数分かかります。

コンピューティング エンジン インスタンスの一覧を表示し、すべてのインスタンスが作成されたことを確認します。

gcloud compute instances list

(出力)

NAME       ZONE           MACHINE_TYPE  PREEMPTIBLE INTERNAL_IP EXTERNAL_IP    STATUS
nginx-7wvi us-central1-a n1-standard-1             10.240.X.X  X.X.X.X           RUNNING
nginx-9mwd us-central1-a n1-standard-1             10.240.X.X  X.X.X.X           RUNNING

次にファイアウォールを構成し、EXTERNAL_IP アドレス経由でマシンのポート 80 に接続できるようにします。

gcloud compute firewall-rules create www-firewall --allow tcp:80

前述のコマンドの実行結果として示される外部 IP アドレスを使用すると、http://EXTERNAL_IP/ で各インスタンスに接続することができます。

ラボの進行状況を確認します。下の [進行状況を確認] をクリックして、ウェブサーバーのグループを作成したことを確認します。

ウェブサーバーのグループを作成する

ネットワーク ロードバランサを作成する

ネットワーク ロードバランサを利用すると、受信 IP プロトコル データ(アドレス、ポート、プロトコル タイプなど)に基づいて、システムの負荷を分散することができます。HTTP(S) 負荷分散にはないオプションもいくつか利用できます。たとえば、SMTP トラフィックなど、TCP/UDP ベースの付加的なプロトコルの負荷を分散することができます。自身のアプリケーションで TCP 接続関連の仕組みが使用されている場合、HTTP(S) 負荷分散とは異なり、ネットワーク負荷分散でアプリケーション パケットをチェックすることができます。

使用するインスタンス グループを対象とした L4 ネットワーク ロードバランサを作成します。

gcloud compute forwarding-rules create nginx-lb \
         --region us-central1 \
         --ports=80 \
         --target-pool nginx-pool

(出力)

Created [https://www.googleapis.com/compute/v1/projects/...].

プロジェクト内のすべての Google Compute Engine 転送ルールを一覧表示します。

gcloud compute forwarding-rules list

(出力)

NAME     REGION       IP_ADDRESS     IP_PROTOCOL TARGET
nginx-lb us-central1 X.X.X.X        TCP         us-central1/targetPools/nginx-pool

次に、ブラウザでロードバランサ http://IP_ADDRESS/ にアクセスします(IP_ADDRESS は、前述のコマンドの実行結果に示されたアドレスです)。

ラボの進行状況を確認します。下の [進行状況を確認] をクリックして、グループ化したウェブサーバーにアクセスする L4 ネットワーク ロードバランサが作成されたことを確認します。

グループ化したウェブサーバーにアクセスする L4 ネットワーク ロードバランサを作成する

HTTP(S) ロードバランサを作成する

HTTP(S) ロードバランサでは、インスタンスに対する HTTP(S) リクエストの負荷をグローバルに分散できます。あるセットのインスタンスに一部の URL をルーティングし、別のインスタンスには別の URL をルーティングする URL ルールを構成することができます。グループに十分な容量があり、リクエストに適している場合、リクエストは常にユーザーに最も近いインスタンス グループに転送されます。最も近いグループに十分な容量がない場合、リクエストは十分な容量がある最も近いグループに送信されます。

最初に、ヘルスチェックを作成します。ヘルスチェックでは、インスタンスが HTTP トラフィックまたは HTTPS トラフィックにレスポンスするかどうかが確認されます。

gcloud compute http-health-checks create http-basic-check

(出力)

Created [https://www.googleapis.com/compute/v1/projects/...].
NAME             HOST PORT REQUEST_PATH
http-basic-check      80   /

HTTP サービスを定義し、ポート名をインスタンス グループの該当するポートにマッピングします。これで、名前を指定したポートに負荷分散サービスがトラフィックを転送できるようになります。

gcloud compute instance-groups managed \
       set-named-ports nginx-group \
       --named-ports http:80

(出力)

Updated [https://www.googleapis.com/compute/v1/projects/...].

バックエンド サービスを作成します。

gcloud compute backend-services create nginx-backend \
      --protocol HTTP --http-health-checks http-basic-check --global

(出力)

Created [https://www.googleapis.com/compute/v1/projects/...].
NAME          BACKENDS PROTOCOL
nginx-backend          HTTP

バックエンド サービスにインスタンス グループを追加します。

gcloud compute backend-services add-backend nginx-backend \
    --instance-group nginx-group \
    --instance-group-zone us-central1-a \
    --global

(出力)

Updated [https://www.googleapis.com/compute/v1/projects/...].

あらゆるインスタンスへの受信リクエストをすべて振り向けるデフォルトの URL マップを作成します。

gcloud compute url-maps create web-map \
    --default-service nginx-backend

(出力)

Created [https://www.googleapis.com/compute/v1/projects/...].
NAME    DEFAULT_SERVICE
Web-map nginx-backend

自身の URL マップにリクエストを振り向けるターゲット HTTP プロキシを作成します。

gcloud compute target-http-proxies create http-lb-proxy \
    --url-map web-map

(出力)

Created [https://www.googleapis.com/compute/v1/projects/...].
NAME          URL_MAP
http-lb-proxy web-map

受信リクエストを処理してルーティングするグローバル転送ルールを作成します。転送ルールにより、IP アドレス、IP プロトコル、ポートの指定に応じて、特定のターゲット HTTP プロキシまたは HTTPS プロキシにトラフィックが送信されるようになります。なお、グローバル転送ルールでは複数のポートはサポートされていません。

gcloud compute forwarding-rules create http-content-rule \
        --global \
        --target-http-proxy http-lb-proxy \
        --ports 80

(出力)

Created [https://www.googleapis.com/compute/v1/projects/...].

グローバル転送ルールの作成後、設定が反映されるまで数分かかることがあります。

gcloud compute forwarding-rules list

(出力)

NAME              REGION IP_ADDRESS    IP_PROTOCOL TARGET
http-content-rule        X.X.X.X       TCP         http-lb-proxy
nginx-lb   us-central1  X.X.X.X       TCP         us-central1/....

転送ルールの http-content-rule の IP_ADDRESS をメモしておきます。

ブラウザから http://IP_ADDRESS/ に接続できるようになります。これには 3~5 分ほどかかる場合があります。接続できない場合は、少し待ってからブラウザを再読み込みしてください。

ラボの進行状況を確認します。下の [進行状況を確認] をクリックして、L7 HTTP(S) ロードバランサが作成されたことを確認します。

L7 HTTP(S) ロードバランサを作成する

理解度テスト

クイズに挑戦して Google Cloud Platform に関する知識をチェックしましょう(正しいものをすべて選択してください)。

ラボを終了する

ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。

ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。

星の数は、それぞれ次の評価を表します。

  • 星 1 つ = 非常に不満
  • 星 2 つ = 不満
  • 星 3 つ = どちらともいえない
  • 星 4 つ = 満足
  • 星 5 つ = 非常に満足

フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。

フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。

Copyright 2026 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボを実行するには、シークレット モードまたはシークレット ブラウジング ウィンドウを使用することをおすすめします。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。