- 上传软件包
![](https://i-blog.csdnimg.cn/blog_migrate/c866e5e3350aa0ea1e7b2774cf540c08.png)
- 利用docker导入镜像
![](https://i-blog.csdnimg.cn/blog_migrate/3de67ec57dde0904a4d0e6e97bdd598f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/019a002b760a96d59ac0cb39ea3e8cad.png)
- 检查镜像
![](https://i-blog.csdnimg.cn/blog_migrate/fcc05daeb9cea45951c41e0e31a5af66.png)
- 创建目录
![](https://i-blog.csdnimg.cn/blog_migrate/93648ed2cbc03088167999d1115ad954.png)
![](https://i-blog.csdnimg.cn/blog_migrate/110d1c310207e883c5f003ad8207e382.png)
![](https://i-blog.csdnimg.cn/blog_migrate/56b138c0109aa1a722cbf696d09d0857.png)
- 添加配置文件
![](https://i-blog.csdnimg.cn/blog_migrate/64f1e19a519eebc9f325ecf5e7a03d4a.png)
#所属集群名字
brokerClusterName=rocketmq-data100
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
brokerIP1=192.168.100.100
#nameServer地址,分号分割
namesrvAddr=192.168.100.100:9876;192.168.100.100:9877
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/data/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/data/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/data/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/data/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
![](https://i-blog.csdnimg.cn/blog_migrate/e86dcc609ae7e3d3c2fd9ac92b2d0942.png)
#所属集群名字
brokerClusterName=rocketmq-data100
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
brokerIP1=192.168.100.101
#nameServer地址,分号分割
namesrvAddr=192.168.100.100:9876;192.168.100.100:9877
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=11011
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/rocketmq/s_store
#commitLog 存储路径
storePathCommitLog=/data/rocketmq/s_store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/rocketmq/s_store/consumequeue
#消息索引存储路径
storePathIndex=/data/rocketmq/s_store/index
#checkpoint 文件存储路径
storeCheckpoint=/data/rocketmq/s_store/checkpoint
#abort 文件存储路径
abortFile=/data/rocketmq/s_store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
![](https://i-blog.csdnimg.cn/blog_migrate/db8b01f90c97ecc209dbbe021272e75c.png)
#所属集群名字
brokerClusterName=rocketmq-data100
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
brokerIP1=192.168.100.102
#nameServer地址,分号分割
namesrvAddr=192.168.100.100:9876;192.168.100.100:9877
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/data/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/data/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/data/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/data/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
![](https://i-blog.csdnimg.cn/blog_migrate/53b77c3fa71f756f124a0cd9d0961968.png)
#所属集群名字
brokerClusterName=rocketmq-data100
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
brokerIP1=192.168.100.103
#nameServer地址,分号分割
namesrvAddr=192.168.100.100:9876;192.168.100.100:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=11011
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/rocketmq/s_store
#commitLog 存储路径
storePathCommitLog=/data/rocketmq/s_store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/rocketmq/s_store/consumequeue
#消息索引存储路径
storePathIndex=/data/rocketmq/s_store/index
#checkpoint 文件存储路径
storeCheckpoint=/data/rocketmq/s_store/checkpoint
#abort 文件存储路径
abortFile=/data/rocketmq/s_store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
- 启动namesrv
docker run -d -p 9876:9876 -v /home/docker/rocketmq/namesrv-a/logs/:/root/logs -v /home/docker/rocketmq/namesrv-a/store/:/root/store --name namesrv-a -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv
![](https://i-blog.csdnimg.cn/blog_migrate/add71c52fc5190856b3f28555721cd4c.png)
docker run -d -p 9877:9876 -v /home/docker/rocketmq/namesrv-b/logs/:/root/logs -v /home/docker/rocketmq/namesrv-b/store/:/root/store --name namesrv-b -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv
![](https://i-blog.csdnimg.cn/blog_migrate/1f7f56fd5d8560138a0b2746aca67fba.png)
- 检查namesrv
![](https://i-blog.csdnimg.cn/blog_migrate/0812a5a75f6020fae8c99dafe7490ac5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1eb0972f84f0739f6044c831499b4269.png)
![](https://i-blog.csdnimg.cn/blog_migrate/367a67771c4919446c21e558ca41614a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/58299956cf7caf79e1c2172648a210e2.png)
- docker启动broker主
docker run -d -p 10911:10911 -p 10909:10909 -v /home/docker/rocketmq/broker-a/logs:/root/logs -v /home/docker/rocketmq/broker-a/store/:/root/store -v /home/docker/rocketmq/broker-a/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf --name broker-a --link namesrv-a:namesrv -e "NAMESRV_ADDR=192.168.100.100:9876,192.168.100.100:9877" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
![](https://i-blog.csdnimg.cn/blog_migrate/c0754e09067a4e6a40c20543e32f90a3.png)
docker run -d -p 10911:10911 -p 10909:10909 -v /home/docker/rocketmq/broker-b/logs:/root/logs -v /home/docker/rocketmq/broker-b/store/:/root/store -v /home/docker/rocketmq/broker-b/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf --name broker-b --link namesrv-a:namesrv -e "NAMESRV_ADDR=192.168.100.100:9876;192.168.100.100:9877" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
![](https://i-blog.csdnimg.cn/blog_migrate/a4f951b0868795ed81df7b38215d30ff.png)
- docker启动broker从
docker run -d -p 10911:10911 -p 10909:10909 -v /home/docker/rocketmq/broker-b-s/logs:/root/logs -v /home/docker/rocketmq/broker-b-s/store/:/root/store -v /home/docker/rocketmq/broker-b-s/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf --name broker-b-s --link namesrv-b:namesrv -e "NAMESRV_ADDR=192.168.100.100:9876;192.168.100.100:9877" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
![](https://i-blog.csdnimg.cn/blog_migrate/69974b9da894bcee2c18118213c9b4d3.png)
docker run -d -p 10911:10911 -p 10909:10909 -v /home/docker/rocketmq/broker-a-s/logs:/root/logs -v /home/docker/rocketmq/broker-a-s/store/:/root/store -v /home/docker/rocketmq/broker-a-s/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf --name broker-a-s --link namesrv-a:namesrv -e "NAMESRV_ADDR=192.168.100.100:9876,192.168.100.100:9877" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
![](https://i-blog.csdnimg.cn/blog_migrate/af119e690e2fa39e339315b062acb0ea.png)
- 检查容器是否启动成功
![](https://i-blog.csdnimg.cn/blog_migrate/9815d6b0325e577191f705988a1cabe1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6cfca573431ecad7c35d68ec772d6c04.png)
- 同步本地与容器时间
![](https://i-blog.csdnimg.cn/blog_migrate/0f93adef475146a34fb3ac6297373e1f.png)
- 部署console界面
docker run --name mq-console -d -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.100.100:9876;192.168.100.100:9877 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -t styletang/rocketmq-console-ng
![](https://i-blog.csdnimg.cn/blog_migrate/f760df603cbab4b8914b90d42ddb1f48.png)
浏览器访问http://ip:port
![](https://i-blog.csdnimg.cn/blog_migrate/9654b67273379f8a8933d93785457246.png)