k8s部署RocketMQ集群
系统架构
2master + 2 slave + 2 nameserver + 2proxy+ 3controller
rocketmq 5.3.1
controller负责broker master的选举和宕机自动切换。
参考:
rocketmq 双主双从集群搭建
rocketmq主从自动切换
下载镜像
docker pull docker.m.daocloud.io/apache/rocketmq:5.3.1
将镜像上传到nexus私库,加速镜像下载
docker login nexus.l.com:7000docker tag "docker.m.daocloud.io/apache/rocketmq:5.3.1" "nexus.l.com:7000/rocketmq:5.3.1"docker push nexus.l.com:7000/rocketmq:5.3.1
helm配置文件
根据rocketmq官网下载示例配置:
https://rocketmq.apache.org/zh/docs/quickStart/04quickstartWithHelmInKubernetes/
helm pull oci://registry-1.docker.io/apache/rocketmq --version 0.0.1
官方文档里的helm配置文件都是一个实例的,需要修改成集群部署。
修改包括:
- nameserver 改为statefulset
- 修改各个组件的实例数量
- 添加pv和pvc配置
- 其它小的参数修改
配置文件下载:https://download.csdn.net/download/xgw1010/90835679
修改日志输出
为了方便在k8s dashboard上查看日志,可以将rocketmq的日志输出配置改为输出到console,并保存到configmap
kubectl create configmap rocketmq-log-config \--from-file=rmq.broker.logback.xml \--from-file=rmq.client.logback.xml \--from-file=rmq.controller.logback.xml \--from-file=rmq.namesrv.logback.xml \--from-file=rmq.proxy.logback.xml \--from-file=rmq.tools.logback.xml -n rocketmq-dev
部署并运行
helm upgrade --install rocketmq /opt/rocketmq -f /opt/rocketmq/values.yaml -n rocketmq-dev --debug
部署dashboard
https://github.com/apache/rocketmq-dashboard/releases/tag/rocketmq-dashboard-2.0.0
主题问题
集群起来后,注意看系统主题都成功自动创建
客户端连接proxy时,自动创建非系统主题的特性不生效,自己的主题需要手动创建。