Hi! I am trying to set up a distributed testing config when the controller host
(Master-client) is on the main network and the remote (slave-server) is behind
a NAT.
Just to share my half day experiments (‘cos i did not find a clear explanation
on the Net) and ask a couple of questions:
1. First of all I dont use SSL and disable it on both types of hosts
(master/slave)
in jmeter.properties: server.rmi.ssl.disable=true //or jmeter [-n -t
jmeter.jmx -RXXX] -Jserver.rmi.ssl.disable=true’.
2. On the remote (slave-server), which is behind NAT, RMI should be told its
external IP (otherwise it publishes its internal NAT IP)
in jmeter-server: RMI_HOST_DEF=-Djava.rmi.server.hostname=EXTERNAL_IP
3. Ports part in jmeter.properties (setup):
- on the controller (master-client) we setup host:port of the remote
(slave-server) in remote_hosts=
- on the controller (master-client) we set port client.rmi.localport=NNNN (will
use NNNN++1 iptables block ingress)
- on the remote (slave-server) we set server.rmi.localport=MMMM
4. Comments on ports (interaction):
- «Main» port of the communication (which i dont change) by default is 1099 and
used to listen by RMI registry on the remote (slave-server) host.
- After the first step of connection from controller_master_client:RANDOM to
remote_slave_server:1099 the remote (slave-server) announces (tells) its port
for farther communication MMMM (remote function calls,
server.rmi.localport=MMMM). So farther calls do look like so: from
controller_master_client:RANDOM to remote_slave_server:MMMM.
- So for the remote (slave-server) NAT there should be farwarded
(published,exposed) only two ports 1099 and MMMM
- At this point the Test plan is already sent to the remote (slave-server) and
executed
- Also, while communicating, the controller (master-client) announces (tells)
its port for backward traffic (remote Jmeter Listeners,
client.rmi.localport=NNNN).
So the traffic is: from remote_slave_server:RANDOM to
controller_master_client:NNNN++1
(NNNN multiple ports starting from NNNN+1 and incrementing in my case those
were two)
Issues and my ask for help:
According to docs the default 1099 port can be changed by the server_port in
jmeter.properties.
- What is the role of server.rmi.port (on either hosts)?
* I can assume that it is used on the controller (master-client) side to
override default port when it’s not specified in remote_hosts?
* Or server_port is internal port for communication with RMI service? And the
server.rmi.port is the actual main external port for remote (slave-server)?
(this statment does not agree with docs)
And the last: My CentOS firewalld did block the NNNN+1 port incoming
connections untill I systemctl stop’ed it. Why? (CentOS 8 from the box)
Thanx!
--
Aki Shidary