docker安装rocketMQ5.3.3详细步骤

概述:

rocketmq安装涉及到三个服务,namesrv服务、broker节点、rockermq-console服务
关键点是:
1、启动namesrc时,文件映射只关心日志目录,不用关心数据目录
2、要弄清楚broker的配置文件与数据存储目录,网上看到资料很多都不一样,可能是版本不同;这块我已经使用临时容器查看默认开辟的目录,直接使用下面命令即可,当然,你也可以在配置文件中自己指定数据目录;

具体安装步骤:

一、创建容器共享网络

docker network create rocketmq

二、创建namesrv服务

1、拉取镜像
docker pull apache/rocketmq:5.3.3
2、创建namesrv在宿主机的日志映射目录
mkdir -p /data/rocketMQ/namesrv/logs
3、构建namesrc容器
docker run -d \
--restart=always \
--name rmqnamesrv \
-p 9876:9876 \
-v /data/rocketMQ/namesrv/logs:/home/rocketmq/logs/rocketmqlogs \
-e "MAX_POSSIBLE_HEAP=100000000" \
apache/rocketmq:5.3.3 \
sh mqnamesrv
4、查看容器运行状态

docker ps
docker logs rmqnamesrv

三、创建broker节点

1、在宿主机上创建broker数据存储路径、日志目录、配置文件
mkdir -p  /data/rocketMQ/broker/conf
mkdir -p  /data/rocketMQ/broker/logs
mkdir -p  /data/rocketMQ/broker/store

赋予权限:

chmod 777 /data/rocketMQ/broker/logs
chmod 777 /data/rocketMQ/broker/store
chmod 777 /data/rocketMQ/broker/conf
2、编辑配置文件
cd /data/rocketMQ/broker/conf
vim broker.conf

编辑内容如下:

# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = DefaultCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-a
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#有三个值: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.10.92.118
# 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full
diskMaxUsedSpaceRatio=95
#是否允许自动创建topic
autoCreateTopicEnable=true
namesrvAddr=10.10.92.118:9876
# 消息延迟级别设置
messageDelayLevel = 1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h

可以自行改一下配置,比如数据存储时间可以设置更长一点;
namesrvAddr参数设置为nameserver的地址;

3、创建broker容器

新建 startbroker.sh

vim startbroker.sh 

内容如下:

docker run -d  \
--privileged=true \
--restart=always \
--name rmqbroker \
--network rocketmq \
--link rmqnamesrv:namesrv \
-p 10911:10911 \
-p 10909:10909 \
-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:/home/rocketmq/rocketmq-5.3.3/conf/broker.conf \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "MAX_POSSIBLE_HEAP=200000000" \
apache/rocketmq:5.3.3 \
sh mqbroker -c /home/rocketmq/rocketmq-5.3.3/conf/broker.conf

解释:
-c /home/rocketmq/rocketmq-5.3.3/conf/broker.conf 指定启动时用的配置文件

-p 10909 端口:是 Broker 的 VIP 监听端口。当普通端口的请求非常繁忙时,Broker 端的所有 I/O 线程可能都在执行请求,导致后续网络请求进入队列,使消息请求执行缓慢。这种情况下,生产者发送消息、消费者获取元数据信息等请求可以使用 VIP 端口,以降低消息发送的延时。

-p10911 端口:是 Broker 的监听端口,主要用于执行 Topic 的重平衡等操作,同时也承载着普通的消息网络请求,例如处理生产者发送的消息、消费者的拉取消息请求等。

-p10912 端口:是 Broker 的 HA(High Availability,高可用)端口,用于主从节点之间的数据同步,以保证在主节点出现故障时,从节点能够尽快接管工作,确保消息服务的高可用性。

-e “MAX_POSSIBLE_HEAP=200000000” rocketmqinc/rocketmq sh mqbroker : 指定broker服务的最大堆内存

如果需要也可以控制容器内存大小:
–memory=4g \ # 限制容器内存使用
–cpus=2.0 \ # 限制容器CPU使用
–memory=2g \ # 容器总内存限制
-e “MAX_POSSIBLE_HEAP=1073741824” \ # 直接内存1GB
-e “JAVA_OPTS=-Xmx1g” \ # 堆内存1GB

四、创建rockermq-console服务

1、新建console宿主机目录
  mkdir -p /data/rocketMQ/console
2、docker拉取镜像
 docker pull apacherocketmq/rocketmq-console:2.0.0
3、新建启动脚本 startmqconsole.sh
 cd /data/rocketMQ/console
 vim startmqconsole.sh
 chmod 755 startmqconsole.sh

编辑内容如下:

docker run -d \
--privileged=true \
--restart=always \
--ulimit nofile=65535:65535 \
--ulimit nproc=65535:65535 \
--name rmqconsole \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=10.10.92.118:9876 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 8087:8080 \
apacherocketmq/rocketmq-console:2.0.0

解释:
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.52.136:9876 :设置namesrv服务的ip地址

4、需要关闭防火墙或者开放namesrv和broker端口

如果不设置,控制台服务将无法访问namesrv服务
关闭防火墙:

systemctl stop firewalld.service

开放指定端口:

firewall-cmd --permanent --zone=public --add-port=9876/tcp
firewall-cmd --permanent --zone=public --add-port=10911/tcp
# 立即生效
firewall-cmd --reload

访问控制台: http://10.10.92.118:8087/
在这里插入图片描述

参考:
https://www.cnblogs.com/exmyth/p/17511915.html
https://blog.csdn.net/ming19951224/article/details/109063041?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-9-109063041-blog-143672476.235v43pc_blog_bottom_relevance_base4&spm=1001.2101.3001.4242.6&utm_relevant_index=12

对于在Linux上安装DockerRocketMQ详细步骤,你可以参考以下指南: 安装Docker: 1. 首先,确保你的Linux系统满足Docker的要求。通常,Docker要求使用64位的操作系统,并且内核版本要在3.10以上。 2. 打开终端,更新系统的软件包列表:`sudo apt update` 3. 安装必要的软件包,以便可以通过HTTPS使用仓库:`sudo apt install apt-transport-https ca-certificates curl software-properties-common` 4. 添加Docker的官方GPG密钥:`curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg` 5. 设置稳定版的Docker仓库:`echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null` 6. 更新软件包列表:`sudo apt update` 7. 安装Docker引擎:`sudo apt install docker-ce docker-ce-cli containerd.io` 8. 验证Docker是否正确安装:`sudo docker run hello-world`,如果成功运行,说明Docker已经安装成功。 安装RocketMQ: 1. 首先,确保你已经安装了Java开发套件(JDK)。 2. 在终端中,下载RocketMQ的最新发行版:`wget https://archive.apache.org/dist/rocketmq/4.8.0/rocketmq-all-4.8.0-bin-release.zip` 3. 解压下载的压缩包:`unzip rocketmq-all-4.8.0-bin-release.zip` 4. 进入解压后的目录:`cd rocketmq-all-4.8.0-bin-release` 5. 在`bin`目录下,启动Name Server:`./mqnamesrv` 6. 在另一个终端窗口中,启动Broker:`./mqbroker -n localhost:9876` 7. 验证RocketMQ是否正确安装,可以尝试发送和接收消息。 请注意,以上步骤仅提供了基本的安装过程。在实际操作中,你可能还需要根据自己的需求进行一些额外的配置和调整。建议你查阅DockerRocketMQ的官方文档,以获得更详细的信息和指导。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值