始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Configure a health check firewall rule
/ 10
Create two NAT configurations using Cloud Router
/ 10
Configure an instance template and create instance groups
/ 10
Configure the HTTP Load Balancer
/ 10
Deny the siege-vm
/ 10
Google Cloud HTTP(S) ロード バランシングは、Google の世界中のポイント オブ プレゼンス(POP)で Google ネットワークのエッジに実装されています。HTTP(S) ロードバランサを送信先とするユーザー トラフィックは、ユーザーに最も近い POP に入った後、Google のグローバル ネットワークでロードバランスされて、十分な容量がある最も近いバックエンドに送られます。
Google Cloud Armor の IP 拒否 / 許可ルールを使用すると、ユーザーや悪意のあるトラフィックに最も近い Google Cloud のエッジで、HTTP(S) ロードバランサへのアクセスを制限または許可できます。これにより、悪意のあるユーザーまたはトラフィックがリソースを消費したり、Virtual Private Cloud(VPC)ネットワークに侵入したりすることを防止できます。
次の図に示されるように、このラボではグローバルなバックエンドを使って HTTP ロードバランサを構成します。次に、ロードバランサのストレステストを実施し、Google Cloud Armor でストレステストの IP アドレスを拒否リストに登録します。
このラボでは、次のタスクの実行方法について学びます。
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
Qwiklabs にシークレット ウィンドウでログインします。
ラボのアクセス時間(例: 1:15:00)に注意し、時間内に完了できるようにしてください。
一時停止機能はありません。必要な場合はやり直せますが、最初からになります。
準備ができたら、[ラボを開始] をクリックします。
ラボの認証情報(ユーザー名とパスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。
[Google Console を開く] をクリックします。
[別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。
利用規約に同意し、再設定用のリソースページをスキップします。
Google Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。
Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。
[続行] をクリックします。
環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されます。次に例を示します。
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力例:
出力:
出力例:
ヘルスチェックでは、ロードバランサのどのインスタンスが新しい接続を受け取れるかを確認します。HTTP ロード バランシングでは、ロード バランシング インスタンスへのヘルスチェックのプローブが、130.211.0.0/22 と 35.191.0.0/16 の範囲のアドレスから接続を行います。ファイアウォール ルールで、この接続を許可する必要があります。
ヘルスチェックを許可するファイアウォール ルールを作成します。
Cloud コンソールのナビゲーション メニュー()で、[VPC ネットワーク] > [ファイアウォール] を選択します。
ICMP、internal、RDP、SSH のファイアウォール ルールがすでにあります。
各 Google Cloud プロジェクトには、default ネットワークとこれらのファイアウォール ルールが始めから用意されています。
[ファイアウォール ルールを作成] をクリックします。
次のように指定し、残りの設定はデフォルトのままにします。
| プロパティ | 値(値を入力するか、指定されたオプションを選択) |
|---|---|
| 名前 | fw-allow-health-checks |
| ネットワーク | default |
| ターゲット | 指定されたターゲットタグ |
| ターゲットタグ | allow-health-checks |
| ソースフィルタ | IPv4 範囲 |
| 送信元 IPv4 範囲 | 130.211.0.0/22 と 35.191.0.0/16 |
| プロトコルとポート | 指定したプロトコルとポート |
80」を指定します。[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 3 で設定する Google Cloud VM バックエンド インスタンスには、外部 IP アドレスは構成されません。
代わりに Cloud NAT サービスをセットアップして、これらの VM インスタンスが外部へのリクエストを行えるようにします。これにより、起動時に Apache ウェブサーバーと PHP をインストールできるようにします。us-central1 リージョンと europe-west1 リージョンのそれぞれにあるマネージド インスタンス グループごとに、Cloud Router を作成します。これらの Cloud Router の構成は次のタスクで行います。
Cloud コンソールのナビゲーション メニュー()で、[ネットワーク サービス] > [Cloud NAT] を選択します。
[開始] をクリックします。
次のように指定し、残りの設定はデフォルトのままにします。
| プロパティ | 値(値を入力するか、指定されたオプションを選択) |
|---|---|
| ゲートウェイの名前 | nat-usa |
| ネットワーク | default |
| リージョン | us-central1 |
[Cloud Router] をクリックし、[新しいルーターを作成] を選択します。
[名前] に「nat-router-us-central1」と入力します。
[作成] をクリックします。
[Cloud NAT ゲートウェイの作成] で、[作成] をクリックします。
nat-europe について、同じ手順を繰り返します。
[Cloud NAT ゲートウェイを作成] をクリックします。
次のように指定し、残りの設定はデフォルトのままにします。
| プロパティ | 値(値を入力するか、指定されたオプションを選択) |
|---|---|
| ゲートウェイの名前 | nat-europe |
| ネットワーク | default |
| リージョン | europe-west1 |
| [Cloud Router] > [新しいルーターを作成] | 名前を「nat-router-europe-west1」に指定 |
[作成] をクリックします。
[NAT ゲートウェイの作成] で、[作成] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
マネージド インスタンス グループは、インスタンス テンプレートを使用して同一インスタンスのグループを作成します。これらを使用して、HTTP ロードバランサのバックエンドを作成します。
インスタンス テンプレートは、VM インスタンスとマネージド インスタンス グループの作成に使用できる API リソースです。このテンプレートでは、マシンタイプ、ブートディスク イメージ、サブネット、ラベル、その他のインスタンス プロパティを定義します。
Cloud コンソールのナビゲーション メニュー()で、[Compute Engine] > [インスタンス テンプレート] を選択します。
[インスタンス テンプレートを作成] をクリックします。
[名前] に「us-central1-template」と入力します。
[リージョン] で [us-central1] を選択します。
[詳細オプション] をクリックします。
[管理] をクリックします。
[メタデータ] で [+ 項目を追加] をクリックし、次の値を指定します。
| キー | 値 |
|---|---|
| startup-script-url | gs://cloud-training/gcpnet/httplb/startup.sh |
[ネットワーキング] をクリックします。
次のように指定し、残りの設定はデフォルトのままにします。
| プロパティ | 値(値を入力するか、指定されたオプションを選択) |
|---|---|
| ネットワーク タグ | allow-health-checks |
| [ネットワーク インターフェース] > [ネットワーク] | default |
| サブネットワーク | default (us-central1) |
| 外部 IP | なし |
[完了] をクリックします。
[作成] をクリックします。インスタンス テンプレートの作成が完了するまで待ちます。
次に、us-central1-template をコピーして、もう 1 つのインスタンス テンプレートを作成する準備をします。[us-central1-template] をクリックします。us-central1-template に関する情報が表示されます。
ページの上部の方にある [同様のものを作成] をクリックします。
[名前] に「europe-west1-template」と入力します。
[リージョン] で [europe-west1] を選択します。
[詳細オプション] をクリックします。
[ネットワーキング] > [ネットワーク インターフェース] をクリックします。
[サブネットワーク] として [default (europe-west1)] を選択し、[完了] をクリックします。
[作成] をクリックします。
us-central1 と europe-west1 にマネージド インスタンス グループを作成します。
ナビゲーション メニューで [Compute Engine] > [インスタンス グループ] をクリックします。
[インスタンス グループの作成] をクリックします。
次のように指定し、残りの設定はデフォルトのままにします。
| プロパティ | 値(値を入力するか、指定されたオプションを選択) |
|---|---|
| 名前 | us-central1-mig |
| ロケーション | マルチゾーン |
| リージョン | us-central1 |
| インスタンス テンプレート | us-central1-template |
| 自動スケーリング > Autoscaling signals | [CPU 使用率] をクリックし、[CPU 使用率の目標値] を 80 に設定 |
| 初期化期間 | 45 |
| インスタンスの最小数 | 1 |
| インスタンスの最大数 | 5 |
[作成] をクリックします。
europe-west1 の europe-west1-mig について、同じ手順を繰り返します。
[インスタンス グループを作成] をクリックします。
次のように指定し、残りの設定はデフォルトのままにします。
| プロパティ | 値(値を入力するか、指定されたオプションを選択) |
|---|---|
| 名前 | europe-west1-mig |
| ロケーション | マルチゾーン |
| リージョン | europe-west1 |
| インスタンス テンプレート | europe-west1-template |
| 自動スケーリング > Autoscaling signals | [CPU 使用率] をクリックし、[CPU 使用率の目標値] を 80 に設定 |
| 初期化期間 | 45 |
| インスタンスの最小数 | 1 |
| インスタンスの最大数 | 5 |
[作成] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
両方のリージョンで VM インスタンスが作成されていることを確認し、それらの HTTP サイトにアクセスします。
ナビゲーション メニューで、[Compute Engine] > [VM インスタンス] をクリックします。
名前が「us-central1-mig」と「europe-west1-mig」で始まるインスタンスが存在します。
これらのインスタンスはマネージド インスタンス グループに含まれています。
Cloud コンソールで、ヨーロッパに配置された VM インスタンスの名前とゾーンをメモします。(この後これらの値を使用する必要があります)
Google Cloud Platform のメニューで、[Cloud Shell をアクティブにする]()をクリックして Cloud Shell を開きます。プロンプトが表示されたら、[続行] をクリックします。
Cloud Shell で次のコマンドを実行して、ヨーロッパにある VM インスタンスで SSH コマンドを実行します。
Y」と入力します。startup-script-url スクリプトの一部としてインストールされた Apache のスタートページが表示されます。このスクリプトによって、スタートページはクライアント IP、VM インスタンスの名前、リージョン、ゾーンを含むように変更されています。
exit」と入力して SSH セッションを終了します。次に、下のネットワーク図に示されているように、HTTP ロードバランサを構成して、2 つのバックエンド(us-central1 の us-central1-mig と europe-west1 の europe-west1-mig)の間でトラフィックを分散します。
バックエンド サービスによって、受信トラフィックが、接続されている 1 つ以上のバックエンドに振り向けられます。各バックエンドは、1 つのインスタンス グループと、追加の提供容量メタデータで構成されます。
[バックエンドの構成] をクリックします。
[バックエンド サービスとバックエンド バケット] で、[バックエンド サービスを作成] をクリックします。
次のように指定し、残りの設定はデフォルトのままにします。
| プロパティ | 値(指定されたオプションを選択) |
|---|---|
| 名前 | http-backend |
| バックエンド タイプ | インスタンス グループ |
| インスタンス グループ | us-central1-mig |
| ポート番号 | 80 |
| 分散モード | レート |
| 最大 RPS | 50 |
| 容量 | 100 |
[完了] をクリックします。
[バックエンドを追加] をクリックします。
次のように指定し、残りの設定はデフォルトのままにします。
| プロパティ | 値(指定されたオプションを選択) |
|---|---|
| インスタンス グループ | europe-west1-mig |
| ポート番号 | 80 |
| 分散モード | 使用率 |
| バックエンドの最大使用率 | 80 |
| 容量 | 100 |
[完了] をクリックします。
[ヘルスチェック] で [ヘルスチェックを作成] を選択します。
次のように指定し、残りの設定はデフォルトのままにします。
| プロパティ | 値(指定されたオプションを選択) |
|---|---|
| 名前 | http-health-check |
| プロトコル | TCP |
| ポート | 80 |
1」に設定します。ホストとパスのルールで、トラフィックの転送方法を決定します。たとえば、動画のトラフィックと静的トラフィックをそれぞれ異なるバックエンドに転送できます。ただし、このラボではホストとパスのルールは構成しません。
[フロントエンドの構成] をクリックします。
次のように指定し、残りの設定はデフォルトのままにします。
| プロパティ | 値(値を入力するか、指定されたオプションを選択) |
|---|---|
| プロトコル | HTTP |
| IP バージョン | IPv4 |
| IP アドレス | エフェメラル |
| ポート | 80 |
[完了] をクリックします。
[フロントエンドの IP とポートを追加] をクリックします。
次のように指定し、残りの設定はデフォルトのままにします。
| プロパティ | 値(値を入力するか、指定されたオプションを選択) |
|---|---|
| プロトコル | HTTP |
| IP バージョン | IPv6 |
| IP アドレス | 自動割り当て |
| ポート | 80 |
[完了] をクリックします。
[LB_IP_v4]、[LB_IP_v6] と呼びます。[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
バックエンドの HTTP ロードバランサを作成したので、次は、トラフィックがバックエンド サービスに転送されるかどうかを確認します。
http://[LB_IP_v4] に移動します。[LB_IP_v4] はロードバランサの IPv4 アドレスに置き換えてください。http://[LB_IP_v6] に移動して HTTP ロードバランサの IPv6 アドレスも試してください。[LB_IP_v6] はロードバランサの IPv6 アドレスに置き換えてください。次に、新しい VM を作成し、HTTP ロードバランサに対する負荷をシミュレートして、負荷が高くなるとトラフィックが両方のバックエンドに分散されるかどうかを確認します。
Cloud コンソールのナビゲーション メニュー()で、[Compute Engine] > [VM インスタンス] を選択します。
[インスタンスを作成] をクリックします。
次のように指定し、残りの設定はデフォルトのままにします。
| プロパティ | 値(値を入力するか、指定されたオプションを選択) |
|---|---|
| 名前 | siege-vm |
| リージョン | us-west1 |
| ゾーン | us-west1-c |
[LB_IP_v4] はロードバランサの IPv4 アドレスに置き換えてください。出力は次のようになります。
出力:
Google Cloud Armor を使用して siege-vm を拒否し、この VM インスタンスが HTTP ロードバランサにアクセスできないようにします。
Google Cloud Armor セキュリティ ポリシーを作成し、siege-vm に対する拒否ルールを設定します。
[SIEGE_IP] と呼びます。ナビゲーション メニューで、[ネットワーク セキュリティ] > [Cloud Armor] > [Cloud Armor ポリシー] を選択します。
[ポリシーの作成] をクリックします。
次のように指定し、残りの設定はデフォルトのままにします。
| プロパティ | 値(値を入力するか、指定されたオプションを選択) |
|---|---|
| 名前 | deny-siege |
| デフォルトのルール アクション | 許可 |
[次のステップ] をクリックします。
[ルールの追加] をクリックします。
次のように指定し、残りの設定はデフォルトのままにします。
| プロパティ | 値(値を入力するか、指定されたオプションを選択) |
|---|---|
| 条件 > 一致 | SIEGE_IP を入力 |
| アクション | 拒否 |
| 拒否ステータス | 403(アクセス拒否) |
| 優先度 | 1000 |
[完了] をクリックします。
[次のステップ] をクリックします。
[ターゲットの追加] をクリックします。
[種類] で [ロードバランサのバックエンド サービス] を選択します。
[ターゲット] で [http-backend] を選択します。
[ポリシーを作成] をクリックします。
ポリシーの作成が完了するまで待ってから次のステップに進みます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
次に、siege-vm が HTTP ロードバランサにアクセスできなくなったことを確認します。
出力は次のようになります。
出力:
http://[LB_IP_v4] に移動します。[LB_IP_v4] はロードバランサの IPv4 アドレスに置き換えてください。出力は次のようになります。
出力:
セキュリティ ポリシーのログを調べて、このトラフィックもブロックされているかどうかを確認します。
リクエストの送信元が siege-vm の IP アドレスになっているはずです。そうでない場合は、別のログエントリを展開します。
DENY に設定されていて、その name として deny-siege が指定されています。このラボでは、まず、us-central1 と europe-west1 のバックエンドを使って HTTP ロードバランサを構成しました。次に、VM を使用してロードバランサのストレステストを実施し、Google Cloud Armor でこの VM の IP アドレスを拒否リストに登録しました。また、セキュリティ ポリシーのログを調べて、トラフィックがブロックされた理由を特定しました。
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください