JMeterのremoteサーバーをAzure仮想マシンで複数作って負荷テストする
大量リクエストの負荷テストシナリオを、Azure上に複数台のJMeterリモートサーバーを構築して実施した時の、手順を紹介します。
私自身が急いでテストする必要があった為、今回紹介するJMeterの負荷テスト環境は、複雑な設定不要で、すぐに作れます。
環境
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サーバに対して負荷をかけるイメージです。
この構成のメリット
- JMeterの環境すべてがAzureで完結している
- JMeterクライアントとサーバーを同じ仮想ネットワーク内に作れば、デフォルトで全ポート番号で通信可能(ファイアウォールを気にしなくていい)
- JMeterクライアントはWIndowsなので操作しやすい。。。 (慣れの問題?)
- 仮想マシンをコピーして、簡単にJMeterサーバーを増殖可能
この構成のデメリット
- 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上にすべての環境を作りました。
0 件のコメント:
コメントを投稿