kawabatas技術ブログ

試してみたことを書いていきます

Mac から GCE 上の JMeter サーバークラスタを制御する

概要

GCE 上に JMeter サーバークラスタを作成し、ローカルの Mac 上の JMeter クライアントから制御し、結果を取得してみたのでメモ。

GoogleのJMeterのドキュメント(古い...)

JMeter Remote Testing

こんな感じのイメージ

f:id:kawabatas:20180829144830p:plain

手順

とりあえず、jmeter server を 2 つ用意してみる

GCE 上の jmeter server

jmeter-1

gcloud compute instances create jmeter-1 \
  --zone asia-northeast1-a \
  --image-family=centos-7 --image-project=centos-cloud \
  --machine-type n1-standard-1
# f1-micro ではメモリが足りず
gcloud compute ssh jmeter-1 --zone asia-northeast1-a \
  --ssh-flag="-L 24000:127.0.0.1:24000" \
  --ssh-flag="-R 25000:127.0.0.1:25000" \
  --ssh-flag="-L 26000:127.0.0.1:26000"
sudo yum -y update
sudo yum -y install wget
sudo yum -y install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64
java -version
# @see: https://jmeter.apache.org/download_jmeter.cgi
wget http://ftp.tsukuba.wide.ad.jp/software/apache//jmeter/binaries/apache-jmeter-4.0.tgz
tar xvzf apache-jmeter-4.0.tgz
mv apache-jmeter-4.0 ~/jmeter

jmeter の設定を変更

vi jmeter/bin/jmeter.properties

server_port=24000
server.rmi.localport=26000
# JMeter 4.0 から RMI で SSL を利用するのがデフォルトになったらしいが、cert key の設定が面倒だったので SSL を利用しない。https://jmeter.apache.org/usermanual/remote-test.html#setup_ssl
server.rmi.ssl.disable=true

起動

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

jmeter-2

gcloud compute ssh jmeter-2 --zone asia-northeast1-a \
  --ssh-flag="-L 24001:127.0.0.1:24001" \
  --ssh-flag="-R 25000:127.0.0.1:25000" \
  --ssh-flag="-L 26001:127.0.0.1:26001"

jmeter の設定を変更

vi jmeter/bin/jmeter.properties

server_port=24001
server.rmi.localport=26001
server.rmi.ssl.disable=true

ローカル Mac 上の jmeter クライアント

brew install jmeter
cp /usr/local/Cellar/jmeter/4.0/libexec/bin/jmeter.properties /usr/local/Cellar/jmeter/4.0/libexec/bin/jmeter.properties.org

vi /usr/local/Cellar/jmeter/4.0/libexec/bin/jmeter.properties

remote_hosts=127.0.0.1:24000,127.0.0.1:24001
client.rmi.localport=25000
mode=Statistical
server.rmi.ssl.disable=true

起動

/usr/local/Cellar/jmeter/4.0/libexec/bin/jmeter.sh -Djava.rmi.server.hostname=127.0.0.1

負荷試験実行

テストシナリオのファイルを開き、実行 -> 全て開始(リモート) で実行する。