爱折腾 | docker搭建RocketMq测试环境踩坑

云中志

共 3571字,需浏览 8分钟

 ·

2022-03-08 23:33

47ee99d9468cb882d3b063bc4192b9c0.webp

前言

最近公司在搞ActiveMQ切换到rocketMq的事,虽然不是特别紧急的事,而且好像已经给出切换的文档了,但是本着自己动手丰衣足食的想法,我还是打算把之前发过的rocketMq的相关内容,再好好回顾下,毕竟知其然且知其所以然,才能更好地处理(装)问题(逼)。

不过今天的内容暂时还不涉及RocketMq的相关技术知识,只是一次简单的环境搭建,关于技术层面的知识,我们后面继续探讨。

RocketMQ部署

部署namesrv

namesrv就类似于消息队列的注册中心,因为rocketmq原生支持集群,所以namesrv就显得很重要。

拉取镜像

首先是拉取镜像,这里拉取的是rocketMQ的核心镜像

docker pull rocketmqinc/rocketmq
启动namesrv

启动过程也很简单,主要是docker的一些参数和配置指定

# 后台运行,并映射端口
docker run -d -p 9876:9876 \
# 设置容器名称
--name rmqnamesrv \
# 设置重启策略
--restart=always \
# 映射日志文件夹(前面的为本地路径)
-v /home/syske/docker/mq/data/namesrv/logs:/root/logs \
# 映射书籍存在文件夹(同上)
-v /home/syske/docker/mq/namesrv/store:/root/store \
# 指定环境变量
-e "MAX_POSSIBLE_HEAP=100000000" \
# 指定镜像版本,这里建议指定具体版本,否则在和java交互的时候会报错,目前最新版本是4.4.0,所以maven的依赖也必须对应,否则会报错
rocketmqinc/rocketmq:latest \
# 启动命令
sh mqnamesrv

部署broker

由于brokernamesrv是同一个镜像,所以这里不需要再拉取镜像

创建broker配置

除了最后两行配置,其他的配置都是系统默认的,具体说明可以参考官方文档

# broker集群名称
brokerClusterNam = DefaultCluster
# broker节点名称
brokerName = broker-a
# broker节点id
brokerId = 0
# 删除条件?这个还不清楚用途,后续研究下
deleteWhen = 04
# 文件保留时间(单位小时),默认为3天
fileReservedTime = 48
# broker角色
brokerRole = ASYNC_MASTER
# 磁盘同步方式:同步,异步
flushDiskType = ASYNC_FLUSH
# 类似注册中心
namesrvAddr=192.168.0.103:9876
# 当前broker监听的IP(主)
brokerIP1 = 192.168.0.103
启动broker

这里的启动命令最核心的其实就是最后sh操作,这里制定了配置文件的路径。

 # 后台运行
 docker run -d \
 # 映射端口
-p 10911:10911 \
# 映射端口
-p 10909:10909 \
# 容器名称
--name rmqbroker \
# 重启策略
--restart=always \
# 映射日志路径
-v /home/syske/docker/mq/data/broker/logs:/root/logs \
# 映射文件存储路径
-v /home/syske/docker/mq/data/broker/store:/root/store \
# 映射配置文件
-v /home/syske/docker/mq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \
# 链接namesrv
--link rmqnamesrv:namesrv \
# 指定环境设置
-e "NAMESRV_ADDR=namesrv:9876" \
# 指定环境设置,指定镜像
-e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq:latest \
# 启动命令(指定配置启动)
sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf

由于这里我们把rocketmq的日志映射到了本机目录,所以我们可以直接通过tail查看broker的启动日志,比如broker.log:

4ad0e8bbb882320bcf3926b3e8198ce7.webp

当然,你也可以通过docker exec命令的方式查看日志,当然就是没有上面这种方式方便。

安装console

consolerocketmq的扩展组件,console组件提供了图形化的界面,便于我们管理和监控rocketmq,界面截图如下:

27fdbab62792e885611446ee3575d19f.webp33f730703137d50dbd07e09a49f1cbb8.webp

官方文档:

https://rocketmq-1.gitbook.io/rocketmq-connector/rocketmq-connect/rocketmq-console/an-zhuang-shi-yong
拉取镜像

默认拉取最新版本镜像:

docker pull styletang/rocketmq-console-ng
启动

启动命令也很简单,只是指定rocketmqnamesrv的地址,除了端口有修改,其他直接复制官方文档

docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.0.103:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8000:8080 -t styletang/rocketmq-console-ng

启动成功后直接访问我们配置的端口,即可看到如上截图。

踩坑记录

由于是时候回顾总结,所以过程中的好多错误问题我已经复现不出来了,下面是印象比较深刻的几个问题,各位小伙伴可以参考下,少走一些弯路。

  • 映射路径配置错误,导致容器无限重启。表现就是执行docker ps的时候,mqbroker服务状态一直是Restarting

    93b23a3a20130279a2b5e18605ef9503.webp

    最后几经检查,发现是映射的本地文件夹不存在导致的。本地的路径是/home/syske/docker/mq/data/broker,但是启动命令里面映射的路径少了docker目录,所以导致日志和配置文件路径都错误了,所以报错了

  • 版本问题导致配置文件读取不到:也就是在启动boker服务的时候,broker.conf的路径配置不正确,导致启动直接报错:

    01261afee39ae637476c5f1ac7f9bb63.webp

    进入容器中查看了rocketmq的版本才知道这里的路径需要配置成rocketmq-4.4.0,所以各位小伙伴在拉取镜像的时候一定要指定版本,这样在设置配置的时候也就不会出错了。

  • 如果你在客户端调用rocketmq时有如下错误:9e5663a41bb8a537fe617a3ee9f04e5d.webp

    你需要在broker的配置文件中指定brokerIP1的相关配置,因为172.17.0.5docker的内网ip,我们需要在外部调用broker,所以需要配置一个外部ipdocker主机的局域网ip

59b229482aa9bb9b7a7d8273a913f86d.webp
  • 如果客户端调用rocketmq报错的话,那大概率是因为broker服务没有正常启动导致的(我就是因为第一个坑导致的)5a1ac1dbc7f629ddcb9053e9fd0117d1.webp

结语

好了关于docker安装配置rocketMq的相关内容,我们就先到这里,下面我们聊点本次折腾的背景:

原本是打算在manjaro环境搞下rocketMQ的测试环境就可以了,但是在实际操作的时候,发现manjaro还没有配置过JDK环境,而且在我一通安装设置之后,rocketMq启动还是报错,具体报什么错我也记不清楚了,总之就是很恶心,最后我就放弃了这种原生的方式。

之后我又想到了可以在k8s环境搞一套,但是不幸的是,我发现manjarok8s集群也坏了,就是执行kubectl命令时候一直提示拒绝连接:

The connection to the server localhost:8080 was refused - did you specify the right host or port?

好吧,太浪费时间了,于是我觉定重新装个系统(一言不合就折腾),一顿操作之后,我安装了特别熟悉的linux系统——ubuntu,不过网络还算给力,20m/s的速度,系统很快就下载好了。之后经过两个小时的折腾,dockerjdkgitoh-my-zsh都被我搞定了,然后今天又花了两三个小时折腾rocketmqdocker环境。

总体来说,我还是很喜欢这种排查并处理问题的感觉的,特别是解决完所有问题之后的酣畅感,这给了我极大的成就感,这也是我热爱折腾的原因吧!

- END -


浏览 47
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报