Apache JMeter で、FW の内側の JMeter クライアントから AWS EC2 上の JMeter サーバにアクセスして負荷試験を行う方法

セキュリティグループ

EC2 上のセキュリティグループ(Security Group)は、ポート 22 だけ開ければ OK

SSH TCP 22 0.0.0.0/32

JMeter サーバの設定

cd apache-jmeter-3.0/bin
vi ./jmeter.properties

以下の 2つ行をそれぞれ見つけて修正する。

server_port=10991             # クライアントの JMeter から接続するためのサーバ側ポート、クライアント→サーバ
server.rmi.localport=40001    # サーバ側からクライアントへ RMI 通信するためのポート、サーバ→クライアント

※この 2つのポートは、JMeter のクライアントから SSH で JMeter サーバ間へトンネルをはるときに設定するので、実際はポート 22 上を通ってこれらのポートが接続される。

3台のリモートサーバをコントロールしたい場合は、上と同様に 2番機、3番機でそれぞれ以下のように修正する

server_port=10992             # クライアントの JMeter から接続するためのサーバ側ポート、クライアント→サーバ
server.rmi.localport=40002    # サーバ側からクライアントへ RMI 通信するためのポート、サーバ→クライアント
server_port=10993             # クライアントの JMeter から接続するためのサーバ側ポート、クライアント→サーバ
server.rmi.localport=40003    # サーバ側からクライアントへ RMI 通信するためのポート、サーバ→クライアント

JMeter サーバの実行

./jmeter-server -Djava.rmi.server.hostname=127.0.0.1

JMeter クライアントの設定

cd apache-jmeter-3.0/bin
vi ./jmeter.properties

以下の2つ行をそれぞれ見つけて修正する

# JMeter クライアントが使用する JMeter サーバの情報
remote_hosts=localhost:10991,localhost:10992,localhost:10993

# JMeter クライアントが RMI 通信で受信に使用するポート
client.rmi.localport=5000

※この 2つのポートは、JMeter のクライアントから SSH で JMeter サーバ間へトンネルをはるときに設定するので、実際はポート 22 上を通ってこれらのポートが接続される。

SSH のトンネルのはり方

~/.ssh/config を作成または編集する。

vi ~/.ssh/config

以下を追加

Host jmeter-1
  HostName        xxx.xxx.xxx.xxx # リモート側の JMeter IP アドレス
  IdentityFile    ~/.ssh/id_rsa
  User            root
  LocalForward    10991 localhost:10991
  LocalForward    10992 localhost:10992
  LocalForward    10993 localhost:10993
  LocalForward    40001 localhost:40001
  LocalForward    40002 localhost:40002
  LocalForward    40003 localhost:40003
  RemoteForward   5000  localhost:5000

クライアントから jmeter-1 に接続してトンネルをはる(jmeter-2、jmeter-3 用のポートフォワーディングも設定されているので JMeter の 2番機や 3番機に接続する必要はない)。

ssh jmeter-1

JMeter クライアントの実行

./jmeter.sh -Djava.rmi.server.hostname=127.0.0.1