Docker部署RocketMQ5.x 单机部署+配置参数详解+不使用docker-compose直接部署
- 镜像拉取(使用apache/rocketmq镜像包含NameServer+Broker+Proxy...)
- 部署NameServer
- 创建挂载文件夹
- 创建挂载文件
- 启动NameServer
- 部署Broker
- 创建需要映射的文件夹和文件
- 创建的挂载文件夹
- 创建broker.conf文件
- 拷贝容器内Broker启动脚本到宿主机(如果不需要自定义堆内存可以跳过)
- 启动Broker
- 部署Proxy
- 部署RocketMQ控制台(rocketmq-dashboard)
- 镜像拉取
- 启动RocketMQ控制台(rocketmq-dashboard)
- Broker配置详解
官网地址:https://rocketmq.apache.org/
镜像拉取(使用apache/rocketmq镜像包含NameServer+Broker+Proxy…)
镜像地址: https://hub.docker.com/r/apache/rocketmq/tags
我在部署的时候最新发行版是5.1.0可以根据需求自行选择一个5.x的版本,部署流程不会有太大改变。
docker pull apache/rocketmq:5.1.0
部署NameServer
NameServer是一个简单的 Topic 路由注册中心,支持 Topic、Broker 的动态注册与发现,几乎无状态节点,因此可集群部署,节点之间无任何信息同步,所谓的集群部署和单机部署其实是一样的,需要多个NameServer保持高可用只需独立部署即可。
创建挂载文件夹
mkdir /usr/local/rocketmq/nameserver/logs -p
mkdir /usr/local/rocketmq/nameserver/bin -p
设置权限:如果不设置会导致NameServer容器内部无法写日志文件
chmod 777 -R /usr/local/rocketmq/nameserver/*
创建挂载文件
NameServer启动脚本中有一个自动计算最大堆内存和新生代内存的函数会导致在不同硬件环境下设置最大堆内存和新生代内存环境变量不被应用,,这里先提前copy一份容器内部启动脚本做挂载,如果想自定义内存可以自己调整。
1、启动容器
docker run -d \
--privileged=true \
--name rmqnamesrv \
apache/rocketmq:5.1.0 sh mqnamesrv
2、复制容器内启动脚本到挂载目录/usr/local/rocketmq/nameserver/bin
docker cp rmqnamesrv:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh /usr/local/rocketmq/nameserver/bin/runserver.sh
3、修改runserver.sh
vi /usr/local/rocketmq/nameserver/bin/runserver.sh
找到调用calculate_heap_sizes函数的位置注释掉保存即可,拉到脚本最底部就能找到
4、停止&删除容器
docker stop rmqnamesrv
docker rm rmqnamesrv
启动NameServer
sudo docker run -d \
--privileged=true \
--restart=always \
--name rmqnamesrv \
-p 9876:9876 \
-v /usr/local/rocketmq/nameserver/logs:/home/rocketmq/logs \
-v /usr/local/rocketmq/nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh \
-e "MAX_HEAP_SIZE=256M" \
-e "HEAP_NEWSIZE=128M" \
apache/rocketmq:5.1.0 sh mqnamesrv
注意个别参数有两个减号
参数 | 说明 |
---|
-d | 以守护进程的方式启动 |
–restart=always | docker重启时候容器自动重启 |
–name rmqnamesrv | 把容器的名字设置为rmqnamesrv |
-p 9876:9876 | 把容器内的端口9876挂载到宿主机9876上面,宿主机端口:容器内部端口 |
-v /usr/local/rocketmq/nameserver/logs:/home/rocketmq/logs | 挂载容器内日志 |
-v /usr/local/rocketmq/nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh | 挂载启动脚本 |
-e “MAX_HEAP_SIZE=256M” | 设置最大堆内存和堆内存初始大小 |
-e “HEAP_NEWSIZE=128M” | 设置新生代内存大小 |
apache/rocketmq:5.1.0 | 使用的镜像名称+版本 |
sh mqnamesrv | 启动namesrv服务 |
部署Broker
创建需要映射的文件夹和文件
创建的挂载文件夹
提前创建挂载目录用于挂载容器内部数据、配置文件、以及日志。
mkdir /usr/local/rocketmq/broker/logs -p \
mkdir /usr/local/rocketmq/broker/data -p \
mkdir /usr/local/rocketmq/broker/conf -p \
mkdir /usr/local/rocketmq/broker/bin -p
设置权限
chmod 777 -R /usr/local/rocketmq/broker/*
创建broker.conf文件
在/usr/local/rocketmq/broker/conf文件夹下创建broker.conf文件
vi /usr/local/rocketmq/broker/conf/broker.conf
添加以下配置信息到broker.conf,这里不对参数做过多的说明,在下面Broker配置详解中有对Broker常用参数做详细介绍
namesrvAddr = 192.168.10.220:9876
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
brokerIP1 = 192.168.10.220
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
deleteWhen = 04
fileReservedTime = 72
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
说明:建立broker.conf文件,通过这个文件把RocketMQ的broker管理起来
拷贝容器内Broker启动脚本到宿主机(如果不需要自定义堆内存可以跳过)
Broker启动脚本中有一个自动计算最大堆内存和新生代内存的函数会导致在不同硬件环境下设置最大堆内存和新生代内存环境变量不被应用,,这里先提前copy一份容器内部启动脚本做挂载,如果想自定义内存可以自己调整。
1、启动容器
docker run -d \
--name rmqbroker \
--privileged=true \
apache/rocketmq:5.1.0 \
sh mqbroker
2、复制容器内启动脚本到挂载目录/usr/local/rocketmq/nameserver/bin
docker cp rmqbroker:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh /usr/local/rocketmq/broker/bin/runbroker.sh
3、修改runbroker.sh
vi /usr/local/rocketmq/broker/bin/runbroker.sh
找到调用calculate_heap_sizes函数的位置注释掉保存即可,拉到脚本最底部就能找到
4、停止&删除容器
docker stop rmqbroker
docker rm rmqbroker
启动Broker
docker run -d \
--restart=always \
--name rmqbroker \
-p 10911:10911 -p 10909:10909 \
--privileged=true \
-v /usr/local/rocketmq/broker/logs:/root/logs \
-v /usr/local/rocketmq/broker/store:/root/store \
-v /usr/local/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf \
-v /usr/local/rocketmq/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh \
-e "MAX_HEAP_SIZE=512M" \
-e "HEAP_NEWSIZE=256M" \
apache/rocketmq:5.1.0 \
sh mqbroker -c /home/rocketmq/broker.conf
注意个别参数有两个减号
参数 | 说明 |
---|
-d | 以守护进程的方式启动 |
–restart=always | docker重启时候容器自动重启 |
–name rmqbroker | 把容器的名字设置为rmqbroker |
-p 10911:10911 | 把容器内的端口10911 挂载到宿主机10911 上面,宿主机端口:容器内部端口 |
-p 10909:10909 | 把容器内的端口10909 挂载到宿主机10909 上面,宿主机端口:容器内部端口 |
-v /usr/local/rocketmq/broker/logs:/root/logs | 挂载容器内日志 |
-v /usr/local/rocketmq/broker/store:/root/store | 挂载数据目录 |
-v /usr/local/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf | 挂载启动配置文件 |
-v /usr/local/rocketmq/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh | 挂载broker启动脚本,需要自己定义堆内存时使用 |
-e “MAX_HEAP_SIZE=512M” | 设置最大堆内存和堆内存初始大小 |
-e “HEAP_NEWSIZE=256M” | 设置新生代内存大小 |
apache/rocketmq:5.1.0 | 使用的镜像名称+版本 |
sh mqbroker -c /home/rocketmq/broker.conf | 启动broker服务 使用自定义配置文件 |
部署Proxy
这里暂时不对Proxy进行部署,单机版本没必要,不使用Proxy和之前的4.x版本基本一致
部署RocketMQ控制台(rocketmq-dashboard)
镜像拉取
拉取最新版即可
docker pull apacherocketmq/rocketmq-dashboard:latest
启动RocketMQ控制台(rocketmq-dashboard)
docker run -d \
--restart=always \
--name rmqdashboard \
-e "JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=192.168.10.220:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 8080:8080 \
apacherocketmq/rocketmq-dashboard
Broker配置详解
namesrvAddr = 127.0.0.1:6666
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
listenPort=10911
brokerIP1 = 127.0.0.1
brokerIP2 = 127.0.0.1
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
deleteWhen = 04
fileReservedTime = 72
maxMessageSize=4194304
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
transactionTimeout=20
transactionCheckMax=5
transactionCheckInterval=10
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)