
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Get the sample code and build a Docker image for the application
/ 20
Deploy Web Application
/ 20
Deploy Kubernetes Cluster
/ 20
Load testing master
/ 20
Load testing workers
/ 20
このラボでは、Kubernetes Engine を使用して負荷分散テスト フレームワークをデプロイする方法を学習します。このフレームワークでは、複数のコンテナを使用して、REST ベースのシンプルな API の負荷テスト トラフィックを作成します。このソリューションでは、シンプルなウェブ アプリケーションをテストしますが、同じパターンを使用してゲーム アプリケーションやモノのインターネット(IoT)アプリケーションなどの複雑な負荷テストシナリオを作成することもできます。ここでは、コンテナベースの負荷テスト フレームワークの一般的なアーキテクチャについて説明します。
このラボのテスト対象システムは、Google App Engine にデプロイされているシンプルなウェブ アプリケーションです。このアプリケーションは、REST スタイルの基本的なエンドポイントを公開して、受信 HTTP POST リクエストをキャプチャします(受信データは永続化されません)。
デプロイするアプリケーションは、モノのインターネット(IoT)の多くのデプロイで見られるバックエンド サービス コンポーネントをモデルにして作成されています。まずデバイスがサービスに登録し、次に指標やセンサー測定値の報告を開始するとともに、定期的にサービスに再登録するという一連のインタラクションが行われます。
次の図は、一般的なバックエンド サービス コンポーネントのインタラクションを示しています。
このインタラクションをモデル化するために、Locust
を使用します。これは、複数のターゲットパスにまたがってリクエストを分散できる Python ベースの負荷テストツールです。たとえば Locust は、リクエストを /login
と /metrics
のターゲットパスに分散できます。
ワークロードは前述のインタラクションに基づいており、Locust で一連のタスクとしてモデル化されます。実際のクライアントに近づけるために、各 Locust タスクが重み付けされます。たとえば、クライアント リクエストが 1,000 個ごとに登録が 1 回発生します。
Locust コンテナ イメージとは、Locust ソフトウェアに含まれている Docker イメージです。
コンテナ クラスタ
は、少なくとも 1 つのクラスタ マスターマシンと、ノードと呼ばれる複数のワーカーマシンで構成されます。このマスターマシンとノードマシンが、Kubernetes クラスタのオーケストレーション システムを実行します。
クラスタの詳細については、Kubernetes Engine のドキュメントをご覧ください。
ポッド
とは、1 つのホストに同時にデプロイされる 1 つ以上のコンテナであり、定義、デプロイ、そして管理が可能な最小のコンピューティング単位です。一部のポッドには、コンテナが 1 つしか含まれていません。たとえば、このラボでは、各 Locust コンテナが各々のポッドで実行されます。
Deployment コントローラ
では、ポッドと ReplicaSet に宣言型の更新が行われます。このラボには、locust-master
用と locust-worker
用の 2 つの Deployment があります。
ノードの障害または更新やメンテナンスのための意図的なノードの中断などのさまざまな理由で、特定のポッドが表示されないことがあります。このような場合、ポッドの IP アドレスが、そのポッドに信頼できるインターフェースを提供していません。より信頼性の高いアプローチでは、インターフェースの変更されない抽象表現を使用し、基になるポッドが表示されず、IP アドレスが異なる新しいポッドに置き換えられる場合でも、インターフェースが提供されるようにしています。Kubernetes Engine のサービス
では、ポッドの論理セットとポッドへのアクセスに使われるポリシーを定義することで、このタイプの抽象インターフェースを提供します。
このラボでは、ポッドやポッドのセットを表すいくつかのサービスを使用します。たとえば、DNS サーバーポッドのサービス、Locust マスターポッドのサービス、10 個すべての Locust ワーカーポッドを表すサービスがあります。
次の図は、マスターノードとワーカーノードの内容を示しています。
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] パネルでも [ユーザー名] を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] パネルでも [パスワード] を確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
[承認] をクリックします。
出力は次のようになります。
出力:
出力:
出力例:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
project id
、region
、zone
の環境変数を定義します。出力例:
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
sample-webapp
フォルダには、「テスト対象システム」としてシンプルな Google App Engine の Python アプリケーションが含まれています。
gcloud app deploy
コマンドを使用します。コマンドの実行後、次の操作を行うよう求められます。
このプロジェクトのリージョンとして us-central
を選択するには、プロンプトに対して「10」を入力します。
TARGET
変数に格納されている locust-master
および locust-worker
の Deployment をデプロイするときに、デプロイされたサンプル ウェブ アプリケーションの URL が必要になります。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
gcloud
コマンドを使用して Google Kubernetes Engine クラスタを作成します。出力例:
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Deployment の最初のコンポーネントは、Locust マスターです。このマスターは、前述の負荷テストのタスクを実行するためのエントリ ポイントです。必要となるマスターは 1 つだけであるため、Locust マスターは、レプリカが 1 つでデプロイされます。
マスター Deployment の構成で、コンテナによって公開される必要があるポート(ウェブ インターフェースの場合は 8089
、ワーカーとの通信の場合は 5557
と 5558
)などのいくつかの要素を指定します。この情報は、Locust ワーカーを構成するために後で使用されます。
次のスニペットには、ポートの構成が含まれています。
locust-master-controller.yaml
と locust-worker-controller.yaml
の中の [TARGET_HOST]
と [PROJECT_ID]
をそれぞれデプロイされたエンドポイントとプロジェクト ID に置き換えます。locust-master
ポッドが作成されたことを確認するには、次のコマンドを実行します。locust-master-service
をデプロイします。このステップで、内部の DNS 名(locust-master
)とポート 8089
、5557
、5558
を使用するポッドが公開されます。このステップの一環として、locust-master-service.yaml
の type: LoadBalancer
ディレクティブが、一般公開されている IP アドレスから locust-master
ポッドへの Google Compute Engine 転送ルールを作成するように Google Kubernetes Engine に指示します。
出力例:
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Deployment の次のコンポーネントは、前述の負荷テストのタスクを実行する Locust ワーカーです。Locust ワーカーは、複数のポッドを作成する 1 つの Deployment によってデプロイされます。ポッドは、Kubernetes クラスタ全体に分散されます。各ポッドでは、環境変数を使用して、テスト対象システムのホスト名、Locust マスターのホスト名などの重要な構成情報を制御します。
Locust ワーカーがデプロイされ、Locust マスターのウェブ インターフェースに戻ると、デプロイされたワーカー数にスレーブ数が対応していることを確認できます。
次のスニペットには、名前、ラベル、レプリカ数に関する Deployment の構成が含まれています。
locust-worker-controller
をデプロイします。locust-worker-controller
は、5 つの locust-worker
ポッドをデプロイするように設定されています。ポッドがデプロイされたことを確認するために、以下のコマンドを実行します。シミュレート対象のユーザー数をスケールアップする場合は、Locust ワーカーポッド数を増やす必要があります。Deployment によってデプロイされるポッドの数を増やす場合、Kubernetes では再デプロイすることなく Deployment のサイズを変更できる機能が用意されています。
20
に拡張されます。locust-worker
ポッドのリストを取得します。次の図は、Locust マスターと Locust ワーカー間の関係を示しています。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Locust マスターのウェブ インターフェースを使用すると、テスト中のシステムに対して負荷テストのタスクを実行できます。
開始するには、シミュレートするユーザーの合計数と各ユーザーの生成速度を指定します。
次に、[Start swarming] をクリックしてシミュレーションを開始します。たとえば、ユーザー数を 300、速度を 10 に指定できます。
[Start swarming] をクリックします。
時間が経過しユーザーが生成されるにつれて、リクエスト数や 1 秒あたりのリクエスト数などのシミュレーション指標が集計されます。
Kubernetes Engine を使用して負荷分散テスト フレームワークをデプロイしました。
このセルフペース ラボは、「Google Cloud Solutions I: Scaling Your Infrastructure」クエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、完了すると成果が認められて上のようなバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、このラボが含まれるクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能なすべてのクエストについては、Google Cloud Skills Boost カタログをご覧ください。
次のラボに進んでクエストを続けるか、Google Cloud Skills Boost のラボをご確認ください。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2023 年 10 月 12 日
ラボの最終テスト日: 2023 年 10 月 12 日
Copyright 2025 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
One lab at a time
Confirm to end all existing labs and start this one