k8s部署rocketmq5.3.0

简介: 本文介绍RocketMQ 5.3.0在Kubernetes上的标准化部署方案:涵盖Namespace、NameServer(Deployment+Service)、Broker、Proxy及Dashboard全组件YAML配置,支持节点亲和(k8sworker01)、持久化路径挂载与NodePort暴露,适用于快速验证与轻量生产环境。(239字)

安装前准备

确认Kubernetes集群正常运行,具备足够的资源(CPU、内存、存储)部署RocketMQ 5.3.0。确保kubectl和helm工具已安装并配置好集群访问权限。

检查存储类(StorageClass)是否支持动态卷供应,RocketMQ的NameServer和Broker需要持久化存储。若需自定义存储类,提前创建。

部署NameServer

RocketMQ 5.3.0的NameServer是无状态服务,可通过Deployment部署。创建YAML文件定义Deployment和Service,设置副本数、资源限制及服务暴露方式(ClusterIP或NodePort)。

配置健康检查(livenessProbe和readinessProbe),确保NameServer稳定运行。通过环境变量调整JVM参数,优化内存分配。

部署Broker集群

Broker是RocketMQ的核心组件,需持久化存储。使用StatefulSet部署Broker,确保Pod名称和存储卷稳定。配置PVC模板,动态申请持久化卷。

设置Broker角色(Master/Slave)和集群模式。通过环境变量或配置文件指定NameServer地址、Broker名称及集群名称。调整Broker参数如刷盘策略、消息存储路径。

配置控制台(Dashboard)

部署RocketMQ Dashboard用于监控和管理。通过Deployment暴露服务,配置Ingress或NodePort访问。在Dashboard配置中指定NameServer地址,确保能正确连接集群。

网络与访问配置

根据需求选择服务暴露方式。内部访问使用ClusterIP,外部访问通过NodePort或Ingress。配置网络策略,限制不必要的访问。

若需跨命名空间访问,确保DNS解析正确。测试NameServer和Broker的连通性,验证消息发送和接收功能。

监控与日志收集

集成Prometheus和Grafana监控RocketMQ指标,配置告警规则。部署日志收集工具(如EFK),集中管理Broker和NameServer日志。

调整日志级别和输出路径,便于故障排查。定期检查监控数据,优化集群性能。

验证与测试

使用RocketMQ提供的命令行工具测试消息生产与消费。验证集群高可用性,模拟节点故障,观察自动恢复情况。

测试持久化功能,确保消息不丢失。通过Dashboard检查各项指标,确认集群运行状态正常。

# 离线安装、安装在k8sworker01节点
cat rocketmq-deployment.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: rocketmq
---
################################
# RocketMQ NameServer
################################
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rocketmq-nameserver
  namespace: rocketmq
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rocketmq-nameserver
  template:
    metadata:
      labels:
        app: rocketmq-nameserver
    spec:
      nodeSelector:
        kubernetes.io/hostname: k8sworker01
      containers:
        - name: namesrv
          image: sealos.hub:5000/repo/eclipse-temurin:17-jdk
          imagePullPolicy: IfNotPresent
          workingDir: /rocketmq
          command:
            - sh
            - -c
            - |
              exec ./bin/mqnamesrv
          ports:
            - containerPort: 9876
          volumeMounts:
            - name: rocketmq-home
              mountPath: /rocketmq
      volumes:
        - name: rocketmq-home
          hostPath:
            path: /root/rocketmq/rocketmq-all-5.3.0-bin-release
            type: Directory
---
apiVersion: v1
kind: Service
metadata:
  name: rocketmq-nameserver
  namespace: rocketmq
spec:
  selector:
    app: rocketmq-nameserver
  ports:
    - name: remoting
      port: 9876
      targetPort: 9876
  type: ClusterIP
---
################################
# RocketMQ Broker
################################
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rocketmq-broker
  namespace: rocketmq
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rocketmq-broker
  template:
    metadata:
      labels:
        app: rocketmq-broker
    spec:
      nodeSelector:
        kubernetes.io/hostname: k8sworker01
      containers:
        - name: broker
          image: sealos.hub:5000/repo/eclipse-temurin:17-jdk
          imagePullPolicy: IfNotPresent
          workingDir: /rocketmq
          env:
            - name: JAVA_OPT_EXT
              value: "-Xms512m -Xmx512m -XX:MaxDirectMemorySize=256m"
          command:
            - sh
            - -c
            - |
              exec ./bin/mqbroker -n rocketmq-nameserver:9876
          ports:
            - containerPort: 10911
            - containerPort: 10909
          volumeMounts:
            - name: rocketmq-home
              mountPath: /rocketmq
      volumes:
        - name: rocketmq-home
          hostPath:
            path: /root/rocketmq/rocketmq-all-5.3.0-bin-release
            type: Directory
---
apiVersion: v1
kind: Service
metadata:
  name: rocketmq-broker
  namespace: rocketmq
spec:
  selector:
    app: rocketmq-broker
  ports:
    - name: broker
      port: 10911
      targetPort: 10911
  type: ClusterIP
---
################################
# RocketMQ Proxy
################################
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rocketmq-proxy
  namespace: rocketmq
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rocketmq-proxy
  template:
    metadata:
      labels:
        app: rocketmq-proxy
    spec:
      nodeSelector:
        kubernetes.io/hostname: k8sworker01
      containers:
        - name: proxy
          image: sealos.hub:5000/repo/eclipse-temurin:17-jdk
          imagePullPolicy: IfNotPresent
          workingDir: /rocketmq
          command:
            - sh
            - -c
            - |
              exec ./bin/mqproxy -n rocketmq-nameserver:9876
          ports:
            - containerPort: 8081
          volumeMounts:
            - name: rocketmq-home
              mountPath: /rocketmq
      volumes:
        - name: rocketmq-home
          hostPath:
            path: /root/rocketmq/rocketmq-all-5.3.0-bin-release
            type: Directory
---
apiVersion: v1
kind: Service
metadata:
  name: rocketmq-proxy
  namespace: rocketmq
spec:
  selector:
    app: rocketmq-proxy
  ports:
    - name: grpc
      port: 8081
      targetPort: 8081
      nodePort: 32081
  type: NodePort
---
################################
# RocketMQ Dashboard
################################
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rocketmq-dashboard
  namespace: rocketmq
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rocketmq-dashboard
  template:
    metadata:
      labels:
        app: rocketmq-dashboard
    spec:
      nodeSelector:
        kubernetes.io/hostname: k8sworker01
      containers:
        - name: dashboard
          image: sealos.hub:5000/apacherocketmq/rocketmq-dashboard:latest
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 8082
          env:
            - name: "NAMESRV_ADDR"
              value: "rocketmq-nameserver:9876"
            - name: "JAVA_OPT_EXT"
              value: "-Xms256m -Xmx256m"
---
apiVersion: v1
kind: Service
metadata:
  name: rocketmq-dashboard
  namespace: rocketmq
spec:
  selector:
    app: rocketmq-dashboard
  ports:
    - name: http
      port: 8082
      targetPort: 8082
      nodePort: 32080
  type: NodePort

不过我指定了安装到k8sworker01,各位自己甄别不一定适合自己

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
消息中间件 数据可视化 Java
自顶向下学习 RocketMQ(一): QuickStart
采用源码编译安装,注意请提前将 maven 安装调试好。 操作系统 macOS RocketMQ 版本:4.9.2 Maven 版本 3.3.9 JDK 版本 1.8.0_181
自顶向下学习 RocketMQ(一): QuickStart
|
21天前
|
人工智能 运维 云计算
我做了一个 Loki AI 事故分析引擎,已上架阿里云计算巢
后端开发者Luke打造Loki AI事故分析引擎,已上架阿里云计算巢!支持自动拉取Loki日志、调用Qwen/DeepSeek大模型智能根因分析,1-2分钟生成结构化报告(含根因、建议、时间线等),并推送至企微/钉钉。私有化部署,数据不出阿里云账号。
374 3
|
2月前
|
存储 Kubernetes 数据库
Kubernetes基础使用
Kubernetes是一个开源的容器编排引擎,可以用来管理容器化的应用,包括容器的自动化的部署、扩容、缩容、升级、回滚等等,它是Google在2014年开源的一个项目,它的前身是Google内部的Borg系统。
|
21天前
|
人工智能 弹性计算 JavaScript
【AI拆单提效实战】一张CAD图纸10秒出BOM,工厂拆单神器已上线阿里云!
【AI拆单提效实战】专为道具厂、定制家具厂打造的智能拆单工具,支持PDF/CAD上传,10秒自动识别板件与五金、修正错误、导出结构化BOM Excel,阿里云在线免费试用!
287 3
|
SQL 数据采集 存储
基于clickhouse做用户画像,标签圈选
基于clickhouse做用户画像,标签圈选
1715 0
基于clickhouse做用户画像,标签圈选
|
21天前
|
缓存 监控 Java
Alpine 作为基础镜像安装 OpenJDK 21 的完整踩坑过程与最佳实践
本文详述 Alpine Linux 下安装 OpenJDK 21 的踩坑历程:从仓库冲突、清华源加速失败,到通过 `gcompat` 解决 musl libc 段错误(exit 139);最终给出优化 Dockerfile,并强烈推荐使用成熟镜像如 `eclipse-temurin:21-jre-alpine`——省心、稳定、轻量。(239字)
341 2
|
21天前
|
人工智能 JSON Java
【SpringAIAlibaba新手村系列】(6)PromptTemplate 提示词模板与变量替换
本章详解Spring AI的PromptTemplate提示词模板机制,涵盖变量替换、系统消息模板(SystemPromptTemplate)、外部文件加载等核心功能,助力实现提示词参数化、复用与动态组装,提升RAG、Agent及结构化输出场景下的开发效率与可维护性。
206 6
|
8天前
|
人工智能
HappyHorse 1.0 系列模型使用指南
HappyHorse 1.0 是一款基于原生多模态架构的新一代 AI 视频生成模型,支持音视频协同生成;产品深度适配广告营销、电商展示、短剧制作与社交媒体创意等内容生产场景。
|
10天前
|
人工智能 自然语言处理 测试技术
DeepSeek V4:百万上下文,万亿参数,以及重新泛起涟漪的开源池塘
DeepSeek V4发布Pro(1.6T参数/49B激活)与Flash(284B/13B)双模型,均支持1M上下文、thinking模式及Agent能力。全栈开源(权重+技术报告+API+定价),采用混合注意力架构显著降本,中文长文本与推理能力突出,是当前少有的万亿级开源系统级发布
851 4
DeepSeek V4:百万上下文,万亿参数,以及重新泛起涟漪的开源池塘
|
人工智能
上车吧,1000+claw概念域名来袭!
风口真正值钱的,从来不是最热闹的那一天,而是热闹之后,产品开始成片长出来的那一刻…