准备好虚拟机 centos7
至少准备3G内存 不然起不起来
配置好网络保证可连通
安装docker
yum install docker
#启动docker
systemctl start docker
创建映射目录和配置文件
mkdir -p /data/rocketmq/namesrv/{logs,store}
mkdir -p /data/rocketmq/broker/{logs,store,conf}
vi /data/rocketmq/broker/conf/broker.conf
broker.conf内容
# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = DefaultCluster
# broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = rmqbrokera
# 0表示Master,大于0表示不同的slave
brokerId = 0
# 表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
# 在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
# 是否允许 Broker 自动创建 Topic,建议线下开启,线上关闭 !!!这里仔细看是 false,false,false
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# 有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
brokerRole = ASYNC_MASTER
# 刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
# 设置broker节点所在服务器的ip地址
brokerIP1 = 10.0.0.100
# 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full
diskMaxUsedSpaceRatio=95
授权文件具有读写权限
chmod 666 /data/rocketmq/broker/conf/broker.conf
docker pull apache/rocketmq:4.9.3
docker network create rmq-bridge
docker run -d --name rmqnamesrv --network rmq-bridge --network-alias rmqnamesrv \
-p 5976:9876 \
-e "MAX_POSSIBLE_HEAP=100000000" \
-e "JAVA_OPT_EXT=-server -Xms256m -Xmx256m -Xmn128m" \
-v /data/rocketmq/namesrv/logs:/home/rocketmq/logs \
-v /data/rocketmq/namesrv/store:/home/rocketmq/store \
--restart=always \
--privileged=true \
apache/rocketmq:4.9.3 \
sh mqnamesrv
docker run -d --name rmqbrokera --network rmq-bridge --network-alias rmqbrokera \
-p 10909:10909 \
-p 10911:10911 \
-p 10912:10912 \
-v /data/rocketmq/broker/logs:/home/rocketmq/logs \
-v /data/rocketmq/broker/store:/home/rocketmq/store \
-v /data/rocketmq/broker/conf/broker.conf:/opt/rocketmq-4.9.3/conf/broker.conf \
-e "JAVA_OPT_EXT=-Xms256m -Xmx512m -Xmn128m" \
-e "NAMESRV_ADDR=10.0.0.100:5976" \
-e "MAX_POSSIBLE_HEAP=200000000" \
--restart=always \
--privileged=true \
apache/rocketmq:4.9.3 \
sh mqbroker -c /opt/rocketmq-4.9.3/conf/broker.conf
如果连不上
需进入容器,找到配置文件/opt/rocketmq-4.9.3/conf/broker.conf修改ip地址brokerIP1 = 10.0.0.100
# 会自动下载镜像
docker run -d --name rmqconsole -p 8080:8080 -e "JAVA_OPTS=-Drocketmq.namesrv.addr=10.0.0.100:5976" styletang/rocketmq-console-ng