I'm trying to implement Jmeter distributed framework with Docker.When I run server on slave machine it is throwing me the error:
docker run \
-dit \
-e HOST_IP=‘<MyHostIP>’ \
-p 6000:6000 \
-p 1099:1099 \
-p 3000:3000 \
-v "${volume_path}":${jmeter_path} \
--rm \
jmeter \
-n -s \
-Dclient.rmi.localport=3000 \
-Dserver.rmi.localport=6000 \
-Djava.rmi.server.hostname=MyHostIP \
-Jserver.rmi.ssl.keystore.file=${jmeter_path}/rmi_keystore.jks \
-j ${jmeter_path}/server/slave_${timestamp}.log
I'm getting following error on running above command
java.rmi.server.ExportException: Listen failed on port: 6000; nested exception is:
java.io.IOException: Could not bind to /MY IP using port 6000
at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:348) ~[?:1.8.0_275]
at sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:254) ~[?:1.8.0_275]
at sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:412) ~[?:1.8.0_275]
at sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147) ~[?:1.8.0_275]
at sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:237) ~[?:1.8.0_275]
at java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:383) ~[?:1.8.0_275]
at java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:346) ~[?:1.8.0_275]
at java.rmi.server.UnicastRemoteObject.<init>(UnicastRemoteObject.java:225) ~[?:1.8.0_275]
at org.apache.jmeter.engine.RemoteJMeterEngineImpl.<init>(RemoteJMeterEngineImpl.java:66) ~[ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.engine.RemoteJMeterEngineImpl.startServer(RemoteJMeterEngineImpl.java:72) ~[ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.JMeter.start(JMeter.java:524) [ApacheJMeter_core.jar:5.3]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_275]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_275]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_275]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_275]
at org.apache.jmeter.NewDriver.main(NewDriver.java:252) [ApacheJMeter.jar:5.3]
Caused by: java.io.IOException: Could not bind to /MY IP using port 6000
at org.apache.jmeter.rmi.SSLRMIServerSocketFactory.createServerSocket(SSLRMIServerSocketFactory.java:138) ~[ApacheJMeter_core.jar:5.3]
at sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:670) ~[?:1.8.0_275]
at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:335) ~[?:1.8.0_275]
... 15 more
Caused by: java.net.BindException: Address not available (Bind failed)
at java.net.PlainSocketImpl.socketBind(Native Method) ~[?:1.8.0_275]
I've checked netstat,6000 port is nowhere used. And the port opening is also done for 1099,6000,3000.
I have built my image as per this blog. https://www.blazemeter.com/blog/jmeter-distributed-testing-with-docker I was able to build JMeter distributed within a single host. However, when I'm trying to do it on different hosts, it's throwing me errors.