目標
- 自動スケーリングを有効にした複数のリージョンの Compute Engine マネージド インスタンス グループをデプロイします。
- 複数のリージョンにまたがるロードバランサを作成します。
- 世界中のさまざまなリージョンからのテスト トラフィックを生成します。
- Google Cloud Console を使用して、ロードバランサがどのようにリクエストをルーティングするか、また、インスタンス グループが需要に応じてどのように自動スケーリングを行うかを可視化します。
費用
このチュートリアルでは、Google Cloud の課金対象となる以下のコンポーネントを使用します。- Compute Engine
始める前に
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Compute Engine API を有効にします。
アプリケーション アーキテクチャ
アプリケーションには、次の Compute Engine コンポーネントが含まれています。
- インスタンス テンプレート: インスタンス グループ内の各インスタンスを作成するために使用されるテンプレート。
- インスタンス グループ: 受信トラフィックに基づいて自動スケーリングを行う複数のインスタンス グループ。
- ロードバランサ: インスタンス グループ間でトラフィックを分散する HTTP ロードバランサ。
- インスタンス: 世界中のさまざまなリージョンからのテスト トラフィックを生成する複数のテスト インスタンス。
ウェブサービスを設定する
インスタンス グループを作成する
Console
インスタンス グループのネットワークを作成します。
Google Cloud Console で、[VPC ネットワーク] ページに移動します。
[VPC ネットワークを作成] をクリックします。
[名前] を
fortressnet
に設定します。[サブネット作成モード] を [自動] に設定します。
ページの下部にある [作成] をクリックします。
ネットワークのファイアウォール ルールを作成します。このルールでは、インスタンスに送信されるすべての HTTP リクエストを許可します。
Google Cloud Console で [ファイアウォール ルール] ページに移動します。
[ファイアウォール ルールを作成] をクリックします。
[名前] を
fortressnet-allow-http
に設定します。[ネットワーク] で、
fortressnet
を選択します。[ターゲット] で、
All instances in the network
を選択します。[ソース IP の範囲] を
0.0.0.0/0
に設定します。[プロトコルとポート] で [tcp] を選択し、「
80
」と入力します。[作成] をクリックします。
インスタンス テンプレートを作成します。各インスタンスで単純な Apache ウェブサーバーを起動する起動スクリプトを組み込みます。
Google Cloud Console で、[インスタンス テンプレート] ページに移動します。
[インスタンス テンプレートを作成] をクリックします。
[名前] を
fort-template
に設定します。[マシンの構成] で
micro
(e2-micro)を選択します。[ネットワーキング、ディスク、セキュリティ、管理、単一テナンシー] セクションをクリックして、詳細設定を表示します。
[ネットワーキング] タブをクリックします。
[ネットワーク] で、
fortressnet
を選択します。[管理] タブをクリックします。
[自動化] に次の起動スクリプトを入力します。
apt update && apt -y install apache2
ページの下部にある [作成] をクリックします。
インスタンス テンプレートを使用して、複数のリージョンのマネージド インスタンス グループを作成します。各インスタンス グループで自動スケーリングを構成します。
Google Cloud Console で、[インスタンス グループ] ページに移動します。
[インスタンス グループを作成] をクリックして、新しいマネージド インスタンス グループを作成します。
[新しいマネージド インスタンス グループ(ステートレス)] を選択します。
[名前] を
us-central1-pool
に設定します。[インスタンス テンプレート] で [
fort-template
] を選択します。[ロケーション] で [複数のゾーン] を選択します。
[リージョン] で、
us-central1
を選択します。 [ゾーン] は、事前定義された値が選択されたままにしておきます。[自動スケーリング モード] で [オン: グループへのインスタンスの追加と削除] を選択します。
[インスタンスの最小数] を
1
に設定します。[インスタンスの最大数] を
5
に設定します。[自動スケーリングの指標] で、デフォルトの選択(CPU 使用率)を編集し、[指標タイプ] を [HTTP 負荷分散の使用率] に設定します。
[負荷 HTTP 分散の目標使用率] を
80
に設定します。[作成] をクリックします。
次の変更を加えて上記の手順を繰り返し、さらに 2 つのインスタンス グループを作成します。
- 名前が
europe-west1-pool
でリージョンがeurope-west1
のグループを作成します。 - 名前が
asia-east1-pool
でリージョンがasia-east1
のグループを作成します。
- 名前が
(省略可)インスタンスが正常で、HTTP トラフィックを処理していることを確認します。1 つ以上のインスタンスの外部 IP アドレスをテストします。インスタンスが起動プロセスを完了するまで 1 分ほどかかることがあります。
Google Cloud Console で、[VM インスタンス] ページに移動します。
[名前] 列で、実行中の各インスタンスに緑色のチェックマークが表示されていることを確認します。
インスタンスの外部 IP をコピーしてウェブブラウザに貼り付けます。
「Apache2 Debian デフォルト ページ」のウェブページが表示されます。
表示されない場合は、しばらくお待ちください。
gcloud
インスタンス グループのネットワークを作成します。
gcloud compute networks create fortressnet --subnet-mode auto
ネットワークのファイアウォール ルールを作成します。このルールでは、インスタンスに送信されるすべての HTTP リクエストを許可します。
gcloud compute firewall-rules create fortressnet-allow-http \ --network fortressnet \ --allow tcp:80
インスタンス テンプレートを作成します。各インスタンスで単純な Apache ウェブサーバーを起動する起動スクリプトを組み込みます。
gcloud compute instance-templates create fort-template \ --machine-type e2-micro \ --network fortressnet \ --metadata startup-script='apt update && apt -y install apache2'
インスタンス テンプレートを使用して、複数のリージョンのマネージド インスタンス グループを作成します。各インスタンス グループで自動スケーリングを構成します。
gcloud compute instance-groups managed create us-central1-pool \ --region us-central1 \ --template fort-template \ --size 1 gcloud compute instance-groups managed set-autoscaling us-central1-pool \ --region us-central1 \ --min-num-replicas 1 \ --max-num-replicas 5 \ --scale-based-on-load-balancing \ --target-load-balancing-utilization .8
gcloud compute instance-groups managed create europe-west1-pool \ --region europe-west1 \ --template fort-template \ --size 1 gcloud compute instance-groups managed set-autoscaling europe-west1-pool \ --region europe-west1 \ --min-num-replicas 1 \ --max-num-replicas 5 \ --scale-based-on-load-balancing \ --target-load-balancing-utilization .8
gcloud compute instance-groups managed create asia-east1-pool \ --region asia-east1 \ --template fort-template \ --size 1 gcloud compute instance-groups managed set-autoscaling asia-east1-pool \ --region asia-east1 \ --min-num-replicas 1 \ --max-num-replicas 5 \ --scale-based-on-load-balancing \ --target-load-balancing-utilization .8
(省略可)インスタンスが正常で、HTTP トラフィックを処理していることを確認します。1 つ以上のインスタンスの外部 IP アドレスをテストします。インスタンスが起動プロセスを完了するまで 1 分ほどかかることがあります。
インスタンスを一覧表示します。
gcloud compute instances list
[
STATUS
] 列でインスタンスがRUNNING
になっていることを確認します。[
EXTERNAL_IP
] 列の IP アドレスに対するクエリを実行して、インスタンスの動作を確認します。curl http://EXTERNAL_IP | head
<title>Apache2 Debian Default Page: It works</title>
という行を含む HTML テキストが表示されます。表示されない場合は、しばらくお待ちください。
ロードバランサの構成
ロードバランサは複数のバックエンド間でクライアント リクエストを分散します。
Console
ロードバランサ構成の開始
Google Cloud Console で、[負荷分散] ページに移動します。
[ロードバランサを作成] をクリックします。
[HTTP(S) 負荷分散] で [設定を開始] をクリックします。
[名前] を
fortressnet-balancer
に設定します。
バックエンドの構成
- [New HTTP(S) load balancer] ページで、[バックエンドの設定] をクリックします。
- [バックエンド サービスとバックエンド バケットの作成または選択] プルダウン メニューで、[バックエンド サービス]、[バックエンド サービスを作成] の順に選択します。[バックエンド サービスの作成] ダイアログ ボックスが表示されます。
- バックエンド サービスの [名前] を
fortressnet-backend-service
に設定します。 - [新しいバックエンド] ダイアログ ボックスで、[インスタンス グループ] を
asia-east1-pool
に設定します。 - [分散モード] で [レート] を選択します。
- [最大 RPS] をインスタンスあたり
100
RPS に設定します。 - [完了] をクリックします。
- [バックエンドを追加] をクリックします。
- [新しいバックエンド] ダイアログ ボックスで、[インスタンス グループ] を
europe-west1-pool
に設定します。 - [分散モード] で [レート] を選択します。
- [最大 RPS] をインスタンスあたり
100
RPS に設定します。 - [完了] をクリックします。
- [バックエンドを追加] をクリックします。
- [新しいバックエンド] ダイアログ ボックスで、[インスタンス グループ] を
us-central1-pool
に設定します。 - [分散モード] で [レート] を選択します。
- [最大 RPS] をインスタンスあたり
100
RPS に設定します。 - [完了] をクリックします。
- [ヘルスチェック] で [ヘルスチェックを作成] を選択します。
- [名前] を
http-basic-check
に設定します。 - [プロトコル] で
HTTP
を選択します。 - [ポート] を
80
に設定します。 - [保存して次へ] をクリックします。
- [作成] をクリックします。
ホストとパスのルール
- [新しい HTTP(S) ロードバランサ] ページの左パネルで、[ホストとパスのルール] をクリックします。
この例では、すべてのトラフィックがデフォルト ルールに従うため、ホストまたはパスのルールを構成する必要はありません。したがって、事前設定されたデフォルト値をそのまま使用します。
フロントエンドの構成
- [新しい HTTP(S) ロードバランサ] ページの左パネルで [フロンドエンドの構成] をクリックします。
- [名前] を
fortressnet-http-rule
に設定します。 - [IP バージョン] で [IPv4] を選択します。
- [IP アドレス] で [IP アドレスを作成] を選択します。
- [新しい静的 IP アドレスの予約] ダイアログ ボックスで、[名前] を
fortressnet-ip
に設定します。 - [予約] をクリックしてしばらく待ちます。
- [新しいフロントエンドの IP とポート] ダイアログ ボックスの下部にある [完了] をクリックします。
- [フロントエンド IP とポートの追加] をクリックします。
- [名前] を
fortressnet-http-ipv6-rule
に設定します。 - [IP バージョン] で [IPv6] を選択します。
- [IP アドレス] で [IP アドレスを作成] を選択します。
- ダイアログ ボックスで [名前] を
fortressnet-ipv6
に設定します。 - [予約] をクリックしてしばらく待ちます。
- [新しいフロントエンドの IP とポート] ダイアログ ボックスの下部にある [完了] をクリックします。
確認と完了
- [新しい HTTP(S) ロードバランサ] ページで [確認と完了] をクリックします。
- 設定した項目が意図したとおりであることを確認します。
- 設定が正しい場合は、左パネルの下部にある [作成] をクリックします。負荷分散画面に戻ります。ロードバランサが作成されると、その横に、ロードバランサが実行中であることを示す緑色のチェックマークが表示されます。
gcloud
バックエンドの構成
基本的なヘルスチェックを作成します。これにより、ロードバランサのバックエンドが HTTP リクエストに応答しているかどうかをチェックします。
gcloud compute health-checks create http http-basic-check
グローバル バックエンド サービスを作成します。このバックエンド サービスは、ロードバラ