menu
arrow_back

Kubernetes を使用した負荷分散のテスト

Kubernetes を使用した負荷分散のテスト

1時間 クレジット: 5

GSP182

Google Cloud セルフペース ラボ

概要

このラボでは、Kubernetes Engine を使用して負荷分散テスト フレームワークをデプロイする方法を学習します。負荷分散テスト フレームワークでは、複数のコンテナを使用して、REST ベースのシンプルな API の負荷テスト トラフィックを作成します。このソリューションでは、シンプルなウェブ アプリケーションをテストしますが、同じパターンを使用してゲーム アプリケーションやモノのインターネット(IoT)アプリケーションなどの複雑な負荷テストシナリオを作成することもできます。ここでは、コンテナベースの負荷テスト フレームワークの一般的なアーキテクチャについて説明します。

テスト対象システム

このラボのテスト対象システムは、Google App Engine にデプロイされているシンプルなウェブ アプリケーションです。このアプリケーションは、REST スタイルの基本的なエンドポイントを公開して、受信 HTTP POST リクエストをキャプチャします(受信データは永続化されません)。

サンプルのワークロード

デプロイするアプリケーションは、モノのインターネット(IoT)デプロイメントで多く見られるバックエンド サービス コンポーネントをモデルにして作成されています。まずデバイスがサービスに登録し、次に指標やセンサー測定値の報告を開始するとともに、定期的にサービスに再登録するという一連のインタラクションが行われます。

次の図は、一般的なバックエンド サービス コンポーネントのインタラクションを示しています。 542dlt85f86jjd1f.png

このインタラクションをモデル化する場合、Python ベースの負荷分散テストツールである Locust を使用します。このツールを使用すると複数のターゲットパスにリクエストを分散できます。たとえば 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 ワーカーポッドを表すサービスがあります。

    次の図は、マスターノードとワーカーノードの内容を示してします。

4er1cd4e32459737.png

演習内容

  • テスト対象システム、つまり Google App Engine にデプロイされるシンプルなウェブ アプリケーションを作成する。
  • Kubernetes Engine を使用して負荷分散テスト フレームワークをデプロイする。
  • シンプルな REST ベースの API の負荷テスト トラフィックを作成する。

前提条件

  • App Engine サービスと Kubernetes Engine GCP サービスの基本知識。
  • Linux の標準的なテキスト エディタ(vim、emacs、nano など)を使い慣れていること。

Qwiklabs に参加してこのラボの残りの部分や他のラボを確認しましょう。

  • Google Cloud Console への一時的なアクセス権を取得します。
  • 初心者レベルから上級者レベルまで 200 を超えるラボが用意されています。
  • ご自分のペースで学習できるように詳細に分割されています。
参加してこのラボを開始
スコア

—/100

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