web-dev-qa-db-ja.com

接続の問題があるAWSでの分散テスト用のJMeterのセットアップ

JMeterを使用して分散テストを行う必要があります。目的は、1つのローカルサーバーによって制御されるAWSの複数のリモートサーバーが、AWSの別のサーバーにファイルダウンロードリクエストを送信することです。

AWSで異なるサーバーを設定するにはどうすればよいですか?
どのようにリモートで接続できますか?

誰かがそれを行う方法に関するステップバイステップの指示を提供できますか?
いくつかのことを試しましたが、ネットワーク間で接続の問題が発生し続けています。

31
null

同様のタスクがあり、多くの問題にも遭遇しました。ここに、プロセス全体の詳細と、発生した問題を解決するために行ったことを示します。それが役に立てば幸い。

世界のさまざまな地域にある5つのサーバーからリクエストを送信する必要がありました。そのため、AWSでそれぞれ異なるリージョンに5つのマイクロインスタンスを起動しました。地域をできるだけ地理的に離れるように選択しました。

リモート(サーバー)JMeters構成

各インスタンスの設定方法は次のとおりです。

  1. インストール済みのJava:

    $ Sudo apt-get update
    $ Sudo apt-get install default-jre 
    
  2. インストールされたJMeter:

    $ mkdir jmeter
    $ cd jmeter;
    $ wget ftp://Apache.mirrors.pair.com//jmeter/binaries/Apache-jmeter-2.9.tgz
    $ gunzip Apache-jmeter-2.9.tgz;tar xvf Apache-jmeter-2.9.tar
    
  3. JMeterインストールのjmeter.propertiesフォルダーの/binファイルを編集し、server.rmi.localport設定を含む行のコメントを解除しました。ポートを50000に変更しました。

    server.rmi.localport=50000
    
  4. JMeterサーバーを開始しました。サーバーがリッスンしていると報告するアドレスとポートが正しいことを確認してください。

    $ cd ~/jmeter/Apache-jmeter-2.9/bin
    $ vi jmeter-server
    

ローカル(クライアント)JMeter設定

次に、ローカルクライアントマシン上のこれらのインスタンスでテストをリモートで実行するようにJMeterを設定します。

  • サーバーで実行されていたのと同じバージョンのJMeterを使用するようにしました。インストール済みJavaおよび上記のJMeter。
  • JMeterインストールのbinフォルダーにあるjmeter.propertiesファイルを編集して、リモートテストを有効にしました。パラメーターremote_hostsは、接続先のリモートサーバーのパブリックDNSで設定する必要がありました。
  • remote_hosts=54.x.x.x,54.x.x.x,54.x.x.x,54.x.x.x,54.x.x.x

これで、指定したリモートサーバーの一部またはすべてでテストを実行するようにクライアントJMeterインスタンスに指示することができました。

問題と解決策

発生した問題とその解決方法は次のとおりです。

  1. クライアントは次のエラーで失敗しました。

    エラー-jmeter.engine.ClientJMeterEngine:Java.rmi.ConnectException:接続-ホストへの拒否:127.0.0.1

    これは、サーバーのホストがAmazon NATのためにプライベートIPアドレスをアドレスとして返すためでした。サーバーの起動時にRMI_Host_DEFスクリプトに含まれるパラメーター/usr/local/jmeter/bin/jmeter-serverを設定することにより、これを修正しました。

    RMI_Host_DEF=-Djava.rmi.server.hostname=54.xx.xx.xx
    

    これで、AWSインスタンスがサーバーの外部IPを返し、テストを開始できました。

  2. サーバーノードが結果を返そうとしてクライアントに接続しようとすると、サーバーはローカルマシンの外部IPアドレスに接続しようとしました。しかし、接続拒否エラーを投げました:

    2013/05/16 12:23:37エラー-jmeter.samplers.RemoteListenerWrapper:testStarted(Host)Java.rmi.ConnectException:ホストへの接続が拒否されました:xxx.xxx.xxx.xx;

    クライアント側でリバーストンネルを設定することにより、この問題を解決しました。

    • 最初に、JMeterインストールのjmeter.propertiesフォルダーにある/binファイルを編集し、client.rmi.localport設定を含む行のコメントを外しました。ポートを60000に変更しました。

      client.rmi.localport=60000
      
    • 次に、SSHを使用して各サーバーに接続し、クライアントのポート60000へのリバーストンネルをセットアップしました。

      $ ssh -i ~/.ssh/54-x-x-x.us-east.pem -R 60000:localhost:60000 ubuntu@54.x.x.x
      

    JMeterサーバーはテスト結果をクライアントに配信できる必要があるため、これらの各セッションを開いたままにしました。

    • 次に、JVM_ARGSフォルダーのjmeter.shファイルで、クライアントの/bin環境変数を設定します。

      export JVM_ARGS="-Djava.rmi.server.hostname=localhost"
      

    これにより、JMeterは結果を配信するためにlocalhost:60000に接続するようサーバーに指示します。これは最終的にクライアントにトンネリングされます。

  3. サーバーへのSSH接続は、少しの間アイドル状態になった後もドロップし続けました。それを防ぐために、接続を維持するためにサーバーにヌルパケットを送信する前に60秒待機するようにクライアントに指示する各SSHトンネル設定にパラメーターを追加しました。

    $ ssh -i ~/.ssh/54-x-x-x.us-east.pem -o ServerAliveInterval=60 -R 60000:localhost:60000 ubuntu@54.x.x.x
    

.ssh/config必要なすべてのSSH設定のバージョン:

 Host 54.x.x.x
   HostName 54.x.x.x
   Port 22
   User ubuntu
   ServerAliveInterval 60
   RemoteForward 127.0.0.1:60000 127.0.0.1:60000
   IdentityFile  ~/.ssh/54-x-x-x.us-east.pem
   IdentitiesOnly yes

これを設定したら、ssh 54.x.x.xを使用してください。 )

58

私はこれをopenstackで試しましたが、同じ問題が見つかりました... jmeterリモーティングドキュメントが必要な手順の半分しかカバーしていない理由はわかりません。あなたはそれを行うことができますトンネルなしでまたはプロパティファイルに触れる。

あなたが必要

  • パブリックIPをアドバタイズするすべてのノード-AWS/OSでは、これはデフォルトでプライベートIPになります
  • デフォルトで1099に設定されているRMIポートの入力ルール-これを使用します
  • RMI "local"ポートの入力規則で、デフォルトは動的です。以下では、クライアントに4001、サーバーに4000を使用します。ポートは同じでもかまいませんが、プロパティが異なることに注意してください。

クライアントとしてワークステーションを使用している場合、おそらくトンネルが必要です。上記 Archana Aggarwal にはトンネルに関する良いヒントがあります。

リモートサーバー

セットする Java.rmi.server.hostnameおよびserver.rmi.localportインラインまたはプロパティファイル。

jmeter-server -Djava.rmi.server.hostname=publicip -Dserver.rmi.localport=4000

クライアント上の卑劣なサーバー

クライアントと同じマシンで実行することもできます。わかりやすくするために、Java.rmi.server.hostnameが左server.rmi.localport動的として

jmeter-server -Djava.rmi.server.hostname=localip

クライアント

セットする Java.rmi.server.hostnameおよびclient.rmi.localportインラインまたはプロパティファイル。使用する -Rなどのように:

jmeter -n -t Test.jmx -Rremotepublicip1,remotepublicip2 -Djava.rmi.server.hostname=clientpublicip -Dclient.rmi.localport=4001 -GmypropA=1 -GmypropB=2 -lresults.jtl
5
KCD

AWSでJMeterを使用した分散テストに行くときは、dockerを使用することをお勧めします。これは、jmeterテストインフラストラクチャを非常に迅速にサポートするのに役立ちます。これにより、同じバージョンのJavaとjmeterがJMeter分散テストで非常に重要なAmazonのすべてのインスタンスにインストールされていることを確認できます。

以下を確認してください-以下のプロパティを設定し、ポートがjmeter-serverに対して開いていること。 [正確に1099,50000である必要はありません]

server.rmi.localport=50000
server_port=1099
Java.rmi.server.hostname=SERVER_IP

クライアント用

client.rmi.localport=60000

enter image description here

Java.rmi.server.hostname = SERVER_IP-awsインスタンスのコンテナはdockerネットワークで独自のIPアドレスを持つため、このステップは非常に重要です-したがって、マスターとスレーブは通信します。したがって、このプロパティを明示的に設定します

詳細:

http://www.testautomationguru.com/jmeter-distributed-load-testing-using-docker-in-aws/

0
vins