> 文章列表 > 常用环境部署(七)——Docker安装RocketMQ

常用环境部署(七)——Docker安装RocketMQ

常用环境部署(七)——Docker安装RocketMQ

1、创建namesrv服务

(1)拉取镜像

docker pull rocketmqinc/rocketmq

(2)创建一个数据目录

即创建一个namesrv数据存储路径

mkdir -p /docker/rocketmq/nameserver/logs /docker/rocketmq/nameserver/store

(3)构建namesrv容器

docker run -d --restart=always --name rmqnamesrv --privileged=true -p 9876:9876  -v /docker/rocketmq/nameserver/logs:/root/logs -v /docker/rocketmq/nameserver/store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv

 (4)参数说明

参数 说明
-d 以守护进程的方式启动
- -restart=always docker重启时候容器自动重启
- -name rmqnamesrv 把容器的名字设置为rmqnamesrv
-p 9876:9876 把容器内的端口9876挂载到宿主机9876上面
-v /docker/rocketmq/nameserver/logs:/root/logs 目录挂载
-v /docker/rocketmq/nameserver/store 目录挂载
rmqnamesrv 容器的名字
-e “MAX_POSSIBLE_HEAP=100000000” 设置容器的最大堆内存为100000000
rocketmqinc/rocketmq 使用的镜像名称
sh mqnamesrv 启动namesrv服务

2、创建broker节点 

(1)创建broker.conf配置文件

我的目录是/opt/docker/rocketmq/broker.conf,文件内容如下:

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
namesrvAddr = 127.0.0.1:9876
brokerIP1 = 主机的IP

注意:brokerIP1中的IP一定要大写

(2)构建broker容器

 docker run -d --restart=always --name rmqbroker --link rmqnamesrv:namesrv -p 10911:10911 -p 10909:10909 --privileged=true -v /docker/rocketmq/data/broker/logs:/root/logs -v /docker/rocketmq/data/broker/store:/root/store -v /docker/rocketmq/conf/broker.conf:/opt/docker/rocketmq/broker.conf -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/docker/rocketmq/broker.conf

 (3)参数说明

参数 说明
-d 以守护进程的方式启动
- -restart=always docker重启时候容器自动重启
- -name rmqbroker 把容器的名字设置为rmqbroker
- --link rmqnamesrv:namesrv 和rmqnamesrv容器通信
-p 9876:9876 把容器内的端口9876挂载到宿主机9876上面
-p 10909:10909 把容器的vip通道端口挂载到宿主机
-e “NAMESRV_ADDR=namesrv:9876” 指定namesrv的地址为本机namesrv的ip地址:9876
-e “MAX_POSSIBLE_HEAP=200000000” rocketmqinc/rocketmq sh mqbroker 指定broker服务的最大堆内存
rocketmqinc/rocketmq 使用的镜像名称
sh mqbroker -c /opt/docker/rocketmq/broker.conf 指定配置文件启动broker节点

 (4)注意事项

a、如果报下图错误,则需要重新启动docker

systemctl restart docker

b、如果遇到下图错误

解决方法一:

在编写borker.conf文件的时候,使用的不是vim命令。使用的时候centos的文本编辑器编写的。删除掉之后,通过vim命令重新编写。保存后,可能会解决问题。博主不是这个原因,大家也可以参考解决方法二

解决方法二:

大家则需要将下图路径1修改为路径2,即路径1和路径2一样

 3、创建rockermq-console服务即安装控制台

(1)拉取镜像

docker pull pangliang/rocketmq-console-ng

(2)构建rockermq-console容器即启动控制台

docker run -d --restart=always --name rmqadmin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=自己的IP:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 pangliang/rocketmq-console-ng

(3)参数说明

参数 说明
-d 以守护进程的方式启动
-restart=always docker重启时候镜像自动重启
-name rmqadmin  把容器的名字设置为rmqadmin
-e “JAVA_OPTS=-Drocketmq.namesrv.addr=自己的IP:9876 设置namesrv服务的ip地址
Dcom.rocketmq.sendMessageWithVIPChannel=false 不使用VIP通道发送消息
–p 8080:8080 把容器内的端口8080挂载到宿主机上的9999端口

(4)访问控制台

打开浏览器访问 http://IP:8080

 (5)注意事项

需要关闭防火墙或者开放namesrv和broker端口,控制台服务将无法访问namesrv服务

异常信息如下:org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to failed

 关闭防火墙

systemctl stop firewalld.service

开放指定端口

firewall-cmd --permanent --zone=public --add-port=9876/tcp
firewall-cmd --permanent --zone=public --add-port=10911/tcp
# 立即生效
firewall-cmd --reload

 如果是云服务器的话还需要大家在安全组开放端口