安装nameserver
# 拉取镜像
docker pull rocketmqinc/rocketmq
# 创建挂载目录
mkdir -p /docker/rocketmq/nameserver/logs /docker/rocketmq/nameserver/store
# 启动nameserver
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
参数 |
说明 |
-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 |
安装broker
mkdir -p /docker/rocketmq/data/broker/logs /docker/rocketmq/data/broker/store /docker/rocketmq/conf
vi /docker/rocketmq/conf/broker.conf
# 所属集群名称,如果节点较多可以配置多个
brokerClusterName=DefaultCluster
# broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName=broker-a
# 0表示Master,大于0表示不同的slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=nameserver1:9876;nameserver2:9876
#是否允许 Broker 自动创建Topic,建议生产环境中关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议生产环境中关闭
autoCreateSubscriptionGroup=true
#默认为新建Topic所创建的队列数
defaultTopicQueueNums=4
# 表示几点做消息删除动作,默认是凌晨4点
deleteWhen=04
# 在磁盘上保留消息的时长,单位是小时
fileReservedTime=48
#指定commitLog目录中每个文件的大小,默认1G
mapedFileSizeCommitLog=1073741824
#指定ConsumeQueue的每个Topic的每个Queue文件中可以存放的消息数量,默认30w条
mapedFileSizeConsumeQueue=300000
#在清除过期文件时,如果该文件被其他线程所占用(引用数大于0,比如读取消息),此时会阻止此次删除任务,同时在第一次试图删除该文件时记录当前时间戳。该属性则表示从第一次拒绝删除后开始计时,该文件最多可以保留的时长。在此时间内若引用数仍不为0,则删除仍会被拒绝。不过时间到后,文件将被强制删除
destroyMapedFileIntervalForcibly=120000
# Broker 对外服务的监听端口
# listenPort参数是broker的监听端口号,是remotingServer服务组件使用
# 作为对Producer和Consumer提供服务的端口号,默认为10911,可以通过配置文件修改
listenPort=10911
# 主要用于slave同步master
# fastRemotingServer服务组件使用,默认为listenPort - 2,可以通过配置文件修改。
fastListenPort=10909
# HA高可用监听端口,即Master与Slave间通信的端口,默认值为listenPort+1
haListenPort=10912
# 指定commitlog、consumequeue所在磁盘分区的最大使用率,超过该值,则需立即清除过期文件
diskMaxUsedSpaceRatio=95
#指定消息的最大大小
maxMessageSize=65536
#Broker的角色
# - ASYNC_MASTER 异步复制Master
# - SYNC_MASTER 同步双写Master
# - SLAVE
brokerRole=ASYNC_MASTER
#刷盘策略
# - ASYNC_FLUSH 异步刷盘
# - SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
# 发消息线程池数量
sendMessageThreadPoolNums=128
# 拉消息线程池数量
pullMessageThreadPoolNums=128
# 强制指定本机IP,需要根据每台机器进行修改。
# 官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=192.168.114.100
#指定store目录的路径,默认在当前用户主目录中
storePathRootDir=/usr/local/rocketmq-all-4.5.0/store
#commitLog目录路径
storePathCommitLog=/usr/local/rocketmq-all-4.5.0/store/commitlog
#consumeueue目录路径
storePathConsumeQueue=/usr/local/rocketmq-all-4.5.0/store/consumequeue
#index目录路径
storePathIndex=/usr/local/rocketmq-all-4.5.0/store/index
#checkpoint文件路径
storeCheckpoint=/usr/local/rocketmq-all-4.5.0/store/checkpoint
#abort文件路径
abortFile=/usr/local/rocketmq-all-4.5.0/store/abort
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
参数 说明
-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节点 |
创建rockermq-console服务
docker pull pangliang/rocketmq-console-ng
docker run -d \
--restart=always \
--name rmqadmin \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.114.100:9876 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 9999:8080 \
pangliang/rocketmq-console-ng