Compute Engine でのウェブサービスのグローバルな自動スケーリング

このチュートリアルでは、容量のニーズを満たすために自動スケーリングされる、リージョンの Compute Engine マネージド インスタンス グループを使用して、グローバルで利用可能なウェブサービスを設定する方法を示します。このチュートリアルで示す手法を使用して、グローバルに分散されるスケーラブルな独自のプロジェクトを Compute Engine に実装できます。

目標

  • 自動スケーリングを有効にした複数のリージョンの Compute Engine マネージド インスタンス グループをデプロイします。
  • 複数のリージョンにまたがるロードバランサを作成します。
  • 世界中のさまざまなリージョンからのテスト トラフィックを生成します。
  • Google Cloud Console を使用して、ロードバランサがどのようにリクエストをルーティングするか、また、インスタンス グループが需要に応じてどのように自動スケーリングを行うかを可視化します

料金

このチュートリアルでは、以下の GCP の課金対象となるコンポーネントを使用しています。

  • Compute Engine

始める前に

  1. GCP Console のプロジェクト セレクタのページで、GCP プロジェクトを選択または作成します。

    プロジェクト セレクタのページに移動

  2. Google Cloud Platform プロジェクトに対して課金が有効になっていることを確認します。 プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  3. Compute EngineAPI を有効にします。

    APIs を有効にする

アプリケーション アーキテクチャ

アプリケーションには、次の Compute Engine コンポーネントが含まれています。

  1. インスタンス テンプレート: インスタンス グループ内の各インスタンスを作成するために使用されるテンプレート。
  2. インスタンス グループ: 受信トラフィックに基づいて自動スケーリングを行う複数のインスタンス グループ。
  3. ロードバランサ: インスタンス グループ間でトラフィックを分散する HTTP ロードバランサ。
  4. インスタンス: 世界中のさまざまなリージョンからのテスト トラフィックを生成する複数のテスト インスタンス。

複数のリージョンのインスタンス グループを設定したロードバランサを示すシステム アーキテクチャ図

ウェブサービスを設定する

インスタンス グループを作成する

Console

  1. インスタンス グループのネットワークを作成します。

    1. Cloud Console の [VPC ネットワーク] ページに移動します。
      [VPC ネットワーク] ページに移動
    2. [VPC ネットワークを作成] をクリックします。
    3. [名前] を fortressnet に設定します。
    4. [サブネット作成モード] を [自動] に設定します。
    5. ページの下部にある [作成] をクリックします。
  2. ネットワークのファイアウォール ルールを作成します。このルールでは、インスタンスに送信されるすべての HTTP リクエストを許可します。

    1. Cloud Console の [ファイアウォール ルール] ページに移動します。
      [ファイアウォール ルール] ページに移動
    2. [ファイアウォール ルールを作成] をクリックします。
    3. [名前] を fortressnet-allow-http に設定します。
    4. [ネットワーク] で、fortressnet を選択します。
    5. [ターゲット] で、All instances in the network を選択します。
    6. [ソース IP の範囲] を 0.0.0.0/0 に設定します。
    7. [プロトコルとポート] で [tcp] を選択し、「80」と入力します。
    8. [作成] をクリックします。
  3. インスタンス テンプレートを作成します。各インスタンスで単純な Apache ウェブサーバーを起動する起動スクリプトを組み込みます。

    1. Cloud Console の [インスタンス テンプレート] ページに移動します。
      [インスタンス テンプレート] ページに移動
    2. [インスタンス テンプレートを作成] をクリックします。
    3. [名前] を fort-template に設定します。
    4. [マシンの構成] で micro(f1-micro)を選択します。
    5. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] をクリックして、詳細設定を表示します。いくつかのタブが表示されます。
    6. [ネットワーキング] タブをクリックします。
    7. [ネットワーク] で、fortressnet を選択します。
    8. [管理] タブをクリックします。
    9. [自動化] に次の起動スクリプトを入力します。

      apt-get update && apt-get install -y apache2
      

    10. ページの下部にある [作成] をクリックします。

  4. インスタンス テンプレートを使用して、複数のリージョンのマネージド インスタンス グループを作成します。各インスタンス グループで自動スケーリングを構成します。

    1. Cloud Console の [インスタンス グループ] ページに移動します。
      [インスタンス グループ] ページに移動
    2. [インスタンス グループを作成] をクリックします。
    3. [名前] を us-central1-pool に設定します。
    4. [ロケーション] で、Multi-zone を選択します。
    5. [リージョン] で、us-central1 を選択します。
    6. [インスタンス テンプレート] で fort-template を選択します。
    7. [自動スケーリング] で [オン] を選択します。
    8. [自動スケーリングの基準] で HTTP load balancing usage を選択します。
    9. [ターゲットの負荷分散使用量] を 80 に設定します。
    10. [インスタンスの最小数] を 1 に設定します。
    11. [インスタンスの最大数] を 5 に設定します。
    12. [作成] をクリックします。
    13. 次の変更を加えて上記の手順を繰り返し、さらに 2 つのインスタンス グループを作成します。
      • 名前europe-west1-pool でリージョンが europe-west1 のグループを作成します。
      • 名前asia-east1-pool でリージョンが asia-east1 のグループを作成します。
  5. (省略可)インスタンスが正常で、HTTP トラフィックを処理していることを確認します。1 つ以上のインスタンスの外部 IP アドレスをテストします。インスタンスが起動プロセスを完了するまで 1 分ほどかかることがあります。

    1. Cloud Console の [VM インスタンス] ページに移動します。
      [VM インスタンス] ページに移動
    2. [名前] 列で、実行中の各インスタンスに緑色のチェックマークが表示されていることを確認します。
    3. インスタンスの外部 IP をコピーしてウェブブラウザに貼り付けます。

    「Apache2 Debian デフォルト ページ」のウェブページが表示されます。

    表示されない場合は、しばらくお待ちください。

gcloud

  1. インスタンス グループのネットワークを作成します。

    gcloud compute networks create fortressnet --subnet-mode auto
    
  2. ネットワークのファイアウォール ルールを作成します。このルールでは、インスタンスに送信されるすべての HTTP リクエストを許可します。

    gcloud compute firewall-rules create fortressnet-allow-http \
        --network fortressnet \
        --allow tcp:80
    
  3. インスタンス テンプレートを作成します。各インスタンスで単純な Apache ウェブサーバーを起動する起動スクリプトを組み込みます。

    gcloud compute instance-templates create fort-template \
        --machine-type f1-micro \
        --network fortressnet \
        --metadata startup-script='apt-get update && apt-get install -y apache2'
    
  4. インスタンス テンプレートを使用して、複数のリージョンのマネージド インスタンス グループを作成します。各インスタンス グループで自動スケーリングを構成します。

    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
    
  5. (省略可)インスタンスが正常で、HTTP トラフィックを処理していることを確認します。1 つ以上のインスタンスの外部 IP アドレスをテストします。インスタンスが起動プロセスを完了するまで 1 分ほどかかることがあります。

    1. インスタンスを一覧表示します。

      gcloud compute instances list
      

    2. [STATUS] 列でインスタンスが RUNNING になっていることを確認します。

    3. [EXTERNAL_IP] 列の IP アドレスに対するクエリを実行して、インスタンスの動作を確認します。

      curl http://[EXTERNAL_IP] | head
      

    <title>Apache2 Debian Default Page: It works</title> という行を含む HTML テキストが表示されます。

    表示されない場合は、しばらくお待ちください。

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

ロードバランサは複数のバックエンド間でクライアント リクエストを分散します。

Console

ロードバランサ構成を開始する

  1. Cloud Console の [負荷分散] ページに移動します。
    [負荷分散] ページに移動
  2. [ロードバランサを作成] をクリックします。
  3. [HTTP(S) 負荷分散] で [設定を開始] をクリックします。
  4. [名前] を fortressnet-balancer に設定します。

バックエンドの構成

  1. [New HTTP(S) load balancer] ページで、[バックエンドの設定] をクリックします。
  2. [バックエンド サービスとバックエンド バケットの作成または選択] プルダウン メニューで、[バックエンド サービス]、[バックエンド サービスを作成] の順に選択します。[バックエンド サービスの作成] ダイアログ ボックスが表示されます。
  3. バックエンド サービスの [名前] を fortressnet-backend-service に設定します。
  4. [新しいバックエンド] ダイアログ ボックスで、[インスタンス グループ] を asia-east1-pool に設定します。
  5. [分散モード] で [レート] を選択します。
  6. [最大 RPS] をインスタンスあたり 100 RPS に設定します。
  7. [完了] をクリックします。
  8. [バックエンドを追加] をクリックします。
  9. [新しいバックエンド] ダイアログ ボックスで、[インスタンス グループ] を europe-west1-pool に設定します。
  10. [分散モード] で [レート] を選択します。
  11. [最大 RPS] をインスタンスあたり 100 RPS に設定します。
  12. [完了] をクリックします。
  13. [バックエンドを追加] をクリックします。
  14. [新しいバックエンド] ダイアログ ボックスで、[インスタンス グループ] を us-central1-pool に設定します。
  15. [分散モード] で [レート] を選択します。
  16. [最大 RPS] をインスタンスあたり 100 RPS に設定します。
  17. [完了] をクリックします。
  18. [ヘルスチェック] で [ヘルスチェックを作成] を選択します。
  19. [名前] を http-basic-check に設定します。
  20. [プロトコル] で HTTP を選択します。
  21. [ポート] を 80 に設定します。
  22. [保存して次へ] をクリックします。
  23. [作成] をクリックします。

ホストとパスのルール

  1. [新しい HTTP(S) ロードバランサ] ページの左パネルで、[ホストとパスのルール] をクリックします。
    この例では、すべてのトラフィックがデフォルト ルールに従うため、ホストまたはパスのルールを構成する必要はありません。したがって、事前設定されたデフォルト値をそのまま使用します。

フロントエンドの構成

  1. [新しい HTTP(S) ロードバランサ] ページの左パネルで [フロンドエンドの構成] をクリックします。
  2. [名前] を fortressnet-http-rule に設定します。
  3. [IP バージョン] で [IPv4] を選択します。
  4. [IP アドレス] で [IP アドレスを作成] を選択します。
  5. [新しい静的 IP アドレスの予約] ダイアログ ボックスで、[名前] を fortressnet-ip に設定します。
  6. [予約] をクリックしてしばらく待ちます。
  7. [新しいフロントエンドの IP とポート] ダイアログ ボックスの下部にある [完了] をクリックします。
  8. [フロントエンド IP とポートの追加] をクリックします。
  9. [名前] を fortressnet-http-ipv6-rule に設定します。
  10. [IP バージョン] で [IPv6] を選択します。
  11. [IP アドレス] で [IP アドレスを作成] を選択します。
  12. ダイアログ ボックスで [名前] を fortressnet-ipv6 に設定します。
  13. [予約] をクリックしてしばらく待ちます。
  14. [新しいフロントエンドの IP とポート] ダイアログ ボックスの下部にある [完了] をクリックします。

確認と完了

  1. [新しい HTTP(S) ロードバランサ] ページで [確認と完了] をクリックします。
  2. 設定した項目が意図したとおりであることを確認します。
  3. 設定が正しい場合は、左パネルの下部にある [作成] をクリックします。負荷分散画面に戻ります。ロードバランサが作成されると、その横に、ロードバランサが実行中であることを示す緑色のチェックマークが表示されます。

gcloud

バックエンドの構成

  1. 基本的なヘルスチェックを作成します。これにより、ロードバランサのバックエンドが HTTP リクエストに応答しているかどうかをチェックします。

    gcloud compute health-checks create http http-basic-check
    

  2. グローバル バックエンド サービスを作成します。このバックエンド サービスは、ロードバランサから HTTP トラフィックを受信します。

    gcloud compute backend-services create fortressnet-backend-service 
    --protocol HTTP
    --health-checks http-basic-check
    --global

  3. インスタンス グループをバックエンド サービスのリージョン バックエンドとして追加します。この構成では、インスタンスごとの 1 秒あたりの最大リクエスト数(RPS)に基づいてバックエンド間でトラフィックを分散します。

    gcloud compute backend-services add-backend fortressnet-backend-service 
    --balancing-mode RATE
    --max-rate-per-instance 100
    --instance-group us-central1-pool
    --instance-group-region us-central1
    --global gcloud compute backend-services add-backend fortressnet-backend-service
    --balancing-mode RATE
    --max-rate-per-instance 100
    --instance-group europe-west1-pool
    --instance-group-region europe-west1
    --global gcloud compute backend-services add-backend fortressnet-backend-service
    --balancing-mode RATE
    --max-rate-per-instance 100
    --instance-group asia-east1-pool
    --instance-group-region asia-east1
    --global

ホストとパスのルール

  1. URL マップを定義します。URL マップは、さまざまな URL をそれぞれ異なるバックエンド サービスにルーティングします。バックエンド サービスは 1 つしかないので、そのバックエンド サービスをすべての URL のデフォルト サービスとして設定します。

    gcloud compute url-maps create fortressnet-balancer 
    --default-service fortressnet-backend-service

  2. HTTP プロキシルートを作成します。HTTP プロキシルートは HTTP リクエストを受け入れ、URL マップに従ってルーティングします。ここでは、すべてのリクエストを 1 つのバックエンド サービスに送信します。

    gcloud compute target-http-proxies create fortressnet-http-proxy 
    --url-map fortressnet-balancer

フロントエンドの構成

  1. グローバル静的外部 IP アドレスを 2 つ作成します。1 つは IPV4 用、もう 1 つは IPV6 用です。これらはロードバランサのグローバル外部 IP アドレスになります。

    gcloud compute addresses create fortressnet-ip 
    --ip-version IPV4
    --global gcloud compute addresses create fortressnet-ipv6
    --ip-version IPV6
    --global

  2. ロードバランサの外部 IP アドレスを調べます。

    gcloud compute addresses list
    

  3. 外部 IP アドレスのグローバル転送ルールを作成します。このルールでは、IPV4 と IVP6 の両方の HTTP リクエストを HTTP プロキシに転送します。

    gcloud compute forwarding-rules create fortressnet-http-rule 
    --global
    --target-http-proxy fortressnet-http-proxy
    --ports 80
    --address [LOAD_BALANCER_IP_ADDRESS]
    gcloud compute forwarding-rules create fortressnet-http-ipv6-rule 
    --global
    --target-http-proxy fortressnet-http-proxy
    --ports 80
    --address [LOAD_BALANCER_IPV6_ADDRESS]

(省略可)ロードバランサが機能していることを確認します。これには 1~3 分かかることがあります。

Console

  1. Cloud Console の [負荷分散] ページに移動します。
    [負荷分散] ページに移動
  2. [バックエンド] 列の fortressnet-balancer に緑色のチェックマークが表示されるのを待ちます。
  3. fortressnet-balancer をクリックします。
  4. [フロントエンド] の [IP:ポート] 列に IPV4 アドレスをコピーします(IPV4 アドレスの形式は www.xxx.yyy.zzz です。末尾のポート番号 :nn は必要ありません)。[フロントエンド] セクションが表示されない場合は、しばらく待ってからウェブページを再度読み込んでください。
  5. ウェブブラウザに IP アドレスを入力します。

「Apache2 Debian デフォルト ページ」のウェブページが表示されます。

「エラー 404 - 見つかりません」というウェブページが表示された場合は、もう少し待ってみてください。

gcloud

  1. ロードバランサの外部 IP アドレスを調べます。

    gcloud compute addresses list
    

  2. IPV4 アドレスに対するクエリを実行します(IPV4 アドレスの形式は www.xxx.yyy.zzz です)。

    curl http://[LOAD_BALANCER_IP_ADDRESS] | head
    

<title>Apache2 Debian Default Page: It works</title> という行を含む HTML テキストが表示されます。

<title>Error 404 (Not Found)!!1</title> が表示された場合は、もう少し待ってみてください。

おすすめの方法: ロードバランサとヘルスチェックからの内部トラフィックだけを許可する安全なファイアウォールを作成します。次に、すべての HTTP リクエストを許可している元のファイアウォールを削除します。これにより、個々のインスタンスが外部のクライアントからアクセスできなくなります。

Console

  1. ロードバランサとヘルスチェックからのトラフィックのみを許可する新しいファイアウォールを作成します。

    1. Cloud Console の [ファイアウォール ルール] ページに移動します。
      [ファイアウォール ルール] ページに移動
    2. [ファイアウォール ルールを作成] をクリックします。
    3. [名前] を fortressnet-allow-load-balancer に設定します。
    4. [ネットワーク] で、fortressnet を選択します。
    5. [ターゲット] で、All instances in the network を選択します。
    6. [ソース IP の範囲] に「130.211.0.0/22」と入力して Enter キーを押し、次に「35.191.0.0/16」と入力してもう一度 Enter キーを押します。
    7. [プロトコルとポート] で [tcp] を選択し、「80」と入力します。
    8. [作成] をクリックします。
  2. すべてを許可する元のファイアウォールを削除します。

    1. fortressnet-allow-http の横にあるチェックボックスをオンにします。
    2. ページの上部にある [削除] をクリックします。
    3. ダイアログ ボックスで [削除] をクリックします。

gcloud

  1. ロードバランサとヘルスチェックからのトラフィックのみを許可する新しいファイアウォールを作成します。

    gcloud compute firewall-rules create fortressnet-allow-load-balancer 
    --network fortressnet
    --source-ranges 130.211.0.0/22,35.191.0.0/16
    --allow tcp:80

  2. すべてを許可する元のファイアウォールを削除します。

    gcloud compute firewall-rules delete fortressnet-allow-http -q
    

(省略可)自動スケーリングと負荷分散が機能していることを確認する

テスト トラフィックを生成する

ヨーロッパでは朝にあたる時間帯に、ご自分のウェブサービスがインターネット上で急激に人気になったとします。ヨーロッパで突然発生した大量のクライアント リクエストを生成してみましょう。

Console

  1. Siege 負荷テストツールをインストールしたインスタンスを作成します。

    1. Cloud Console の [VM インスタンス] ページに移動します。
      [VM インスタンス] ページに移動
    2. [インスタンスを作成] をクリックします。
    3. [名前] を europe-loadtest に設定します。
    4. [リージョン] で、europe-west1 を選択します。
    5. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] をクリックして、詳細設定を表示します。いくつかのタブが表示されます。
    6. [管理] タブをクリックします。
    7. [自動化] に次の起動スクリプトを入力します。

      apt-get install -y siege
      

    8. ページの下部にある [作成] をクリックします。

  2. ロードバランサの IPV4 アドレスを取得します。

    1. Cloud Console の [負荷分散] ページに移動します。
      [負荷分散] ページに移動
    2. fortressnet-balancer をクリックします。
    3. [フロントエンド] の [IP:ポート] 列に IPV4 アドレスをコピーします(IPV4 アドレスの形式は www.xxx.yyy.zzz です)。
  3. 負荷テスト インスタンスに SSH で接続します。

    1. Cloud Console の [VM インスタンス] ページに移動します。
      [VM インスタンス] ページに移動
    2. [名前] 列の europe-loadtest インスタンスに緑色のチェックマークが表示されるのを待ちます。
    3. [接続] 列の europe-loadtest で [SSH] をクリックします。
  4. Siege を開始します。ロードバランサの IPV4 アドレスをターゲットに指定します。

    siege -c150 http://[LOAD_BALANCER_IP_ADDRESS]
    

gcloud

  1. Siege 負荷テストツールをインストールしたインスタンスを作成します。

    gcloud compute instances create europe-loadtest \
        --network default \
        --zone europe-west1-c \
        --metadata startup-script='apt-get -y install siege'
    
  2. ロードバランサの IPV4 アドレスを取得します。

    gcloud compute addresses list
    
  3. gcloud コマンドを使用できる新しい Shell セッションを開きます。

    1. 新しい Shell セッションで、負荷テスト インスタンスに SSH で接続します。

      gcloud compute ssh --zone europe-west1-c europe-loadtest
      
    2. Siege を開始します。ロードバランサの IPV4 アドレスをターゲットに指定します。

      siege -c150 http://[LOAD_BALANCER_IP_ADDRESS]
      

siege コマンドを実行すると、「The server is now under siege...」という出力が表示されます。

[alert] Zip encoding disabled; siege requires zlib support to enable it
** SIEGE 4.0.2
** Preparing 150 concurrent users for battle.
The server is now under siege...

負荷分散と自動スケーリングをモニタリングする

  1. Cloud Console の [負荷分散] ページに移動します。
    [負荷分散] ページに移動
  2. fortressnet-balancer という名前の付いたロードバランサをクリックします。
  3. [モニタリング] タブをクリックします。
  4. [バックエンド] プルダウンで fortressnet-backend-service を選択します。

十分なデータが表示されるまで最大 10 分ほどかかることがあります。まもなく次のような画面が表示されます。

3 つのバックエンドすべてに均等に分散されたヨーロッパからのリクエストを示す Cloud Console のモニタリング ディスプレイ

ここでは次のことが行われます。

  1. 負荷テストにより大量のトラフィックが一斉に送信されます。最初、ロードバランサは、3 つのバックエンド間で均等にリクエストを分散します。リクエストの数がすぐに自動スケーリングの制限を超え、サーバーが Backend 5xx errors を返すことさえあります(このメッセージはモニタリング ディスプレイに表示されます)。オートスケーラーは、必要に応じて追加のインスタンスを起動します。

  2. 自動スケーリングが容量のニーズに追いつきます。リクエストのレイテンシを最小限に抑えるため、Compute Engine のロードバランサは、クライアントに最も近いバックエンドにリクエストをルーティングしようとします。この場合、負荷テストのトラフィックはヨーロッパから発信されているため、ロードバランサはヨーロッパのバックエンドにより多くのリクエストをルーティングします。その結果、自動スケーリングでは、ヨーロッパのバックエンドでより多くのインスタンスを起動することで、リクエストの大部分を処理しようとします。

テスト トラフィックを別の場所で生成する

ご自分のウェブサービスが午後に、アジアでもインターネット上で人気になったとします。アジアからの大量のリクエストを生成してみましょう。

Console

  1. Siege 負荷テストツールをインストールした別のインスタンスを作成します。

    1. Cloud Console の [VM インスタンス] ページに移動します。
      [VM インスタンス] ページに移動
    2. [インスタンスを作成] をクリックします。
    3. [名前] を asia-loadtest に設定します。
    4. [リージョン] で、asia-east1 を選択します。
    5. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] をクリックして、詳細設定を表示します。いくつかのタブが表示されます。
    6. [管理] タブをクリックします。
    7. [自動化] に次の起動スクリプトを入力します。

      apt-get install -y siege
      

    8. ページの下部にある [作成] をクリックします。

  2. ロードバランサの IP アドレスを取得します。

    1. Cloud Console の [負荷分散] ページに移動します。
      [負荷分散] ページに移動
    2. fortressnet-balancer をクリックします。
    3. [フロントエンド] の [IP:ポート] 列に IPV4 アドレスをコピーします(IPV4 アドレスの形式は www.xxx.yyy.zzz です)。
  3. 負荷テスト インスタンスに SSH で接続します。

    1. [名前] 列の asia-loadtest インスタンスに緑色のチェックマークが表示されるのを待ちます。
    2. [接続] 列の asia-loadtest で [SSH] をクリックします。
  4. Siege を開始します。ロードバランサの IPV4 アドレスをターゲットに指定します。

    siege -c150 http://[LOAD_BALANCER_IP_ADDRESS]
    

gcloud

  1. 元の Shell セッションで、Siege 負荷テストツールをインストールした別のインスタンスを作成します。

    gcloud compute instances create asia-loadtest \
        --network default \
        --zone asia-east1-c \
        --metadata startup-script='apt-get -y install siege'
    
  2. ロードバランサの IPV4 アドレスを取得します。

    gcloud compute addresses list
    
  3. gcloud コマンドを使用できる新しい Shell セッションを開きます。

    1. 新しい Shell セッションで、負荷テスト インスタンスに SSH で接続します。

      gcloud compute ssh --zone asia-east1-c asia-loadtest
      
    2. Siege を開始します。ロードバランサの IPV4 アドレスをターゲットに指定します。

      siege -c150 http://[LOAD_BALANCER_IP_ADDRESS]
      

The server is now under siege...」という出力が再び表示されます。

[alert] Zip encoding disabled; siege requires zlib support to enable it
** SIEGE 4.0.2
** Preparing 150 concurrent users for battle.
The server is now under siege...

負荷分散と自動スケーリングをモニタリングする

前の負荷分散モニタリング ディスプレイに戻ります。十分なデータが新たに表示されるまで最大 10 分ほどかかることがあります。まもなく次のような画面が表示されます。

3 つのバックエンドすべてに分散されたヨーロッパとアジアからのリクエストを示す Cloud Console のモニタリング ディスプレイ

ここでは次のことが行われます。

  1. この場合も、負荷テストにより一斉に大量のリクエストが送信されます。最初、ロードバランサは、既存の 3 つのバックエンド間で均等にリクエストを分散します。リクエストの数が自動スケーリングの制限を超えると、オートスケーラーは必要に応じて追加のインスタンスを起動します。

  2. 自動スケーリングが新たな容量のニーズに追いつきます。ロードバランサは、先ほどと同様に利用可能な最も近いバックエンドにリクエストをルーティングしようとします。その結果、アジアのバックエンドは主にアジアからのリクエストを受け取り、ヨーロッパのバックエンドは主にヨーロッパからのリクエストを受け取り、米国のバックエンドは残りのすべてのリクエストを受け取るようになります。

クリーンアップ

自動スケーリングのチュートリアルが終了したら、GCP で作成したリソースをクリーンアップして、今後料金が発生しないようにします。次のセクションで、リソースを削除または無効にする方法を説明します。

プロジェクトの削除

課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

プロジェクトを削除するには:

  1. GCP Console で [リソースの管理] ページに移動します。

    [リソースの管理] ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

インスタンスの削除

Compute Engine インスタンスを削除するには:

  1. GCP Console の [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. 次のチェックボックスをオンにします。 削除するインスタンス。
  3. インスタンスを削除するには、[削除] () をクリックします。

次のステップ