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


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

目標

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

費用

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

  • Compute Engine

始める前に

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

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

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

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

    API を有効にする

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

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

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

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

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

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

コンソール

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

    1. Google Cloud コンソールの [VPC ネットワーク] ページに移動します。

      [VPC ネットワーク] に移動

    2. [VPC ネットワークを作成] をクリックします。

    3. [名前] を fortressnet に設定します。

    4. [サブネット作成モード] を [自動] に設定します。

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

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

    1. Google Cloud Console で [ファイアウォール ルール] ページに移動します。

      [ファイアウォール ルール] に移動

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

    3. [名前] を fortressnet-allow-http に設定します。

    4. [ネットワーク] で、fortressnet を選択します。

    5. [ターゲット] で、All instances in the network を選択します。

    6. [送信元 IPv4 範囲] を 0.0.0.0/0 に設定します。

    7. [プロトコルとポート] で [指定したプロトコルとポート] を選択し、[TCP] チェックボックスをオンにして「80」と入力します。

    8. [作成] をクリックします。

  3. インスタンス テンプレートを作成します。各インスタンスで単純な Apache ウェブサーバーを起動する起動スクリプトを組み込みます。

    1. Google Cloud Console で、[インスタンス テンプレート] ページに移動します。

      [インスタンス テンプレート] に移動

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

    3. [名前] を fort-template に設定します。

    4. [マシンの構成] で e2-micro(2 基の vCPU、1 GB のメモリ)を選択します。

    5. [詳細オプション] セクションで、[ネットワーキング] を開いて次の操作を行います。

      1. [ネットワーク インターフェース] セクションで、ネットワーク インターフェースを開いて編集します。
      2. [ネットワーク] で fortressnet を選択します。
    6. [管理] セクションの [自動化] に、次の起動スクリプトを入力します。

      apt update && apt -y install apache2
      

    7. [作成] をクリックします。

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

    1. Google Cloud Console で、[インスタンス グループ] ページに移動します。

      [インスタンス グループ] に移動

    2. [インスタンス グループを作成] をクリックして、新しいマネージド インスタンス グループを作成します。

    3. [新しいマネージド インスタンス グループ(ステートレス)] を選択します。

    4. [名前] を us-central1-pool に設定します。

    5. [インスタンス テンプレート] で fort-template を選択します。

    6. [ロケーション] で [複数のゾーン] を選択します。

    7. [リージョン] で us-central1 を選択します。[ゾーン] は、事前定義された値が選択されたままにしておきます。

    8. [自動スケーリング モード] で [オン: グループに対してインスタンスを追加および削除します] を選択します。

    9. [インスタンスの最小数] を 1 に設定します。

    10. [インスタンスの最大数] を 5 に設定します。

    11. [自動スケーリング シグナル] で、デフォルトの選択(CPU 使用率)を編集して [シグナルタイプ] を [HTTP ロード バランシングの使用率] に設定します。

    12. [HTTP ロード バランシング使用率の目標値] を 80 に設定します。

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

    14. [作成] をクリックします。HTTP ロードバランサのバックエンド サービスにもインスタンス グループを割り当てる必要があることを示すメッセージがダイアログに表示されます。

    15. 確認のダイアログで [確認] をクリックします。すべてのインスタンス グループを作成した後、ロードバランサを構成できます。

    16. 次の変更を加えて上記の手順を繰り返し、さらに 2 つのインスタンス グループを作成します。

      • 名前europe-west1-poolリージョンeurope-west1 のグループを作成します。
      • 名前asia-east1-poolリージョンasia-east1 のグループを作成します。
  5. (省略可)インスタンスが正常で、HTTP トラフィックを処理していることを確認します。1 つ以上のインスタンスの外部 IP アドレスをテストします。インスタンスが起動プロセスを完了するまで 1 分ほどかかることがあります。

    1. Google Cloud コンソールで [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 e2-micro \
        --network fortressnet \
        --metadata startup-script='apt update && apt -y install 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 テキストが表示されます。

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

ロードバランサの構成

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

コンソール

構成を開始する

  1. Google Cloud コンソールで、[ロード バランシング] ページに移動します。

    [ロード バランシング] に移動

  2. [ロードバランサを作成] をクリックします。
  3. [ロードバランサの種類] で [アプリケーション ロードバランサ(HTTP / HTTPS)] を選択し、[次へ] をクリックします。
  4. [インターネット接続または内部] で [インターネット接続(外部)] を選択し、[次へ] をクリックします。
  5. [グローバルまたはシングル リージョンのデプロイ] で [グローバル ワークロードに最適] を選択し、[次へ] をクリックします。
  6. [ロードバランサの世代] で [グローバル外部アプリケーション ロードバランサ] を選択し、[次へ] をクリックします。
  7. [構成] をクリックします。

基本構成

  1. [ロードバランサの名前] を fortressnet-balancer に設定します。

バックエンドの構成

  1. [Create global external Application 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. [Create global external Application Load Balancer] ページの左パネルで、[ホストとパスのルール] をクリックします。
    この例では、すべてのトラフィックがデフォルト ルールに従うため、ホストまたはパスのルールを構成する必要はありません。したがって、事前設定されたデフォルト値をそのまま使用します。

フロントエンドの構成

  1. [Create global external Application Load Balancer] ページの左パネルで、[フロントエンドの構成] をクリックします。
  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. [Create global external Application Load Balancer] ページの左パネルで、[確認と完了] をクリックします。
  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 つ作成します。一つは IPv4 用、もう一つは IPv6 用です。これらはロードバランサのグローバル外部 IP アドレスになります。

    gcloud compute addresses create fortressnet-ip \
        --ip-version IPV4 \
        --network-tier=PREMIUM \
        --global
    gcloud compute addresses create fortressnet-ipv6 \
        --ip-version IPV6 \
        --network-tier=PREMIUM \
        --global
    
  2. ロードバランサの外部 IP アドレスを調べます。

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

    gcloud compute forwarding-rules create fortressnet-http-rule \
        --load-balancing-scheme=EXTERNAL \
        --network-tier=PREMIUM \
        --global \
        --target-http-proxy fortressnet-http-proxy \
        --ports 80 \
        --address LOAD_BALANCER_IP_ADDRESS
    
    gcloud compute forwarding-rules create fortressnet-http-ipv6-rule \
        --load-balancing-scheme=EXTERNAL \
        --network-tier=PREMIUM \
        --global \
        --target-http-proxy fortressnet-http-proxy \
        --ports 80 \
        --address LOAD_BALANCER_IPV6_ADDRESS
    

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

コンソール

  1. Google Cloud コンソールの [ロード バランシング] ページに移動します。

    [ロード バランシング] に移動

  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 リクエストを許可している元のファイアウォールを削除します。これにより、個々のインスタンスが外部のクライアントからアクセスできなくなります。

コンソール

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

    1. Google 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
    

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

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

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

コンソール

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

    1. Google Cloud Console で、[インスタンスの作成] ページに移動します。

      [インスタンスの作成] に移動

    2. [名前] を europe-loadtest に設定します。

    3. [リージョン] で、europe-west1 を選択します。

    4. 詳細設定を行うには、[ネットワーク、ディスク、セキュリティ、管理、単一テナンシー] セクションを開き、次の操作を行います。

      1. [管理] セクションを開きます。
      2. [自動化] フィールドに、次の起動スクリプトを入力します。
        apt -y install siege
        
    5. VM を作成するには、[作成] をクリックします。

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

    1. Google Cloud コンソールの [ロード バランシング] ページに移動します。

      [ロード バランシング] に移動

    2. [fortressnet-balancer] をクリックします。

    3. [フロントエンド] の [IP:ポート] 列に IPv4 アドレスをコピーします(IPv4 アドレスの形式は www.xxx.yyy.zzz です)。

  3. 負荷テスト インスタンスに SSH で接続します。

    1. Google Cloud コンソールで [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 -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. Google Cloud コンソールの [ロード バランシング] ページに移動します。

    [ロード バランシング] に移動

  2. fortressnet-balancer という名前のロードバランサをクリックします。

  3. [モニタリング] タブをクリックします。

  4. [バックエンド] プルダウンで fortressnet-backend-service を選択します。

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

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

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

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

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

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

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

コンソール

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

    1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

      [VM インスタンス] に移動

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

    3. [名前] を asia-loadtest に設定します。

    4. [リージョン] で、asia-east1 を選択します。

    5. [Networking, disks, security, management, sole tenancy] をクリックして、詳細設定を表示します。

    6. [管理] タブをクリックします。

    7. [自動化] に次の起動スクリプトを入力します。

      apt -y install siege
      

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

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

    1. Google Cloud コンソールの [ロード バランシング] ページに移動します。

      [ロード バランシング] に移動

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

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

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

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

クリーンアップ

チュートリアルが終了したら、作成したリソースをクリーンアップして、割り当ての使用を停止し、課金されないようにできます。次のセクションで、リソースを削除または無効にする方法を説明します。

プロジェクトの削除

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

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

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

インスタンスの削除

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

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. 削除するインスタンスのチェックボックスを選択します。
  3. インスタンスを削除するには、 [その他の操作] をクリックし、[削除] をクリックしてから、指示に沿って操作します。

次のステップ