安装nameserver
# 拉取镜像docker pull rocketmqinc/rocketmq# 创建挂载目录mkdir -p /docker/rocketmq/nameserver/logs /docker/rocketmq/nameserver/store# 启动nameserverdocker 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/confvi /docker/rocketmq/conf/broker.conf# 所属集群名称,如果节点较多可以配置多个brokerClusterName=DefaultCluster# broker名称,master和slave使用相同的名称,表明他们的主从关系brokerName=broker-a# 0表示Master,大于0表示不同的slavebrokerId=0#nameServer地址,分号分割namesrvAddr=nameserver1:9876;nameserver2:9876#是否允许 Broker 自动创建Topic,建议生产环境中关闭autoCreateTopicEnable=true#是否允许 Broker 自动创建订阅组,建议生产环境中关闭autoCreateSubscriptionGroup=true#默认为新建Topic所创建的队列数defaultTopicQueueNums=4# 表示几点做消息删除动作,默认是凌晨4点deleteWhen=04# 在磁盘上保留消息的时长,单位是小时fileReservedTime=48#指定commitLog目录中每个文件的大小,默认1GmapedFileSizeCommitLog=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+1haListenPort=10912# 指定commitlog、consumequeue所在磁盘分区的最大使用率,超过该值,则需立即清除过期文件diskMaxUsedSpaceRatio=95#指定消息的最大大小maxMessageSize=65536#Broker的角色# - ASYNC_MASTER 异步复制Master # - SYNC_MASTER 同步双写Master # - SLAVEbrokerRole=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/abortdocker 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-ngdocker 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