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

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

目標

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

料金

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

  • Compute Engine

始める前に

  1. GCP プロジェクトを選択または作成します。

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

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

    課金を有効にする方法について

  3. Compute Engine API を有効にします。

    APIを有効にする

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

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

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

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

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

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

Console

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

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

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

バックエンドの構成

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

      apt-get install -y siege
      

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

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

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

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

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

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

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

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

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

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

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

Console

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

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

      apt-get install -y siege
      

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

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

    1. GCP 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 つのバックエンドすべてに分散されたヨーロッパとアジアからのリクエストを示す GCP Console のモニタリング ディスプレイ

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

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

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

クリーンアップ

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

プロジェクトの削除

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

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

  1. GCP Console で [プロジェクト] ページに移動します。

    プロジェクト ページに移動

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

インスタンスの削除

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

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

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

  2. 削除するインスタンスの隣のチェックボックスをオンにします。
  3. ページの上部にある、[削除] ボタンをクリックし、インスタンスを削除します。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント