チェックポイント
Create multiple web server instances
/ 30
Configure the load balancing service
/ 20
Create an HTTP load balancer
/ 50
ネットワーク ロードバランサと HTTP ロードバランサを設定する
GSP007
概要
このハンズオンラボでは、ネットワーク ロードバランサと HTTP ロードバランサの違いや、これらを Compute Engine 仮想マシン(VM)で実行されるアプリケーション向けに設定する方法について学びます。
Google Cloud でロードバランスするには、いくつかの方法があります。 このラボでは、次のロードバランサの設定について詳しく説明します。
基本的なコンセプトを理解できるよう、コマンドは手動で入力することをおすすめしますが、多くのラボでは必要なコマンドが含まれたコードブロックが用意されています。 コードブロックのコマンドをコピーして、該当する場所に貼り付けることもできます。
学習内容
- ネットワーク ロードバランサを設定する。
- HTTP ロードバランサを設定する。
- ネットワーク ロードバランサと HTTP ロードバランサの違いを演習で学ぶ。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}} [ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}} [ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
- Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン
をクリックします。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
-
[承認] をクリックします。
-
出力は次のようになります。
出力:
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
出力:
出力例:
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 トラフィックがインスタンスに到達できるようにファイアウォール ルールを追加します。
以下のコードでは、ゾーンが
-
次のコードを使用して、デフォルト ゾーンに仮想マシン 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. ロード バランシング サービスを構成する
ロード バランシング サービスを構成すると、構成した静的外部 IP アドレス宛てのパケットを仮想マシン インスタンスが受信するようになります。 Compute Engine イメージを使用して作成されたインスタンスは、この IP アドレスに対処するように自動的に構成されます。
-
ロードバランサに使用する静的外部 IP アドレスを作成します。
gcloud compute addresses create network-lb-ip-1 \ --region {{{project_0.default_region | Region}}} 出力:
Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-xxxxxxxxxxx/regions/{{{project_0.startup_script.project_region}}}/addresses/network-lb-ip-1]. -
レガシー HTTP ヘルスチェック リソースを追加します。
gcloud compute http-health-checks create basic-check -
インスタンスと同じリージョンにターゲット プールを追加します。次のコマンドを実行して、ターゲット プールを作成し、ヘルスチェックを使用します。ターゲット プールが機能するには、ヘルスチェックが必要です。
gcloud compute target-pools create www-pool \ --region {{{project_0.default_region | Region}}} --http-health-check basic-check -
インスタンスをプールに追加します。
gcloud compute target-pools add-instances www-pool \ --instances www1,www2,www3 -
転送ルールを追加します。
gcloud compute forwarding-rules create www-rule \ --region {{{project_0.default_region | Region}}} \ --ports 80 \ --address network-lb-ip-1 \ --target-pool www-pool 下の [進行状況を確認] をクリックして、グループ化したウェブサーバーにアクセスする L4 ネットワーク ロードバランサが作成されたことを確認します。
ロード バランシング サービスを構成する
タスク 4. インスタンスにトラフィックを送信する
ロード バランシング サービスの構成が完了したので、転送ルールへのトラフィックの送信を開始して、トラフィックが複数のインスタンスに分散される様子を観察できます。
-
次のコマンドを入力して、ロードバランサが使用する www-rule 転送ルールの外部 IP アドレスを表示します。
gcloud compute forwarding-rules describe www-rule --region {{{project_0.default_region | Region}}} -
外部 IP アドレスにアクセスします。
IPADDRESS=$(gcloud compute forwarding-rules describe www-rule --region {{{project_0.default_region | Region}}} --format="json" | jq -r .IPAddress) -
外部 IP アドレスを表示します。
echo $IPADDRESS -
curl
コマンドを使用して外部 IP アドレスにアクセスします。IP_ADDRESS
は、前のコマンドで作成した外部 IP アドレスに置き換えてください。while true; do curl -m1 $IPADDRESS; done curl
コマンドからのレスポンスとして、3 つのインスタンスのいずれかを表すメッセージが次々とランダムに返されます。 最初のレスポンスが返されなかった場合は、構成が完全に読み込まれてインスタンスが正常であるとマークされるまで 30 秒ほど待ってから、もう一度やり直してください。 -
Ctrl+C キーを使用してコマンドの実行を停止します。
タスク 5. HTTP ロードバランサを作成する
HTTP(S) ロード バランシングは Google Front End(GFE)で実装されます。 GFE はグローバルに分散しており、Google のグローバル ネットワークとコントロール プレーンを使用して連携します。 URL ルールを構成して、ある特定のインスタンス グループに一部の URL をルーティングし、別のインスタンス グループには他の URL をルーティングすることができます。
グループに十分な容量があり、リクエストに適している場合、リクエストは常にユーザーに最も近いインスタンス グループにルーティングされます。 最も近いグループに十分な容量がない場合、リクエストは十分な容量がある最も近いグループに送信されます。
Compute Engine バックエンドでロードバランサを設定するには、VM がインスタンス グループに属している必要があります。 このマネージド インスタンス グループの VM で外部 HTTP ロードバランサのバックエンド サーバーを実行します。 このラボでは、バックエンド サーバーはそれぞれ独自のホスト名を提供します。
-
まず、ロードバランサ テンプレートを作成します。
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 -
ロードバランサのヘルスチェックを作成します。
gcloud compute health-checks create http http-basic-check \ --port 80 注: Google Cloud には、バックエンド インスタンスがトラフィックに適切に応答しているかどうかを判別するヘルスチェック メカニズムが用意されています。 詳細については、ヘルスチェックの作成に関するドキュメントをご覧ください。 -
バックエンド サービスを作成します。
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 構成リソースです。 たとえば、外部 HTTP(S) ロードバランサでは、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
下の [進行状況を確認] をクリックして、L7 HTTP(S) ロードバランサが作成されたことを確認します。
タスク 6. インスタンスに送信されるトラフィックをテストする
-
Google Cloud コンソールのナビゲーション メニューで、[ネットワーク サービス] > [ロード バランシング] を選択します。
-
作成したロードバランサ(
web-map-http
)をクリックします。 -
[バックエンド] セクションでバックエンドの名前をクリックして、VM が正常であることを確認します。正常でない場合は、しばらく待ってからページを再読み込みします。
-
VM が正常になったら、ウェブブラウザで
http://IP_ADDRESS/
に移動してロードバランサをテストします。IP_ADDRESS
は、ロードバランサの IP アドレスに置き換えてください。
これには 3~5 分ほどかかる場合があります。 接続できない場合は、少し待ってからブラウザを再読み込みしてください。
ページを提供したインスタンスの名前とそのゾーン(Page served from: lb-backend-group-xxxx
など)を示すコンテンツを含むページがブラウザで表示されます。
お疲れさまでした
ここでは、ネットワーク ロードバランサと HTTP(S) ロードバランサを作成し、インスタンス テンプレートとマネージド インスタンス グループを使用する演習を行いました。
クエストを完了する
このセルフペース ラボは、「Google Cloud Essentials」クエストの一部です。
クエストとは学習パスを構成する一連のラボのことで、完了すると成果が認められてバッジが贈られます。
バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。
このラボの修了後、こちらのクエストに登録すれば、すぐにクレジットを受け取ることができます。
受講可能なすべてのクエストについては、カタログをご覧ください。
次のラボを受講する
Hello Node Kubernetes に進んでクエストを続けるか、以下のおすすめのラボをご確認ください。
次のステップと詳細情報
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2023 年 9 月 19 日
ラボの最終テスト日: 2023 年 9 月 19 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。