Rancher搭建单节点Rocketmq
前言
网上和官网上有很多关于怎么使用单机、docker、docker-compose搭建环境的教程,但是我本地的虚拟机搭建的有一套基于rke2+rancher的环境。所以不太想使用docker部署而是想把服务直接部署到rancher中。但是期间踩了好几个坑,所以记录一下防止以后忘记,也希望能够帮助到有需要的同学。
本文就不在赘述rocketmq的作用和功能了,毕竟RocketMQ的官网有中文的且已经介绍的很详细了,有想了解的小伙伴可以先移步到官网:https://rocketmq.apache.org/zh/
使用helm部署的也可以移步到 https://artifacthub.io/packages/helm/rocketmq/rocketmq,我这个是基于docker镜像部署到rancher上面的,纯当我无聊吧,建议别学我
版本环境
我用的rocketmq的版本是5.3.0,rocketmq5.x和rocketmq4.x版本之间docker部署的配置还有有所不同的,如果你部署的是4.x的版本,这篇文章可能帮不上你。
镜像获取
由于24年6月份dockerhub停止中国镜像服务后,我们已经很难通过docker pull命令拉取到镜像了,所以这个时候我们第一步是先要获取镜像有以下几个方法
最简单的方法通过魔法拉取镜像,可能需要一定的钞能力。
看能否自己通过朋友或公司的私有镜像站拉取
通过一下几个镜像代理网站 https://docker.m.daocloud.io、https://huecker.io、https://dockerhub.timeweb.cloud,点击对应的网址可以跳转过去有对应使用文档,建议使用 Edge或者火狐浏览器打开(PS:如果你英语不好可以使用上面浏览器的翻译)
找到解决拉取镜像的地址后我们就可以开始服务创建了
创建NameServer和Broker+Proxy容器
创建挂载卷
创建ConfigMap
# 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
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
#自己rancher的机器地址
brokerIP1 = 192.168.0.129
先把上面的volume和ConfigMap配置到Pod的存储中
创建容器我是一个部署创建两个容器
下面是rmqnamesrv的配置
rmqbroker+rmproxy的配置
成功判断
等大dashbord部署成功看到集群中是否有服务即可判断我们的部署是否成功
NameServer服务打开日志看到 The Name Server boot success. serializeType=JSON, address 0.0.0.0:9876 即可判定nameserver服务启动成功
rmqbroker+rmproxy 服务看到 rocketmq-proxy startup successfully 代表procket服务启动成功,broker服务启动是否成功则需要到容器内看/home/rocketmq/logs/rocketmqlogs/broker.log 日志是否有报错,
创建rocketmq-dashboard服务
镜像地址:apacherocketmq/rocketmq-dashboard:latest
然后我们就可以通过Dahsborad控制台看到我们创建的服务了
服务部署完成
注意事项
apache/rocketmq:5.3.0 镜像是包含
nameserver
、proxy
、broker
三个服务的可以通sh xxx
命令来启动不同的服务 ,我们这里是将proxy和broker启动到一个容器中了单独部署proxy时前两次会有如下的错误,希望有大佬能够指点一二
2024-09-01T00:34:52.080872000+08:00 OpenJDK 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
2024-09-01T00:34:52.080872000+08:00 OpenJDK 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
2024-09-01T00:34:54.247159830+08:00 org.apache.rocketmq.proxy.common.ProxyException: create system broadcast topic DefaultHeartBeatSyncerTopic failed on cluster DefaultCluster
2024-09-01T00:34:54.247176330+08:00 at org.apache.rocketmq.proxy.service.sysmessage.AbstractSystemMessageSyncer.createSysTopic(AbstractSystemMessageSyncer.java:177)
2024-09-01T00:34:54.247179310+08:00 at org.apache.rocketmq.proxy.service.sysmessage.AbstractSystemMessageSyncer.start(AbstractSystemMessageSyncer.java:143)
at org.apache.rocketmq.proxy.service.client.ClusterConsumerManager.start(ClusterConsumerManager.java:68)
2024-09-01T00:34:54.247183120+08:00 at org.apache.rocketmq.common.utils.AbstractStartAndShutdown.start(AbstractStartAndShutdown.java:33)
2024-09-01T00:34:54.247184750+08:00 at org.apache.rocketmq.common.utils.AbstractStartAndShutdown.start(AbstractStartAndShutdown.java:33)
2024-09-01T00:34:54.247186100+08:00 at org.apache.rocketmq.common.utils.AbstractStartAndShutdown.start(AbstractStartAndShutdown.java:33)
at org.apache.rocketmq.proxy.ProxyStartup.main(ProxyStartup.java:96)