テスト実施#ex1_構成別テストデータの取得方法とSSHポートフォワード

負荷テストを行うときには、各サーバのデータを残しておく必要があります。テスト条件のエビデンスとなる設定ファイル、テスト時のサーバ状況を確認するためのアクセスログやsarファイルなどです。場合によっては、定期的にプロセス状況などの確認コマンドの実行結果などもあります。

負荷テスト対象サーバは複数台あることが多いため、1台1台対応していると非常に手間がかかります。そこで、JMeterマスタを起点に、各サーバへscpやsshを行うことで効率化を図りたくなります。

SSHポートフォワードを利用することで、構成別の取得方法の差異を吸収することができるため、この記事では、構成別のデータ取得方法を紹介します。

構成別テストデータの取得方法

 グローバルIP経由

GIP経由で接続

GIP経由で接続

図のように、対象サーバがグローバルIPを持っており直接アクセス可能な場合は大きな問題はありません。ファイアウォールで接続許可を入れ、JMeterから直接sshやscpの実行を行います。

踏み台サーバ経由

踏み台経由で接続

踏み台経由で接続

グローバルIPを持っておらず、踏み台サーバ経由でしかアクセスできない場合は少し困った状況になります。JMeterマスタから直接アクセスできないため、踏み台サーバにログインし、そこからデータ取得を行います。

データは踏み台サーバにたまっていくので、最終的にはJMeterマスタへ再度データ転送を行うことになります。データ転送が2度手間になり、手順も煩雑になるためあまり好ましくありません。

踏み台サーバへ保存してもよいですが、踏み台サーバ有無によって管理方法が変更になるのはいまいちです。

踏み台サーバ経由 SSHポートフォワード利用

ポートフォワードで接続

ポートフォワードで接続

SSHポートフォワードを使うことで、踏み台サーバを意識する必要がなくなります。JMeterからターゲットサーバへ直接scpやsshが可能になるのです。

SSHポートフォワード設定

実際にSSHポートフォワードの設定方法の確認をしていきます。

ターゲット(WEB)サーバの設定

ターゲットサーバへは、接続元からsshをするために公開鍵の設定を行います。接続元で作成した公開鍵をターゲットサーバへ登録します。

mkdir ~/.ssh
chmod 700 ~/.ssh
vi ~/.ssh/authorized_keys
--------------------------
接続元の公開鍵を追加
--------------------------
chmod 600 ~/.ssh/authorized_keys

ここで設定する公開鍵は踏み台のものではなく、接続元のものを設定します。

踏み台サーバの設定

踏み台サーバにも、接続元からsshをするために公開鍵の設定を行います。接続元で作成した公開鍵をターゲットサーバへ登録します。

mkdir ~/.ssh
chmod 700 ~/.ssh
vi ~/.ssh/authorized_keys
--------------------------
接続元の公開鍵を追加
--------------------------
chmod 600 ~/.ssh/authorized_keys

接続元(JMeter)の設定

今回はシンプルに「ssh bastion」で踏み台サーバへ、「ssh target」でターゲットサーバへログインさせてみます。

~/.ssh/config の設定

「~/.ssh/config」へ設定を加えます。これを入れることで、接続時にユーザーやポートの指定が不要になります。

また、踏み台サーバへログインしたさいに、ターゲットサーバへのポートフォワードを行うような設定を記載しておきます。

vi ~/.ssh/config

Host bastion
  HostName     踏み台のIPアドレス
  User         踏み台への接続ユーザ
  Port         22
  IdentityFile ~/.ssh/id_rsa
  LocalForward 10022 ターゲットのIPアドレス:22

Host target
  HostName     localhost
  User         ターゲットへの接続ユーザ
  Port         10022
  IdentityFile ~/.ssh/id_rsa

踏み台サーバへの接続確認

下記コマンドで踏み台サーバへ接続可能か確認します。

ssh bastion

接続できない場合は、これまでの設定の見直しをしてください。

ターゲットサーバへの接続確認

次に踏み台サーバへの接続は維持したまま、別のプロンプトを開きターゲットサーバへ接続してみます。

ssh target

ssh: connect to host localhost port 10022: Connection refused

のようなエラーが出た場合は、ポートフォワードがうまくいっていません。踏み台サーバへログインしているかを確認しましょう。

ポートフォワード設定

今までの方法では、踏み台サーバからログアウトすると、ターゲットサーバからも強制的にログアウトしてしまいます。別窓を開く必要もあるので、踏み台サーバへのログインをバックグラウンドで実行させましょう。

ssh -fN4 bastion

正常に実行できたら、ターゲットサーバへ接続してみましょう。

ssh target

接続できれば、「ssh target 'コマンド'」や「scp target:/tmp/ファイル /tmp/」のように、ssh経由のコマンド実行やscpが実行が可能になります。

まとめ

この記事では、構成別のテストデータ取得方法についてまとめました。

SSHポートフォワードを利用することで、踏み台サーバの有無にかかわらず、同一の方法でデータの取得が可能になります。負荷テストデータの取得は重要なタスクになってくるので、ご活用ください。

コメントは受け付けていません。