はじめに
AWS DLT(Distributed Load Testing on AWS)は、AWS環境で大規模な負荷テストを実施できるサービスですが、プロキシを指定することはできません。
そのため、JMeter側でプロキシを設定し、DLTをプロキシ経由でターゲットにリクエストを送る方法を解説します。
この記事で分かること
- JMeterのGUIでプロキシを設定する具体的な方法
- プロキシを経由したAWS DLTによる負荷テストの手法
1. AWS環境の設計
筆者が作成した構成のイメージを簡単に示します。
1.1 構成イメージ
本記事では、AWS DLTをクラウドフォーメーションを用いて新規VPCに展開し、プロキシを経由してダミーサーバに接続する構成を採用しています。
[AWS DLT (新規VPC)] ---> [プロキシ] ---> [ターゲット(ダミーサーバ)]
1.2 実施した設定
- AWS DLTのクラウドフォーメーションを新規VPC内に展開
- NAT Gatewayを設定し、DLTがプロキシに接続可能な経路を構築
- プロキシのセキュリティグループを設定し、DLTのCIDRからのアクセスを許可
- ダミーサーバ側のセキュリティグループを設定し、プロキシからのリクエストを許可
- トランジットゲートウェイ(TGW)を経由し、プロキシの先にあるダミーサーバへ通信可能に
2. JMeterの設定
JMeterにて負荷テストの基本設定を行った後、リクエスト確認をします。
2.1 JMeterのプロキシ設定
AWS DLTではプロキシ設定ができないため、JMeterのプロキシ設定を活用して、リクエストをプロキシ経由で送信します。
スレッドグループの設定
- スレッド数:リクエスト群を送信する回数
- Ramp-up期間:徐々に負荷を増やす時間
- ループ回数:1スレッドで送信するリクエストの量
HTTPリクエストの設定
Basicタブの設定
ダミーサーバをターゲットとした経路設定を行います。
- "Webサーバ"にて、プロトコルやサーバ名/IP、そしてポート番号を指定
- "HTTPリクエスト"にて、メソッドやパスを指定
Advancedタブの設定(ここでプロキシを設定)
プロキシをターゲットとした経路設定を行います。
- "Proxy Server"にて、Schemeやサーバ名/IP、そしてポート番号を指定。
2.2 JMeterのリクエスト確認
JMeterのテストを実行する前に、JMeter単体でプロキシ経由のリクエストが正しく送信できるかを確認しておきます。
- 「結果をツリーで表示」を追加し、JMeter単体で実行し、リクエストとレスポンスを確認
- プロキシサーバのログをチェックし、JMeterからの通信が届いているか確認
💡 JMeter単体でのテストがうまくいかない場合は、AWS DLTに適用しても正しく動作しない可能性が高いです。まずはローカルでJMeterの動作を確認しましょう。
3. AWS DLTを使用した負荷テスト
3.1 JMeter定義ファイル(.jmx)の適用
作成した JMeterのテストプラン(.jmx) をAWS DLTにアップロードし、負荷テストを実行します。
3.2 DLTのパラメータ設定
AWS DLTの実行パラメータを適切に設定し、負荷試験を制御します。
設定項目 | 説明 |
---|---|
Task Count | 負荷テストの実行回数 |
Concurrency | 一度に発行するリクエスト数 |
Ramp UP | 徐々に負荷を増やす時間 |
Hold For | 負荷をかけ続ける時間 |
JMeterで作成したテストプランがDLTで動作し、
⓵RUNNING状態がCOMPLETEに変わること
⓶プロキシにアクセスが来ていること
を確認できればOKです。
4. まとめ
今回の記事では、AWS DLTでプロキシを指定できない問題に対して、JMeterのプロキシ設定で解決する方法を解説しました。
まとめると、以下の3点がポイントになります。
- DLTを新規VPCに展開し、プロキシまでのネットワークを構築する
- JMeterでプロキシを指定し、DLT経由でリクエストを送る
- JMeter単体で事前に動作確認後、DLT環境でテストを実施する
終わりに
AWS DLTをプロキシ経由で利用する方法は事例が少ないため、今回の記事が同じ課題を抱えるエンジニアの役に立てば幸いです!
- AWS は、米国その他の諸国における Amazon.com, Inc. またはその関連会社の商標です。
- その他、記載されている会社名および商品・製品・サービス名は、各社の商標または登録商標です。