1 拉取nameSrv镜像
docker pull rocketmqinc/rocketmq
2 创建namesrv数据存储路径
mkdir -p /docker/rocketmq/data/namesrv/logs /docker/rocketmq/data/namesrv/store
注:mkdir -p 可以创建多级目录
3 构建namesrv容器
docker run -d \ --name rmqnamesrv \ -p 9876:9876 \ -v /docker/rocketmq/data/namesrv/logs:/root/logs \ -v /docker/rocketmq/data/namesrv/store:/root/store \ -e "MAX_POSSIBLE_HEAP=100000000" \ rocketmqinc/rocketmq \ sh mqnamesrv -v容器目录和宿主机目录映射挂载
4 创建broker数据存储路径
mkdir -p /docker/rocketmq/data/broker/logs /docker/rocketmq/data/broker/store /docker/rocketmq/conf
5 vi进入到配置文件
vi /docker/rocketmq/conf/broker.conf
6 配置文件内容填充
# 所属集群名称,如果节点较多可以配置多个 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 = 192.168.56.104 # 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full diskMaxUsedSpaceRatio=95
说明:其中brokerIP1配置broker节点所在的ip
7 启动broker容器
docker run -d \ --name rmqbroker \ --link rmqnamesrv:namesrv \ -p 10911:10911 \ -p 10909:10909 \ -v /docker/rocketmq/data/broker/logs:/root/logs \ -v /docker/rocketmq/data/broker/store:/root/store \ -v /docker/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \ -e "NAMESRV_ADDR=192.168.56.104:9876" \ -e "MAX_POSSIBLE_HEAP=200000000" \ rocketmqinc/rocketmq \ sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
注: –link rmqnamesrv:namesrv | 和rmqnamesrv容器通信。只有在启动了namesrv的机器上才添加该参数,集群中的其他节点不需要添加该参数
集群中各broker节点只需要连接到相同的NAMESRV_ADDR并且在上面的配置文件中指定唯一的brokerId即可
8 拉取rocketmq-console
docker pull pangliang/rocketmq-console-ng
9 启动rocketMq-console容器
docker run -d \ --restart=always \ --name rmqadmin \ -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.56.104:9876 \ -Dcom.rocketmq.sendMessageWithVIPChannel=false" \ -p 9999:8080 \ pangliang/rocketmq-console-ng
此时访问:http://192/168.56.104:9999
如上即时发布了一个master的broker节点。需要往集群中添加其他的brokerji节点,只需要从第四部开始即可(需要拉取docker镜像)、修改响应的配置参数和启动参数即可
另外,在推荐一篇关于rocketMq介绍的博客: