arrow_back

Terraform を使用したモジュール式負荷分散 - リージョン ロードバランサ

参加 ログイン
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Terraform を使用したモジュール式負荷分散 - リージョン ロードバランサ

Lab 1時間 universal_currency_alt クレジット: 5 show_chart 中級
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP191

Google Cloud セルフペース ラボ

概要

Google Cloud の負荷分散では、他のクラウド プロバイダとは違って、ルーティング インスタンスではなく転送ルールを使用します。これらの転送ルールがバックエンド サービス、ターゲット プール、URL マップ、ターゲット プロキシと組み合わされて、複数のリージョンおよびインスタンス グループにまたがって機能するロードバランサが構成されます。

Terraform はオープンソースのインフラストラクチャ管理ツールで、モジュールを使用して簡単にロードバランサを Google Cloud にプロビジョニングできます。

目標

このラボでは、次の方法について学びます。

  • Terraform の負荷分散モジュールを使用する
  • リージョン TCP ロードバランサを作成する
  • リージョン内部 TCP ロードバランサを作成する
  • Kubernetes Engine を使用してグローバル HTTP ロードバランサを作成する
  • グローバル HTTPS コンテンツ ベース ロードバランサを作成する

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。

このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
  • ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントへの追加料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。

    • [Google コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google コンソールを開く] をクリックします。 ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、[ラボの詳細] パネルから [ユーザー名] をコピーして [ログイン] ダイアログに貼り付けます。[次へ] をクリックします。

  4. [ラボの詳細] パネルから [パスワード] をコピーして [ようこそ] ダイアログに貼り付けます。[次へ] をクリックします。

    重要: 認証情報は左側のパネルに表示されたものを使用してください。Google Cloud Skills Boost の認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  5. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後このタブで Cloud Console が開きます。

注: 左上にある [ナビゲーション メニュー] をクリックすると、Google Cloud のプロダクトやサービスのリストが含まれるメニューが表示されます。 ナビゲーション メニュー アイコン

Cloud Shell をアクティブにする

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

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

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

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

  2. 出力は次のようになります。

出力:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = <project_ID>

出力例:

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

Terraform モジュールの概要

このラボで使用するリポジトリには、いくつかのロードバランサ モジュールが含まれています。まずそれらのモジュールについて学習してから、リポジトリのクローンを作成してそれらを使用します。

terraform-google-lb(リージョン転送ルール)

このモジュールは、マネージド インスタンス グループのリージョン負荷分散用の TCP ネットワーク ロードバランサを作成します。マネージド インスタンス グループへの参照を指定すると、そのマネージド インスタンス グループがターゲット プールに追加され、ターゲット プールの正常なインスタンスにトラフィックを転送するためのリージョン転送ルールが作成されます。

google_compute_firewall から google_compute_instance_template までのパスを含む、負荷分散とバックエンド サービス。

スニペットの例:

module "gce-lb-fr" { source = "github.com/GoogleCloudPlatform/terraform-google-lb" region = "${var.region}" name = "group1-lb" service_port = "${module.mig1.service_port}" target_tags = ["${module.mig1.target_tags}"] }

terraform-google-lb-internal(リージョン内部転送ルール)

このモジュールは、内部リソースのリージョン負荷分散用の内部ロードバランサを作成します。マネージド インスタンス グループへの参照を指定すると、そのマネージド インスタンス グループがリージョン バックエンド サービスに追加され、正常なインスタンスにトラフィックを転送するための内部転送ルールが作成されます。

google_compute_region_backend_service から google_compute_instance_group_manager へのパスを含む、負荷分散とバックエンドサービス。

スニペットの例:

module "gce-ilb" { source = "github.com/GoogleCloudPlatform/terraform-google-lb-internal" region = "${var.region}" name = "group2-ilb" ports = ["${module.mig2.service_port}"] health_port = "${module.mig2.service_port}" source_tags = ["${module.mig1.target_tags}"] target_tags = ["${module.mig2.target_tags}","${module.mig3.target_tags}"] backends = [ { group = "${module.mig2.instance_group}" }, { group = "${module.mig3.instance_group}" }, ] }

terraform-google-lb-http(グローバル HTTP(S) 転送ルール)

このモジュールは、マルチリージョンのコンテンツ ベース負荷分散用のグローバル HTTP ロードバランサを作成します。マネージド インスタンス グループへの参照と SSL 終端の証明書(オプション)を指定すると、HTTP パスに基づいて正常なインスタンスにトラフィックを転送するための http バックエンド サービスURL マップHTTP(S) ターゲット プロキシグローバル http 転送ルールが作成されます。

google_compute_backend_service から google_compute_instance_group_manager へのパスを含む、負荷分散とバックエンド サービス。

スニペットの例:

module "gce-lb-http" { source = "github.com/GoogleCloudPlatform/terraform-google-lb-http" name = "group-http-lb" target_tags = ["${module.mig1.target_tags}", "${module.mig2.target_tags}"] backends = { "0" = [ { group = "${module.mig1.instance_group}" }, { group = "${module.mig2.instance_group}" } ], } backend_params = [ # ヘルスチェック パス, ポート名, ポート番号, タイムアウト(秒) "/,http,80,10" ] }

それでは作業を始めましょう。

タスク 1. サンプル リポジトリのクローンを作成する

  1. Cloud コンソール の右上にある Cloud Shell をアクティブにするアイコンをクリックして、新しい Cloud Shell タブを開きます。

  2. 以下のコマンドを実行して、terraform-google-examples リポジトリのクローンを作成します。

git clone https://github.com/GoogleCloudPlatform/terraform-google-lb cd ~/terraform-google-lb/examples/basic

タスク 2. リージョン転送ルールを含む TCP ロードバランサを作成する

このラボでは、同じリージョンの 2 つのインスタンスを含むマネージド インスタンス グループと、ネットワーク TCP ロードバランサを作成します。

  1. まず、プロジェクト ID をエクスポートします。
export GOOGLE_PROJECT=$(gcloud config get-value project)

terraform init コマンドを使用して、Terraform 構成ファイルを含む作業ディレクトリを初期化します。このコマンドは、いくつかの初期化ステップを実行して、作業ディレクトリを使用できるように準備します。このコマンドは、いつでも何度でも安全に実行できます。実行すると、作業ディレクトリに構成の変更が反映されます。

  1. terraform init コマンドを実行します。
terraform init

出力例:

Initializing modules... - module.mig1 - module.gce-lb-fr Initializing provider plugins... The following providers do not have any version constraints in configuration, so the latest version was installed. To prevent automatic upgrades to new major versions that may contain breaking changes, it is recommended to add version = "..." constraints to the corresponding provider blocks in configuration, with the constraint strings suggested below. - provider.google: version = "~> 1.13" - provider.null: version = "~> 1.0" - provider.template: version = "~> 1.0" Terraform has been successfully initialized! ...
  1. terraform-google-lb/examples/basic/variables.tf ファイルで、次のコマンドを実行してデフォルトのリージョンをラボで割り当てられた のリージョンに置き替えます。
export REGION={{{project_0.default_region | REGION}}} sed -i 's/us-central1/'"$REGION"'/g' variables.tf

terraform plan コマンドを使用して実行プランを作成します。このコマンドを実行すると、明示的に無効にしない限り、実行プランが更新されます。その後、構成ファイルで指定した、インフラストラクチャを希望の状態にするのに必要な操作が確定します。このコマンドは、一連の変更を加えた実行プランで予想どおりの状態を実現できるかを、実際のリソースや状態に変更を加えずに確認するのに便利です。たとえば、変更をバージョン管理に commit する前に terraform plan を実行すると、予想どおりに機能するかどうかを事前に確認できます。

  1. terraform plan コマンドを実行します。
terraform plan
  1. プロジェクト ID の値を入力するように求められたら、 を使用します。

terraform apply コマンドを使用して、構成を目的の状態にするために必要な変更を適用します。terraform plan を実行した場合は、実行プランによって生成された一連の定義済みアクションを適用できます。

  1. terraform apply コマンドを実行します。
terraform apply
  1. プロジェクト ID の値を入力するように求められたら、 を使用します。

  2. 次のプロンプトが表示されたら、[yes] と入力して続行します。

出力例:

... Apply complete! Resources: 10 added, 0 changed, 0 destroyed.

数分後にインスタンスとロードバランサが使用可能になります。

  1. ロードバランサのステータスは、Cloud コンソールのナビゲーション メニュー > [ネットワーク サービス] > [負荷分散] で確認できます。

  2. ロードバランサの URL をブラウザで開けるようにするには、次のコマンドを実行します。

EXTERNAL_IP=$(terraform output | grep load_balancer_default_ip | cut -d = -f2 | xargs echo -n) echo "http://${EXTERNAL_IP}"
  1. 出力の http://${EXTERNAL_IP} というアドレスをクリックすると、ロードバランサへのリンクが開きます。

  2. 画面を何度か更新して、 リージョンで 2 つのインスタンスの間でトラフィックが分散されていることを確認してください。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 リージョン転送ルールを含む TCP ロードバランサ

お疲れさまでした

このラボでは、負荷分散モジュールを使用する方法を学習しました。Terraform を使用して、リージョン TCP ロードバランサ、リージョン内部 TCP ロードバランサ、Kubernetes Engine を使用するグローバル HTTPS ロードバランサ、HTTPS コンテンツ ベースロードバランサをデプロイしました。

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2023 年 12 月 7 日

ラボの最終テスト日: 2023 年 12 月 7 日

Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。