arrow_back

内部ロードバランサを作成する

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

内部ロードバランサを作成する

Lab 50分 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

GSP216

Google Cloud セルフペース ラボ

概要

Google Cloud は、TCP/UDP トラフィックの内部ロード バランシング機能を備えています。内部ロード バランシングにより、内部仮想マシン インスタンスのみにアクセス可能なプライベート ロード バランシング IP アドレスの背後でサービスを実行、スケールできます。

このラボでは、同じリージョン内に 2 つのマネージド インスタンス グループを作成し、次のネットワーク図のように、インスタンス グループをバックエンドとして使用する内部ロードバランサを構成してテストします。

Network_Diagram.png

目標

このラボでは、次のタスクの実施方法について学びます。

  • HTTP とヘルスチェックのファイアウォール ルールを作成する
  • インスタンス テンプレートを 2 つ構成する
  • マネージド インスタンス グループを 2 つ作成する
  • 内部ロードバランサを構成してテストする

設定と要件

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

こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、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 のプロダクトやサービスのリストが含まれるメニューが表示されます。 ナビゲーション メニュー アイコン

タスク 1. HTTP とヘルスチェックのファイアウォール ルールを構成する

バックエンドへの HTTP トラフィックと Google Cloud ヘルス チェッカーからの TCP トラフィックを許可するファイアウォール ルールを構成します。

my-internal-app ネットワークを調べる

RDP、SSH、ICMP トラフィック用のファイアウォール ルールが適用され、subnet-a と subnet-b を備えたネットワーク my-internal-app があらかじめ構成されています。

  1. コンソールで、ナビゲーション メニュー > [VPC ネットワーク] > [VPC ネットワーク] に移動します。

  2. 下にスクロールすると、subnet-asubnet-b の 2 つのサブネットを持つ my-internal-app ネットワークがあることがわかります。

    Google Cloud プロジェクトはいずれも default ネットワークで開始します。また、ネットワーク図に示されているように my-internal-app ネットワークもあらかじめ作成されています。

    subnet-asubnet-b にマネージド インスタンス グループを作成します。内部ロードバランサはリージョン サービスなので、どちらのサブネットも リージョン内にあります。各マネージド インスタンス グループは別々のゾーンにあるため、サービスはゾーン障害の影響を免れることができます。

HTTP ファイアウォール ルールを作成する

(バックエンドに Apache をインストールするために)ロードバランサとインターネットからバックエンドへの HTTP トラフィックを許可するファイアウォール ルールを作成します。

  1. [VPC ネットワーク] の左側のパネルで [ファイアウォール] をクリックします。

  2. app-allow-icmpapp-allow-ssh-rdp というファイアウォール ルールが表示されているはずです。

    これらはあらかじめ作成されています。

  3. [ファイアウォール ルールを作成] をクリックします。

  4. 以下の値を設定し、他はすべてデフォルト値のままにします。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    名前 app-allow-http
    ネットワーク my-internal-app
    ターゲット 指定されたターゲットタグ
    ターゲットタグ lb-backend
    ソースフィルタ IPv4 範囲
    送信元 IPv4 範囲 0.0.0.0/0
    プロトコルとポート [指定したプロトコルとポート] と [TCP] のチェックボックスをオンにして「80」と入力
注: すべてのネットワークを指定するために、[送信元 IPv4 の範囲] には /0 を含めます。
  1. [作成] をクリックします。

ヘルスチェックのファイアウォール ルールを作成する

ヘルスチェックでは、ロードバランサのどのインスタンスが新しい接続を受け取れるかが判別されます。内部ロード バランシングでは、ロード バランシング インスタンスへのヘルスチェックのプローブが、範囲 130.211.0.0/2235.191.0.0/16 のアドレスから送信されます。ファイアウォール ルールで、この接続を許可する必要があります。

  1. [ファイアウォール ルール] ページで、[ファイアウォール ルールを作成] をクリックします。

  2. 以下の値を設定し、他はすべてデフォルト値のままにします。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    名前 app-allow-health-check
    ターゲット 指定されたターゲットタグ
    ターゲットタグ lb-backend
    ソースフィルタ IPv4 範囲
    送信元 IPv4 範囲 130.211.0.0/22 と 35.191.0.0/16
    プロトコルとポート [指定したプロトコルとポート] と [TCP] のチェックボックスをオンにする
注: 2 つの送信元 IPv4 範囲は 1 つずつ入力し、区切りには Space キーを使用します。
  1. [作成] をクリックします。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。

HTTP とヘルスチェックのファイアウォール ルールを構成する

タスク 2. インスタンス テンプレートを構成し、インスタンス グループを作成する

マネージド インスタンス グループは、インスタンス テンプレートを使用して同一インスタンスのグループを作成します。これらを使用して、内部ロードバランサのバックエンドを作成します。

インスタンス テンプレートを構成する

インスタンス テンプレートは、VM インスタンスとマネージド インスタンス グループの作成に使用できる API リソースです。インスタンス テンプレートが、マシンタイプ、ブートディスク イメージ、サブネット、ラベル、その他のインスタンス プロパティを定義します。my-internal-app ネットワークの 2 つのサブネットのために 1 つのインスタンス テンプレートを作成します。

  1. Google Cloud コンソールで、ナビゲーション メニュー > [Compute Engine] > [インスタンス テンプレート] に移動します。

  2. [インスタンス テンプレートを作成] をクリックします。

  3. [名前] に「instance-template-1」と入力します。

  4. [シリーズ] で [E2] を選択します。

  5. [詳細オプション] をクリックします。

  6. [ネットワーキング] をクリックします。

  7. [ネットワーク タグ] に [lb-backend] を指定します。

    注: ネットワーク タグの lb-backend によって、HTTPヘルスチェックのファイアウォール ルールがこれらのインスタンスに確実に適用されます。
  8. [ネットワーク インターフェース] でプルダウン アイコンをクリックして編集モードにします。

  9. 以下の値を設定し、他はすべてデフォルト値のままにします。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    ネットワーク my-internal-app
    サブネットワーク subnet-a
  10. [完了] をクリックします。

  11. [管理] をクリックします。

  12. [メタデータ] で [項目を追加] をクリックし、次の値を指定します。

    キー 1 値 1
    startup-script-url gs://cloud-training/gcpnet/ilb/startup.sh
注: startup-script-url は、インスタンスの起動時に実行されるスクリプトを指定します。このスクリプトが Apache をインストールして、クライアント IP、VM インスタンスの名前、リージョン、ゾーンを含めるようスタートページを変更します。こちらのスクリプトをご参照ください。
  1. [作成] をクリックします。
  2. インスタンス テンプレートの作成が完了するまで待ちます。

次のインスタンス テンプレートを構成する

instance-template-1 をコピーして、subnet-b のもう 1 つのインスタンス テンプレートを作成します。

  1. [インスタンス テンプレート] で [instance-template-1] の横にあるチェックボックスをオンにしてから、[コピー] をクリックします。「instance-template-2」という名前のインスタンスが表示されます。
  2. [詳細オプション] をクリックします。
  3. [ネットワーキング] タブをクリックします。
  4. [ネットワーク インターフェース] でプルダウン アイコンをクリックして編集モードにします。
  5. [サブネットワーク] で [subnet-b] を選択します。
  6. [完了]、[作成] の順にクリックします。

マネージド インスタンス グループを作成する

マネージド インスタンス グループを subnet-asubnet-b にそれぞれ作成します。

注: subnet-a と同じリージョンの別のゾーンを 1 つ指定します。たとえば、subnet-a のゾーンが us-west2-a の場合、subnet-b には us-west2-b を選択できます。
  1. [Compute Engine] の左側のパネルで、[インスタンス グループ]、[インスタンス グループを作成] の順にクリックします。

  2. 以下の値を設定し、他はすべてデフォルト値のままにします。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    名前 instance-group-1
    Instance template instance-template-1
    ロケーション シングルゾーン
    リージョン
    ゾーン
    [自動スケーリング] > [インスタンスの最小数] 1
    [自動スケーリング] > [インスタンスの最大数] 5
    [自動スケーリング] > [Autoscaling signals](プルダウン アイコンをクリックして編集)> [Signal type] CPU 使用率
    CPU 使用率の目標値 80
    初期化期間 45
注: マネージド インスタンス グループには、負荷の増減に基づいて、マネージド インスタンス グループのインスタンスを自動的に追加または削除できる自動スケーリング機能が備わっています。自動スケーリングによってトラフィックの増加をアプリケーションで適切に処理できるようになり、リソースの必要性が低下した場合には費用を抑えることができます。自動スケーリングのポリシーを定義しておけば、測定された負荷に基づいて自動的にスケーリングが実行されます。
  1. [作成] をクリックします。

    subnet-a と同じリージョンの別のゾーンで、instance-group-2 に同じ手順を繰り返します。

  2. [インスタンス グループを作成] をクリックします。

  3. 以下の値を設定し、他はすべてデフォルト値のままにします。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    名前 instance-group-2
    Instance template instance-template-2
    ロケーション シングルゾーン
    リージョン
    ゾーン ゾーン(subnet-a と同じリージョン内の別のゾーンを使用)
    [自動スケーリング] > [インスタンスの最小数] 1
    [自動スケーリング] > [インスタンスの最大数] 5
    [自動スケーリング] > [Autoscaling signals](プルダウン アイコンをクリックして編集)> [Signal type] CPU 使用率
    CPU 使用率の目標値 80
    初期化期間 45
  4. [作成] をクリックします。

バックエンドを確認する

VM インスタンスが両方のサブネットで作成されていることを確認したら、バックエンドの HTTP サイトにアクセスするためのユーティリティ VM を作成します。

  1. [Compute Engine] で [VM インスタンス] をクリックします。

  2. instance-group-1instance-group-2 で開始する 2 つのインスタンスが存在します。

    これらのインスタンスは別個のゾーンにあり、それぞれの内部 IP アドレスは subnet-asubnet-b の CIDR ブロックに含まれています。

  3. [インスタンスを作成] をクリックします。

  4. 以下の値を設定し、他はすべてデフォルト値のままにします。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    名前 utility-vm
    リージョン
    ゾーン
    シリーズ E2
    マシンタイプ [Shared-core] > [e2-micro (1 shared vCPU)]
  5. [詳細オプション] をクリックします。

  6. [ネットワーキング] をクリックします。

  7. [ネットワーク インターフェース] でプルダウン アイコンをクリックして編集モードにします。

  8. 以下の値を設定し、他はすべてデフォルト値のままにします。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    ネットワーク my-internal-app
    サブネットワーク subnet-a
    プライマリ内部 IPv4 アドレス エフェメラル(カスタム)
    カスタムのエフェメラル IP アドレス 10.10.20.50
  9. [完了]、[作成] の順にクリックします。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。

インスタンス テンプレートを構成し、インスタンス グループを作成する
  1. バックエンド サーバーの内部 IP アドレスはそれぞれ 10.10.20.210.10.30.2 です。
注: IP アドレスが異なる場合は、後述の 2 つの curl コマンドで置き換えてください。
  1. utility-vm で [SSH] をクリックし、ターミナルを起動して接続します。
  2. instance-group-1-xxxx のスタートページを確認するには、次のコマンドを実行します。
curl 10.10.20.2

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

<h1>Internal Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 10.10.20.50<h2>Hostname</h2>Server Hostname: instance-group-1-1zn8<h2>Server Location</h2>Region and Zone: us-central1-a
  1. instance-group-2-xxxx のスタートページを確認するには、次のコマンドを実行します。
curl 10.10.30.2

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

<h1>Internal Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 10.10.20.50<h2>Hostname</h2>Server Hostname: instance-group-2-q5wp<h2>Server Location</h2>Region and Zone: us-central1-b

注: curl コマンドを使用すると、各 VM インスタンスのクライアント IP、およびその独自の名前とロケーションが示されます。これで、内部ロードバランサがトラフィックを双方のバックエンドに送信することがわかります。
  1. utility-vm の SSH ターミナルを閉じます。
exit

タスク 3. 内部ロードバランサを構成する

以下の図に示すように、2 つのバックエンド(instance-group-1instance-group-2)間でトラフィックが分散されるように内部ロードバランサを構成します。

2 つのバックエンド間でトラフィックを分散する内部ロードバランサを示すネットワーク図

構成を開始する

  1. Google Cloud コンソールで、ナビゲーション メニュー > [ネットワーク サービス] > [ロード バランシング] に移動し、[ロードバランサを作成] をクリックします。
  2. [ネットワーク ロードバランサ(TCP / SSL)] で [構成を開始] をクリックします。
  3. [インターネット接続または内部専用] で [VM 間のみ] を選択します。
注: [VM 間のみ] を選択すると、このロードバランサは内部専用になります。これを選択するには、バックエンドが単一のリージョン内にあることが必要です。また、これを選択するとロードバランサへの TCP 処理のオフロードは許可されません。
  1. [続行] をクリックします。
  2. [ロードバランサの名前] に「my-ilb」と入力します。
  3. [リージョン] で を選択します。
  4. [ネットワーク] で、[my-internal-app] を選択します。

リージョン バックエンド サービスを構成する

バックエンド サービスはインスタンス グループをモニタリングし、設定の超過を防止します。

  1. [バックエンドの設定] をクリックします。

  2. 以下の値を設定し、他はすべてデフォルト値のままにします。

    プロパティ 値(指定されたオプションを選択)
    インスタンス グループ instance-group-1
  3. [バックエンドを追加] をクリックします。

  4. [インスタンス グループ] で [instance-group-2] を選択します。

  5. [ヘルスチェック] で [ヘルスチェックを作成] を選択します。

  6. 以下の値を設定し、他はすべてデフォルト値のままにします。

    プロパティ 値(指定されたオプションを選択)
    名前 my-ilb-health-check
    プロトコル TCP
    ポート 80
注: ヘルスチェックでは、どのインスタンスが新しい接続を受け取れるかを確認できます。この HTTP ヘルスチェックは、5 秒ごとにインスタンスをポーリングし、レスポンスを最大 5 秒間待機して、2 回連続して成功した場合は正常、2 回連続して失敗した場合は異常として処理します。
  1. [保存] をクリックします。
  2. Google Cloud コンソールの [バックエンドの構成] の横に青いチェックマークが表示されていることを確認します。表示されていない場合には、上のすべてのステップが完了していることを再度確認してください。

フロントエンドを構成する

フロントエンドはバックエンドにトラフィックを転送します。

  1. [フロントエンドの構成] をクリックします。

  2. 以下のように設定します。その他の値はデフォルト値のままにしてください。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    サブネットワーク subnet-b
    内部 IP [IP アドレス] で [IP アドレスを作成] を選択
  3. 以下のように設定します。その他の値はデフォルト値のままにしてください。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    名前 my-ilb-ip
    静的 IP アドレス ユーザー指定
    カスタム IP アドレス 10.10.30.5
  4. [予約] をクリックします。

  5. [ポート番号] に「80」と入力します。

  6. [完了] をクリックします。

内部ロードバランサを確認して作成する

  1. [確認と完了] をクリックします。

  2. [バックエンド] と [フロントエンド] を確認します。

  3. [作成] をクリックします。 ロードバランサが作成されるのを待ってから、次のタスクに進みます。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。

内部ロードバランサを構成する

タスク 4. 内部ロードバランサをテストする

my-ilb の IP アドレスがトラフィックを instance-group-1instance-group-2 に転送することを確認します。

内部ロードバランサにアクセスする

  1. Google Cloud コンソールで、ナビゲーション メニュー > [Compute Engine] > [VM インスタンス] に移動します。
  2. utility-vm で [SSH] をクリックし、ターミナルを起動して接続します。
  3. 内部ロードバランサがトラフィックを転送することを確認するには、次のコマンドを実行します。
curl 10.10.30.5

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

<h1>Internal Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 10.10.20.50<h2>Hostname</h2>Server Hostname: instance-group-1-1zn8<h2>Server Location</h2>Region and Zone: us-central1-a 注: 想定どおりに、トラフィックは内部ロードバランサ(10.10.30.5)からバックエンドに転送されています。
  1. 同じコマンドをさらに数回実行します。

出力で、instance-group-1 からと、同じリージョンの別のゾーンにある instance-group-2 からのレスポンスを確認できるはずです。

お疲れさまでした

このラボでは、 リージョンに 2 つのマネージド インスタンス グループを作成し、それらのインスタンスへの HTTP トラフィックと Google Cloud ヘルス チェッカーからの TCP トラフィックを許可するファイアウォール ルールを作成しました。次に、それらのインスタンス グループの内部ロードバランサを構成してテストしました。

次のステップと詳細情報

Cloud Load Balancing の基本コンセプトについては、Google Cloud Load Balancing のドキュメントをご確認ください。

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

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

マニュアルの最終更新日: 2024 年 2 月 2 日

ラボの最終テスト日: 2023 年 11 月 20 日

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