一、安装namesrv
-
查找rocketmq镜像
docker search rocketmq
-
选取stars最多的rocketmqinc镜像下载
docker pull rocketmqinc/rocketmq
-
创建namesrv数据挂载文件夹
mkdir -p /opt/rocketmq/data/namesrv/logs mkdir -p /opt/rocketmq/data/namesrv/store mkdir -p /root/logs
-
启动namesrv
docker run -d --restart=always --name rmqnamesrv --privileged=true -p 9876:9876 -v /opt/rocketmq/data/namesrv/logs:/root/logs -v /opt/rocketmq/data/namesrv/store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv
参数意义:
参数 意义 -d 以守护进程的方式启动 –restart=always docker容器重启的时候自动重启 –name rmqnamesrv 容器名称设置为rmqnamesrv -p 9876:9876 把容器内的端口9876挂载到宿主机9876上面 -v /opt/rocketmq/data/namesrv/logs:/root/logs 目录挂载 -v /opt/rocketmq/data/namesrv/store:/root/store 目录挂载 -e “MAX_POSSIBLE_HEAP=100000000” 设置容器的最大堆内存为100000000 rocketmqinc/rocketmq 使用的镜像名称 sh mqnamesrv 启动mqnamesrv服务
二、安装broker
-
创建broker挂载目录文件夹
mkdir -p /opt/rocketmq/data/broker/logs mkdir -p /opt/rocketmq/data/broker/store mkdir -p /opt/rocketmq/data/broker/config
-
新增broker.conf文件(config文件夹下)
touch broker.conf vi broker.conf 内容如下: # 所属集群名称,如果节点较多可以配置多个 brokerClusterName = DefaultCluster #broker名称,master和slave使用相同的名称,表明他们的主从关系 brokerName = broker-a #0表示Master,大于0表示不同的 slave brokerId = 0 #表示几点做消息删除动作,默认是凌晨4点 deleteWhen = 04 #在磁盘上保留消息的时长,单位是小时 fileReservedTime = 48 #有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机 制; brokerRole = ASYNC_MASTER #刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后 才返回成功状态,ASYNC_FLUSH不需要; flushDiskType = ASYNC_FLUSH # 设置broker节点所在服务器的ip地址 brokerIP1 = 172.18.8.114 #剩余磁盘比例 diskMaxUsedSpaceRatio=99
-
启动broker
docker run -d --restart=always --name rmqbroker --link rmqnamesrv:namesrv -p 10911:10911 -p 10909:10909 --privileged=true -v /opt/rocketmq/data/broker/logs:/root/logs -v /opt/rocketmq/data/broker/store:/root/store -v /opt/rocketmq/data/broker/config/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
参数意义:
参数 意义 -d 以守护进程的方式启动 –restart=always docker重启时容器自动重启 –name rmqbroker 容器名称设置成rmbroker –link rmqnamesrv:namesrv 和rmqnamesrv通信,单向 -p 10911:10911 把容器内10911端口挂载到宿主机10911上 -p 10909:10909 把容器内10909端口挂载到宿主机10909上 -v /opt/rocketmq/data/broker/logs:/root/logs 目录挂载 -e “NAMESRV_ADDR=namesrv:9876” 指定namesrv的地址为本机的namesrv的IP:9876 -e “MAX_POSSIBLE_HEAP=200000000” 指定broker的最大堆内存 rocketmqinc/rocketmq 使用的镜像名称 sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf 指定配置文件启动broker
三、安装rocketmq-console
-
查寻rocketmq-console
docker search rocketmq-console
-
选取stars最多的镜像,然后下载
docker pull styletang/rocketmq-console-ng
-
启动rocketmq-console
docker run -d --restart=always --name rmqadmin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.18.8.114:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 18080:8080 styletang/rocketmq-console-ng
四、完成
- 访问:http://172.18.8.114:18080/
五、遇到的问题
-
启动namesrv报错:
docker:Error response from daemon: driver failed programming external connectivity on endpoint node (7e1282d78b546d89e5382q23w434e66w64c725f4ce2454ee08b00cace0): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3000 -j DNAT --to-destination 172.17.0.8:9876 ! -i docker0: iptables: No chain/target/match by that name.
-
解决:
重启dockersystemctl restart docker