AWS での分散負荷テスト ソリューションを試してみた
AWS ソリューションライブラリの一つである「AWS での分散負荷テスト」ソリューションを試してみました。
このソリューションは、Amazon ECS の Fargateのタスクをクライアントとして任意のWebのエンドポイントに負荷テストを実施できるようで、 前からその存在は知っていたんですが、実際に試してみるのは初めてです。
なおこの記事に記述している内容は、2022年9月24日時点の内容に基づいていますのでご了承ください。
このソリューションを導入する事前準備としては、基本的に VPC と 2つ以上のサブネットが存在してればいけそうです。
詳細についてはソリューションガイドを参照しましょう。
https://d1.awsstatic.com/Solutions/ja_JP/distributed-load-testing-on-aws.pdf
では、このソリューションを導入していきます。
まず自分のAWSアカウントにサインインした状態にして、このソリューションのページにある [AWS コンソールで起動する] をクリックします。
そうすると CloudFormation でスタックを作成するページが表示されるので、必要なパラメータの入力を行います。
ここで入力する管理者の ID は、ソリューションが導入された後にテストを管理するコンソールにサインインするために必要になります。
なお、サブネットは Fargate のタスクの実行に使用するものを指定します。Public でも Private でも大丈夫ですが、Private の場合は Fargate がイメージを Pull するために NAT ゲートウェイを構成しておく必要があります。
必要なパラメータを入力後、CloudFormation でスタックを作成します。
無事にスタック作成が完了すると、パラメータで指定した管理者のメールアドレスに次のようなメールが届きます。
サブジェクト:
Welcome to Distributed Load Testing
本文:
Please use the credentials below to login to the Distributed Load Testing console. Username: admin1 Password: B2ZXkPR0D.1d Console: https://xxxxxxxxxxxxxx.cloudfront.net/
このメールに記載されている [Console:] のURL で、テストを実行、管理するためのコンソールへのアクセスできます。
アクセスすると、次のようにサインインが求められます。( 少し前の AWS Amplify の 認証の UI ですね。)
ここで、メールに記載されている [Username:] の値と [Password:] の値を入力してサインインを行います。
入力内容が正しければ、パスワード変更が求められますので新しいパスワードを入力します。
そうすると、テストを管理するコンソールが開き、テストシナリオ一覧が表示されます。まだテストは実行していないので何も表示されません。
これからテストシナリオを作成するので、[CREATE TEST] をクリックします。
そして、次の図のようにテストの設定を入力します。
今回は、シンプルに単一のエンドポイントにアクセスを行うだけの設定にすることにしました。
なお、上図ではチェックされていませんが、今回はテスト中も Liveデータをモニタリングしたいので [Include Live Data ] をチェックします。
すぐにテストを実行したかったので、[Run Now] を選択してページ右下にある [RUN NOW]ボタンをクリックします。
すると、テストの詳細ページに切り替わります。
この詳細ページを少し下にスクロールすると、Amazon ECS の Fargate のタスクの起動状況も表示されます。
[Running] の値が指定したタスク数になることを確認します。
ここには Amazon ECS のコンソールへのリンクも表示されています。タスクの状況はこのリンクをクリックして表示される Amazon ECS のコンソールからでも確認できます。
さらにページを下にスクロールすると、チャートでLive データが表示されます。これは、[Include Live Data ] をチェックした場合に表示されます。
もしページの内容が更新されない場合は、右上にある [REFRESH] ボタンを選択してみましょう。
テストが終了すると、結果が表示されます。
今回はシンプルなシナリオでテストしてみましたが、JMeterを使用したテストや、複数のリージョンを使用したテストなどもできるようです。
多くの AWS サービスのリソースを使用して構築されているソリューションですが、CloudFormation を使用して比較的シンプルに導入できるのがいいですね!