JMeterのremoteサーバをAzure仮想マシンで複数作って負荷テストする

2019年3月20日水曜日

Azure JMeter

t f B! P L

JMeterのremoteサーバーをAzure仮想マシンで複数作って負荷テストする

大量リクエストの負荷テストシナリオを、Azure上に複数台のJMeterリモートサーバーを構築して実施した時の、手順を紹介します。

私自身が急いでテストする必要があった為、今回紹介するJMeterの負荷テスト環境は、複雑な設定不要で、すぐに作れます。

JMeterのremoteサーバーをAzure仮想マシンで複数作って負荷テストするイメージ

環境

Azure上に作る仮想マシンのOS、バージョン等について紹介します。

JMeterサーバー

OS
Ubuntu Server 18

※ メモリが少ないと、起動できるスレッド数が少なくなる為、最低でもメモリが 1.7G以上あるVMサイズを選んだ方がいいです

JMeterクライアント

OS
Windows 10

※ クライアントはOSとJMeterの操作が出来ればいいので、最低限のスペックでOKです。

インストールするパッケージ (JMeterクライアント/JMeterサーバー共通)

クライアント/サーバー共通で、以下のパッケージ(ソフト)をインストールします。

OS
Java 1.8
Apache JMeter 5.0

構成イメージ

今回作るJMeterでのテスト環境は、以下のようなイメージとなります。
Azure上にJMeterクライアント/サーバーを仮想マシンで作成して、テスト対象のWebサーバに対して負荷をかけるイメージです。

enter image description here

この構成のメリット

  1. JMeterの環境すべてがAzureで完結している
  2. JMeterクライアントとサーバーを同じ仮想ネットワーク内に作れば、デフォルトで全ポート番号で通信可能(ファイアウォールを気にしなくていい)
  3. JMeterクライアントはWIndowsなので操作しやすい。。。 (慣れの問題?)
  4. 仮想マシンをコピーして、簡単にJMeterサーバーを増殖可能

この構成のデメリット

  1. Azureへの投資(課金)が必要

Windowsの使用料まで必要なので、長期間使い続けると、それなりの課金額になる為、短期間でテストしましょう!

JMeterサーバの構築

Azureのポータルから、仮想マシンを作成します。
設定内容は以下を参考にして下さい。

項目 内容
イメージ Ubuntu Server 18
サイズ 1.7G以上のメモリを持つサイズ
ネットワーク SSH(22)ポートを空ける

その他の項目は適当で。。。
仮想マシンの作成が終わったら、SSHでログインします。

username@vm-name:~$ 

Javaのインストール

まずは、以下のコマンドで、リポジトリを最新します。

sudo apt-get update

Java 1.8 (OpenJDK)をインストールします。

sudo apt install openjdk-8-jre

インストールが完了したら、バージョンを確認するコマンドを入力します。
バージョンが "1.8.x_xxx"などと表示されればOKです。

$ java -version

openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.18.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

JMeterのインストール

今回は JMeter 5.0をインストールします。
以下のURLからパッケージをダウンロードし、tarで解凍します。

$ wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//jmeter/binaries/apache-jmeter-5.0.tgz
$ tar xvzf apache-jmeter-5.0.tgz

もし、違うバージョンのJMeterをインストールしたい場合は、こちらのURLに各バージョンのダウンロードリンクがあります。

JMeterの起動を確認

以下のコマンドを入力して、バージョンが表示されればOKです。

$ ~/apache-jmeter-5.0/bin/jmeter -v

SSLの無効化

デフォルトでは、JMeterサーバ ⇔ クライアント間の通信は、SSLで暗号化する設定になっています。
設定が少し面倒で、とにかく早く環境が構築したかったので、今回はSSLを無効化します。

viエディタで、JMeterの設定ファイルを開きます。

$ vi ~/apache-jmeter-5.0/bin/jmeter.properties

SSL無効化の設定は、330行目付近にserver.rmi.ssl.disableという設定がいます。
こちらの設定のコメントを解除して、設定値にtrueを指定します。

# Set this if you don't want to use SSL for RMI
server.rmi.ssl.disable=true
↑ コメントアウトを解除して true を設定

JMeterサーバーの起動

以下のコマンドを入力して、JMeterサーバーのサービスを立ち上げます。

$ ~/apache-jmeter-5.0/bin/jmeter-server

※このサービスを起動しておかないと、テストできないので、テストを開始する前にサービスを立ち上げるようにして下さい。

クライアント側の設定

今度は、JMeterクライアント(Windows10)をセットアップします。

Windowsの仮想マシンを作成

Azureのポータルから、Windows10の仮想マシンを作成します。
設定内容は以下を参考にして下さい。

項目 内容
イメージ Windows10 Pro
サイズ 4G以上あった方が快適かも…
ネットワーク RDP(3389)ポートを空ける

Javaのインストール

以下のページから、Java8をダウンロードしてインストールします。
https://java.com/ja/download/

JMeterのインストール

JMeterのダウンロードページにアクセスし、apache-jmeter-5.0.zipと書かれたファイルをダウンロードします。
https://jmeter.apache.org/download_jmeter.cgi

ダウンロード後、任意のフォルダに解凍しておきます。

JMeterの設定

JMeterを解凍したフォルダの、bin/JMeter.pppをエディタ開きます。
remoto hostsの部分に、作成したJMeterサーバのホスト名を設定し、ポート番号には1099を指定します。
複数台サーバを作成した場合は、カンマ区切りで設定します。

テスト計画

JMeterのテスト計画(.jmx)は、いつも通り作ります。
1点、テスト対象にかかる負荷(スレッド数)には気を配る必要があります。
例えば、スレッド数に 100を設定し、JMeterサーバが 5台ある場合、実際テスト対象にかかる負荷は、スレッド数(100) × JMeterサーバの数(5) = 500となります。
※ 設定したスレッド数を、サーバの台数で分散させるのではなく、単純な掛け算になる事に注意が必要です。

さいごに

今回なぜJMeterのテスト環境(クライアント・サーバー)の全てをAzure上に作ったのかの話です。

JMeterのクライアントとJMeterサーバーは、負荷テストの実行中は、相互に通信を行います。
その為、JMeterサーバーのポートの開放だけでなく、JMeterクライアント側もポートの開放が必要になります。
そうなると、JMeterのクライアントとサーバーが離れた環境にあると、途中のFireWallの設定などが必要になり、それが面倒だったので、今回Azure上にすべての環境を作りました。

スポンサーリンク

QooQ