AWS Advent Calendar 2014 - Qiita の14日目です。
シナリオを用いて行う負荷試験で JMeter を使う方は多いと思います。
JMeter の UI を手元の PC で操作できるようになると、作業が少しスムーズになって便利ですよね。
ここでは、自分の Mac を JMeter クライアント にして、EC2 上の JMeter サーバ を使う設定を行います。
EC2 上の JMeter サーバを動かすための手順
次の手順で設定を進めます。
- JMeter サーバ用 EC2 インスタンスを起動する
- JMeter サーバの設定、起動
- ローカルの PC で ssh ポートフォワーディングの設定を有効化
- JMeter クライアントの設定、起動
- JMeter サーバを使い終わったら、インスタンスを Stop または Terminate
※JMeter のダウンロードや設置については割愛します。
JMeter クライアントと JMeter サーバの連携
今回 JMeter クライアントは自分の Mac のため、ファイアウォールの裏側で実行されています。
EC2 上の JMeter サーバからリモートでテストの実行を行う場合、JMeter クライアントと JMeter サーバの間で JMeter と RMI の通信をそれぞれ行える必要があります。
自分の Mac は利用可能なグローバル IP アドレスを持っていません。
外部にある EC2 インスタンスからファイアウォールの裏側の自分の Mac に接続できない状況です。
そこで JMeter クライアントから SSH ポートフォワーディングを使って、JMeter クライアントとサーバを接続できるようにします。
次の各ポートを利用します。
JMeter サーバ用 EC2 インスタンスを起動する
Security Group は JMeter クライアントから ssh で接続できるようになっていれば OK です。
設定したポートを利用するために、JMeter クライアントとサーバの設定を変更していきます。
JMeter サーバの設定、起動
設定
bin/jmeter.properties を編集
server_port=24000 # JMeter 接続に使用するサーバ側のポート server.rmi.localhostname=127.0.0.1 # サーバ側で RMI 通信に使用するローカルホスト名 server.rmi.localport=26000 # サーバ側で RMI 通信に使用するポート
ローカルの PC で ssh ポートフォワーディングの設定を有効化
次の ssh コマンドで 3つのポートの設定を行います。
ssh -C -L 24000:localhost:24000 -R 25000:localhost:25000 -L 26000:localhost:26000 -N -f <username>@<server>
JMeter クライアント側の設定
bin/jmeter.properties を編集
remote_hosts=127.0.0.1:24000 # JMeter クライアントが使用する JMeter サーバの情報 client.rmi.localport=25000 # JMeter クライアントが RMI 通信で受信に使用するポート mode=Statistical # JMeter サーバからの結果の通知方法
接続できていれば、"Run" メニューの "Remote Start" に実行可能なサーバが表示されます。
複数の JMeter サーバに設定する
せっかくリモートの JMeter サーバを使えるようになったのだから複数利用したいですよね。
2台目以降の設定は次のように行います。
2台目の JMeter サーバでの設定
bin/jmeter.properties
server_port=24001 server.rmi.localhostname=127.0.0.1 server.rmi.localport=26001
JMeter クライアントの設定(JMeter サーバ2台の場合)
bin/jmeter.properties
remote_hosts=127.0.0.1:24000,127.0.0.1:24001 client.rmi.localport=25000 mode=Statistical
ssh ポートフォワーディングの設定(2台目用)
ssh -C -L 24001:localhost:24001 -R 25000:localhost:25000 -L 26001:localhost:26001 -N -f <username>@<server2>
client.rmi.localport は、25000 で共通で、server_port, server.rmi.localport はサーバ毎に変えていきます。
今回使用しているポート番号だと、JMeter サーバの台数が1,000台までになってしまうので、1,000台以上の JMeter サーバで構成する場合にはポート番号が重複しない設定をご検討下さい。
それでは、Enjoy testing!