1. Rocketmq集群部署

1
RocketMQ 5.0 提出了自主切换架构。自主切换架构新增了一个 Controller 模块,负责选主。当某个 Broker Master 故障,会选择合适的 Broker Slave 提升为 Master,无需人工介入

1.1 CRDS部署

1
2
3
# cd /rocketmq/operator
# kubectl apply -f crds/.
# kubectl get crd

1.2 RocketMQ Operator 部署

1
2
# /rocketmq/operator
# kubectl apply -f .

1.3 配置 Name Service CR–不执行

1
2
3
4
5
6
配置 Name Service CR。Name Service CR 配置较为重要的字段有两个,其一为 size,即需要部署了多少个 NameServer 节点,其二为 hostNetwork ,默认 false ,此时客户端只能在 Kubernetes 集群内与 NameServer 进行通讯。如果Kubernetes 集群外的客户端需要访问到 RocketMQ 集群,需要将 hostNetwork 配为 true ,NameServer 的接入点需要配置为 NameServer 所在的 Node IP

# cd /rocketmq
# kubectl apply -f nameservices/rocketmq_nameservice_cr.yaml

# kubectl get NameService -n jwgod-test

1.4 配置 Controller CR–不执行

1
2
3
4
5
6
配置 Controller CR。注意 size 需要配置为奇数。Controller 的数据需要持久化存储,可以利用云服务提供商提供的 StorageClass,无需自行维护存储。如果希望配置自己的存储

# cd /rocketmq
# kubectl apply -f controller/rocketmq_controller_cr.yaml

# kubectl get Controller -n jwgod-test

1.5 配置 Broker CR–不执行

1
2
3
4
5
6
配置 Broker CR。示例中配置了两组 Broker,每组有一个备节点,同时将 clusterMode 设置为 Controller,启动自主切换架构集群

# cd /rocketmq
# kubectl apply -f broker/rocketmq_broker_cr.yaml

# kubectl get Broker -n jwgod-test
1
2
3
准备好以上三个模块的相关配置文件之后,执行 kubectl apply 命令提交给 Kubernetes 集群。其余的部署、运维等动作均交由 RocketMQ Operator 自动完成。
成功部署后,可以通过 kubectl get po 命令查看部署的Pod。可以看到部署了4个Broker节点、Controller 和 NameSever 节点各3个。
进入一个 Broker Pod,可以使用 clusterlist 命令查看集群状态,可以看到集群有两组 Broker,每一组各有一主(BID=0)一备

1.6 配置NS Controller Broker

1
2
3
4
5
# cd /rocketmq
# kubectl apply -f cluster_rocketmq/rocketmq_v1alpha1_rocketmq_cluster.yaml
# kubectl get NameService -n jwgod-test
# kubectl get Controller -n jwgod-test
# kubectl get Broker -n jwgod-test

1.7 rocketmq-dashboard

1
2
# cd /rocketmq
# kubectl apply -f mqdashboard/rocketmq-dashboard.yaml

2. yaml文件下载地址

Rockermq yaml 部署文件下载