目前使用docker 安装了rocketmq的nameserver和broker 。
docker run -d -p 9876:9876 --name rmqserver foxiswho/rocketmq:server-4.5.1
docker run -d -p 10911:10911 -p 10909:10909\
--name rmqbroker --link rmqserver:namesrv\
-e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Duser.home=/opt"\
-e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m"\
foxiswho/rocketmq:broker-4.5.1
修改配置文件: /etc/rocketmq/broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = 192.168.228.130 //指定虚拟机的ip,虚拟机网络用的是NAT模式
docker run -d --name rmqconsole -p 8180:8080 --link rmqserver:namesrv -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -t styletang/rocketmq-console-ng
现在的问题是,如果brokerIP1指定虚拟机的IP,那rocketmq-console无法连接到宿主机的10911端口,如果brokerIP1指定docker内部ip(172.17.0.3),那java客户端连不上rocketmq。
java客户端连不上rocketmq的报错
org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:676)
rocketmq-console无法连接到宿主机的10911端口错误信息
java.lang.RuntimeException: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to 192.168.228.130:10911 failed
at com.google.common.base.Throwables.propagate(Throwables.java:160)
at org.apache.rocketmq.console.service.impl.ClusterServiceImpl.list(ClusterServiceImpl.java:63)
at org.apache.rocketmq.console.controller.ClusterController.list(ClusterController.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
此问题,目前还未解决,请教各位有什么解决方案?
ps:修改brokerIP1后,不通过docker部署console,直接通过本地启动一个console是可以的。现在就想试着解决docker上面的问题。