当前位置: 首页 > news >正文

Docker下部署RocketMQ5.3.3

环境介绍

  •  服务器系统:CentOS7;
  •  Docker版本:26.1.4
  •  RocketMQ版本:5.3.3
  •  RocketMQ-DashBoard:2.1.0
  •  主机IP: 192.168.163.130

一、获取镜像

       镜像获取有两种方式,在线拉取或者导入现成的镜像包,你根据自己需求选一个即可。

      方式一:在线拉取

       首先配置国内镜像源,不然拉取进度慢到你怀疑人生。开始吧!(记得在root权限下操作哈~)

       1) 创建目录(先在对应路径下看看有没有docker文件夹,有的话就不用新建了)
 mkdir -p /etc/docker
      2) 在上述目录下新建一个文件daemon.json,内容如下(网上找的)

{"registry-mirrors": ["https://docker.m.daocloud.io","https://1ms.run","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn","https://iju9kaj2.mirror.aliyuncs.com","https://hub-mirror.c.163.com","https://docker.hpcloud.cloud","https://cr.console.aliyun.com" ,"https://hub.docker.com","https://docker.unsee.tech","https://docker.1panel.live","https://mirrors.ustc.edu.cn","https://docker.chenby.cn","https://mirrors.azure.cn"]
}
       3) 加载一下上述文件,并重启docker 
  # 加载文件systemctl daemon-reload# 重启docker systemctl restart docker

       4) 拉取 rocketmq 和 dashboard 官方镜像

  # 拉取rocketmq镜像docker pull apache/rocketmq # 拉取dashboard镜像docker pull apacherocketmq/rocketmq-dashboard:2.1.0

      PS:尝试过dashboard最新版和2.0.1都没成功,可能就这个版本适配吧。

      方式二:加载已有的镜像源

       这种方式适合已经有镜像源文件的小伙伴。比如服务器A上已经有镜像源了,可以先把这个镜像源导出为tar文件,再导入到你的服务器上即可(省去了拉取的时间)。

       1)  导出镜像

        导出指令如下,你可以一个一个导出,也可以批量导出,就像把多个文件打包成一个压缩包的原理一样。

  • 导出单个镜像image1 、image2到对应的tar文件
  docker save -o image1.tar image1docker save -o image2.tar image2
  • 导出镜像image1 、image2 到一个tar文件
  docker save image1 image2 -o images.tar

例如:将服务器A上的镜像先导出到指定位置,比如我的一台windows机器上已有镜像源,我先把它导出到E盘下,命名为rocketmq_images。

docker save -o e:\rocketmq_images.tar apache/rocketmq:latest apacherocketmq/rocketmq-dashboard:2.1.0

        2) 导入镜像
  docker load -i 镜像包名.tar

        例如:用ssh工具将机器A上的包导入到机器B的/home/Downloads/目录下,再使用如下指令加载镜像。

docker load -i /home/Downloads/rocketmq_images.tar

二、创建挂载目录

         下面的目录是我的主机目录,结构如下:

|----opt|---rocketmq|---data|---namesrv|---logs|---store|---broker|---logs|---store|---conf   /*配置文件broker.conf在这个文件夹放着*/

        1. 创建nameserver挂载目录指令

mkdir -p /opt/rocketmq/data/namesrv/logs /opt/rocketmq/data/namesrv/store

        2. 创建broker挂载目录指令

mkdir -p /opt/rocketmq/data/broker/logs  /opt/rocketmq/data/broker/store

        3.  创建broker配置文件目录指令

mkdir -p /opt/rocketmq/data/conf

目录层级如下:

注意:这里一定要设置相关文件夹的访问权限,否则会在访问控制台网页时报如下错误

  # 查看文件夹权限ls -lr /opt/rocketmq/# 设置namesrv文件夹读写权限chmod 777 -R /opt/rocketmq/

最终查看文件夹时显示下面的权限即可。

三、创建broker配置文件

在上述的broker配置文件目录 /opt/rocketmq/data/conf下创建文件broker.conf,内容如下,编辑并保存。

# NameServer地址
namesrvAddr=rmqnamesrv:9876
# 所属集群名称,如果节点较多可以配置多个
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地址,也就是centosOS7的服务ip
brokerIP1 = 192.168.163.130
# 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full
diskMaxUsedSpaceRatio=95

四、启动服务

   创建一个网络,就可以用容器名代替IP地址了。(也可省略)

  docker network create rocketmq

  1. 启动nameserver

docker run -d --restart=always --name rmqnamesrv -p 9876:9876 --network rocketmq -v /opt/rocketmq/data/namesrv/logs:/home/rocketmq/logs/rocketmqlogs -v /opt/rocketmq/data/namesrv/store:/home/rocketmq/logs/store -e "MAX_POSSIBLE_HEAP=100000000" apache/rocketmq sh mqnamesrv

  2. 启动broker

docker run -d --restart=always --name rmqbroker -p 10911:10911 -p 10909:10909 --network rocketmq -v /opt/rocketmq/data/broker/logs:/home/rocketmq/logs -v /opt/rocketmq/data/broker/store:/home/rocketmq/logs/store -v /opt/rocketmq/data/conf/broker.conf:/home/rocketmq/rocketmq-5.3.3/conf/broker.conf -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" apache/rocketmq sh mqbroker -c /home/rocketmq/rocketmq-5.3.3/conf/broker.conf

  3. 启动dashboard

docker run -d --restart=always --name rmqconsole  --network rocketmq -e "JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876 	-Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 9877:8082  apacherocketmq/rocketmq-dashboard:2.1.0

此时在docker中查看一下,各个容器已经正常运行了

如果容器没运行起来,可以查看日志,找找原因,例如,下面是正常跑起来的容器日志,查看方式都一样。

还要注意,一定要开放相应的端口,否则也可能导致部署失败

  # 查看当前已经开放的端口firewall-cmd --list-ports# 设置开放指定端口(以80/tcp为例)firewall-cmd --zone=public --add-port=80/tcp --permanent# 重新加载配置firewall-cmd --reload

五、访问可视化控制台

我映射的端口是9877,在另一台局域网主机上访问:http://192.168.163.130:9877/

大功告成!部署rocketmq花费了我两天时间,各种踩坑,尝试各种解决办法最终部署成功,现在总结出来,并记录下来,同时也给还在辛苦尝试的小伙伴们一些建议和思路,感谢浏览!

http://www.dtcms.com/a/494561.html

相关文章:

  • 桥田动态 | 多展位跨域协同,桥田快换盘持续赋能机器人“无界切换”
  • [AI学习:SPIN -win-安装SPIN-工具过程 SPIN win 电脑安装=accoda 环境-第三篇:解决报错]
  • 我有域名怎么做网站免费开网店app
  • iOS八股文之 多线程
  • C++ 方向 Web 自动化测试入门指南:从概念到 Selenium 实战
  • 掌握 iOS 26 App 运行状况,多工具协作下的监控策略
  • 软考 系统架构设计师系列知识点之杂项集萃(176)
  • Apache RocketMQ在Windows下的保姆级安装教程(含可视化界面安装)
  • TypeScript类型系统:从原始到对象的实战精要
  • Git 提交消息规范:理解 fix、feature 等关键词的含义
  • PostgreSQL 表达式
  • 库早报|新华社:增材制造作为新质生产力持续突围;刘宇宁自曝是3D打印玩家;易加三维中标1166.8万元项目
  • 建设模板类网站北京时间网站建设
  • 如何使用现有工具进行 .NET 8 迁移 Wpf
  • 云计算生态及学习方向和就业领域方向
  • 探域科技在AI电商应用调研报告
  • 做淘宝客网站需要什么五种网站类型
  • 期中考试几何命题难?大角几何让出卷效率翻倍,支持导出黑白试题风!
  • 前后端学习的交界
  • 爱站网影院阿里巴巴新网站怎么做运营
  • 且未县建设局网站海口正规官网设计公司
  • Redhat 8,9(及复刻系列) 一键部署Oracle26ai rpm
  • iOS移动端H5键盘弹出时页面布局异常和滚动解决方案
  • 能耗在线监测系统:革新能源管理模式,助推企业节能减排
  • Redis(66)Redis如何实现分布式锁?
  • 机器学习特征筛选中的IV值详解:原理、应用与实现
  • 海淀区企业网站建设网页升级紧急通知拿笔记好
  • Android 网络层最佳实践:Retrofit + OkHttp 封装与实战
  • vue3:el-progress
  • 大模型-高效优化技术全景解析:微调 量化 剪枝 梯度裁剪与蒸馏 上