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:7000

docker 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配置文件都是一个实例的,需要修改成集群部署。

修改包括:

  1. nameserver 改为statefulset
  2. 修改各个组件的实例数量
  3. 添加pv和pvc配置
  4. 其它小的参数修改

配置文件下载:https://download.youkuaiyun.com/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时,自动创建非系统主题的特性不生效,自己的主题需要手动创建。

### Kubernetes 部署 RocketMQ 集群教程 #### 准备工作 为了在 Kubernetes 上成功部署 RocketMQ 集群,需先准备好以下条件: - 已经搭建好的 Kubernetes 集群并能够正常运行。 - 安装了 `kubectl` 并配置好访问权限。 #### 创建命名空间 创建一个新的命名空间用于隔离 RocketMQ 的资源,这有助于管理和维护服务的安全性和独立性[^1]。 ```bash kubectl create namespace rocketmq-cluster ``` #### 使用 Helm Chart 进行安装 Helm 是 Kubernetes 应用程序包管理工具,通过官方或社区提供的稳定版 Charts 可简化复杂应用的部署过程。对于新手来说,这是最简单的方式之一来启动和运行 RocketMQ 实例。 首先添加阿里云开源团队维护的 RocketMQ helm chart 仓库: ```bash helm repo add incubator https://charts.helm.sh/incubator helm repo update ``` 接着利用该图表快速部署 RocketMQ 到指定命名空间内: ```bash helm install my-release \ --namespace rocketmq-cluster \ incubator/rocketmq ``` 此命令会自动完成 NameServer 和 Broker 节点的初始化设置以及持久卷声明等工作[^2]。 #### 访问 RocketMQ 控制台 部分 Helm charts 提供了一个简单的 Web UI 来监控和操作消息队列系统。如果所选版本包含控制台组件,则可以通过端口转发方式将其暴露给本地机器以便于调试和测试目的。 ```bash kubectl port-forward svc/my-release-rocketmq-console --namespace=rocketmq-cluster 8080:80 ``` 现在应该可以在浏览器中打开 http://localhost:8080 查看 RocketMQ 控制面板界面了。 #### 生产环境注意事项 当考虑将上述方案应用于实际业务场景时,建议进一步优化网络策略、存储类选择等方面;同时也要关注安全组规则设定以保障数据传输的安全性。另外,考虑到系统的可扩展性和容错机制,应当规划合理的副本数量及分布情况确保服务稳定性[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiegwei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值