跳到主要内容
版本:4.x

Kubernetes 部署 RocketMQ

这一节介绍如何在 Kubernetes 环境下,使⽤ Helm 快速部署⼀个单节点 RocketMQ-4.x 版本的服务,并完成简单的消息收发。

系统要求
  • 一个运行中的 Kubernetes 集群
  • 已安装的 Helm 3.7.0+
  • 64位 JDK 1.8+

1.安装 Helm

确保你的系统上已经安装了 Helm:

$ helm version

如果未安装 Helm(3.7.0以上版本),可以使用以下命令进行安装:

$ curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

2.下载 RocketMQ Helm 仓库

$ helm pull oci://registry-1.docker.io/apache/rocketmq --version 0.0.1 
$ tar -zxvf rocketmq-0.0.1.tgz

3.部署 RocketMQ

使⽤ Helm chart 部署 RocketMQ。

#修改values.yaml中的配置(根据实际需求修改相关配置信息,如镜像版本,资源⼤⼩、副本数等,同时禁用proxy、controller功能)
$ vim values.yaml
##values.yaml, 将broker中的resources的limits、requests等参数修改调整成适宜大小, 修改镜像tag为4.9.6##
resources:
limits:
cpu: 2
memory: 10Gi
requests:
cpu: 2
memory: 10Gi
##values.yaml##
$ helm install rocketmq-demo ./rocketmq
#查看pod状态
#若参数正常,则表明部署成功
$ kubectl get pods -o wide -n default
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
default rocketmq-demo-broker-0 0/1 Running 0 19s 192.168.58.228 k8s-node02 <none> <none>
default rocketmq-demo-nameserver-6678bb86f6-62s5d 0/1 Running 0 19s 192.168.85.229 k8s-node01 <none> <none>

4.验证消息发送和接收

使用tools工具测试验证消息发送和接收。

#登录pod内(需要管理工具),也可以在宿主机执行
$ kubectl exec -ti rocketmq-demo-broker-0 -- /bin/bash

#通过mqadmin创建 Topic
$ sh mqadmin updatetopic -t TopicTest -c DefaultCluster

#发送消息(pod内操作)
$ sh tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId=7F00000100E60F6F4D334B52982103E7, offsetMsgId=C0A83AE400002A9F000000000002ECD2, messageQueue=MessageQueue [topic=TopicTest, brokerName=rocketmq-demo-broker-0, queueId=2], queueOffset=124]

#接收消息(pod内操作)
$ sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
ConsumeMessageThread_please_rename_unique_group_name_4_16 Receive New Messages: [MessageExt [brokerName=rocketmq-demo-broker-0, queueId=2, storeSize=192, queueOffset=124, sysFlag=0, bornTimestamp=1723734104097, bornHost=/192.168.58.228:40492, storeTimestamp=1723734104097, storeHost=/192.168.58.228:10911, msgId=C0A83AE400002A9F000000000002ECD2, commitLogOffset=191698, bodyCRC=638172955, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=125, CONSUME_START_TIME=1723734158990, UNIQ_KEY=7F00000100E60F6F4D334B52982103E7, CLUSTER=DefaultCluster, TAGS=TagA}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 57, 57, 57], transactionId='null'}]]

5.释放 RocketMQ 资源

#释放所有 RocketMQ 资源
$ helm uninstall rocketmq-demo