Docker 部署RocketMQ

1.namesrv

1.1 拉取rocketMQ镜像

docker pull apache/rocketmq:4.9.4

1.2 创建nameserver数据存储目录

rocketMQ 分为nameserver和broker两部分,在启动时应该先启动nameserver,因此我们现在先创建nameserver的日志和数据存放目录。这个目录可由我们自己定义路径,这里我将其放到data路径

mkdir -p /app/rockedmq/logs /app/rockedmq/store

1.3 构建namesrv容器并启动

我们已经创建好了nameserver的日志和数据的存放路径,此时我们只需要挂在日志和数据路径,执行以下命令启动nameserver即可

docker run -d -p 9876:9876 --restart=always \

-v /data/docker-data/rockedmq/namesrv/logs:/home/rocketmq/logs \

-v /data/docker-data/rockedmq/namesrv/store:/home/rocketmq/store \

--name mqnamesrv \

--network rocketmq \

-e"JAVA_OPT_EXT=-server -Xms512m -Xmx512m -Xmn512m" \

apache/rocketmq:4.9.4 \

sh mqnamesrv

2.broker

2.1 创建broker数据存储路径

在操作这步之前,我们已经将nameserver启动成功,则接下来我们将要为broker创建数据挂载目录和配置文件,以确保broker能够成功启动。

mkdir -p /app/rocketmq/broker/logs /app/rocketmq/broker/store /app/rocketmq/broker/conf

说明:logs:是broker的日志目录,store:是broker的数据目录,conf是broker的配置信息目录

2.2 创建broker配置文件

我们刚刚已经创建了broker配置目录(/data/rocketmqbroker/conf),现在我们要在改配置目录下增加一个broker的配置文件,命名叫broker.conf

cd /app/rocketmq/broker/conf

vi broker.conf

注意:将一下信息复制到broker.conf文件中,请注意修改brokerIP1,改为您服务器的IP地址!注意修改namesrvAddr,改为您nameserver的IP地址!

Licensed to the Apache Software Foundation (ASF) under one or more

contributor license agreements. See the NOTICE file distributed with

this work for additional information regarding copyright ownership.

The ASF licenses this file to You under the Apache License, Version 2.0

(the "License"); you may not use this file except in compliance with

the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

所属集群名字

brokerClusterName=DefaultCluster

broker 名字,注意此处不同的配置文件填写的不一样,如果在 broker-a.properties 使用: broker-a,

在 broker-b.properties 使用: broker-b

brokerName=broker-a

0 表示 Master,> 0 表示 Slave

brokerId=0

nameServer地址,分号分割

namesrvAddr=192.168.18.200:9876

启动IP,如果 docker 报 com.alibaba.rocketmq.remoting.exception.RemotingConnectException: connect to <192.168.0.120:10909> failed

解决方式1 加上一句 producer.setVipChannelEnabled(false);,解决方式2 brokerIP1 设置宿主机IP,不要使用docker 内部IP

#producer.setVipChannelEnabled=false

brokerIP1=192.168.18.200

在发送消息时,自动创建服务器不存在的topic,默认创建的队列数

defaultTopicQueueNums=4

是否允许 Broker 自动创建 Topic,建议线下开启,线上关闭 !!!这里仔细看是 false,false,false

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=/home/ztztdata/rocketmq-all-4.1.0-incubating/store

commitLog 存储路径

storePathCommitLog=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/commitlog

消费队列存储

storePathConsumeQueue=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/consumequeue

消息索引存储路径

storePathIndex=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/index

checkpoint 文件存储路径

storeCheckpoint=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/checkpoint

abort 文件存储路径

abortFile=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/abort

限制的消息大小

maxMessageSize=65536

flushCommitLogLeastPages=4

flushConsumeQueueLeastPages=2

flushCommitLogThoroughInterval=10000

flushConsumeQueueThoroughInterval=60000

Broker 的角色

- ASYNC_MASTER 异步复制Master

- SYNC_MASTER 同步双写Master

- SLAVE

brokerRole=ASYNC_MASTER

刷盘方式

- ASYNC_FLUSH 异步刷盘

- SYNC_FLUSH 同步刷盘

flushDiskType=ASYNC_FLUSH

发消息线程池数量

sendMessageThreadPoolNums=128

拉消息线程池数量

pullMessageThreadPoolNums=128

2.3 构建broker容器并启动

docker run -d -p 10911:10911 -p 10909:10909 \

-v /data/docker-data/rockedmq/broker/logs:/home/rocketmq/logs \

-v /data/docker-data/rockedmq/broker/store:/home/rocketmq/store \

-v /data/docker-data/rockedmq/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.9.4/conf/broker.conf \

--name rmqbroker \

-e "NAMESRV_ADDR=namesrv:9876" \

apache/rocketmq:4.9.4 \

sh mqbroker -n namesrv:9876 \

-c /data/docker-data/rockedmq/broker/conf/broker.conf autoCreateTopicEnable=true

3.RocketMQ-Console可视化界面

3.1 拉取rocketmq-console镜像

docker pull styletang/rocketmq-console-ng

3.2 构建RocketMQ-Console容器并启动

docker run -d --restart=always --name rocketmq-admin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 -Dcom.rocketmqsendMessageWithVIPChannel=false" -p 9999:8080 styletang/rocketmq-console-ng

注意:将一下信息Drocketmq.namesrv.addr后面的IP地址改为您的nameserver IP地址!

相关推荐
姜鱼问生7 小时前
网页一片白?Docker 跑 Nginx 读不到文件,403 Forbidden 排查实录
nginx·docker·容器
\光辉岁月/8 小时前
2.spring5-IOC
java·容器·ioc·注解
ms72wx8 小时前
Docker 命令学习笔记:从入门到进阶的实战指南
笔记·学习·docker
java_logo8 小时前
Docker 部署 Excalidraw:轻松搭建手绘风格白板
运维·docker·容器·excalidraw·白板·轩辕镜像
海的透彻10 小时前
如何让docker容器启动时用自定义的用户
java·docker·dubbo
程序员清风11 小时前
LibreChat 实战:用 Docker 搭建可扩展的多模型对话平台
运维·docker·容器
Web3&Basketball12 小时前
从0到1落地AI Agent沙箱隔离Docker实战:踩坑全记录
运维·docker·容器·agent·容器安全·沙箱隔离
bluebonnet2713 小时前
【docker】使用regctl免安装docker下载镜像
运维·docker·容器
Java开发追求者1 天前
windows快速安装docker
windows·docker·安装·1024程序员节
骑着蜗牛撵大象3271 天前
飞牛fnOS部署Damselfly:Compose编排、照片目录与7100固定访问
java·docker·rpc·dubbo·fnos·照片管理·damselfly