K8S 部署 RocketMQ

集群使用 kubesphere 作为工具

添加模板

添加 helm 模板

helm repo add rocketmq-repo https://helm-charts.itboon.top/rocketmq
helm repo update rocketmq-repo

编写 value.yaml 文件
配置主从节点的个数,例子为单节点

broker:
  size:
    master: 1
    replica: 0

 

部署

  1. 部署一个最小化的 rocketmq 集群
    这里关闭持久化存储,仅演示部署效果
helm upgrade --install rocketmq \
  --namespace rocketmq-demo \
  --create-namespace \
  --set broker.persistence.enabled="false" \
  rocketmq-repo/rocketmq
  1. 部署测试集群
    启用 Dashboard (默认已开启持久化存储)
helm upgrade --install rocketmq \
  --namespace rocketmq-demo \
  --create-namespace \
  --set dashboard.enabled="true" \
  --set dashboard.ingress.enabled="true" \
  --set dashboard.ingress.hosts[0].host="rocketmq-demo.example.com" \
  rocketmq-repo/rocketmq
  1. 部署高可用集群, 多 Master 多 Slave
    3个 master 节点,每个 master 具有1个副节点,共6个 broker 节点
helm upgrade --install rocketmq \
  --namespace rocketmq-demo \
  --create-namespace \
  --set broker.size.master="3" \
  --set broker.size.replica="1" \
  --set broker.master.jvmMemory="-Xms2g -Xmx2g" \
  --set broker.master.resources.requests.memory="4Gi" \
  --set nameserver.replicaCount="3" \
  --set dashboard.enabled="true" \
  --set dashboard.ingress.enabled="true" \
  --set dashboard.ingress.hosts[0].host="rocketmq-ha.example.com" \
  rocketmq-repo/rocketmq

 

本地访问

部署成功后,默认只能集群内容器访问,若本地需要访问,需要修改配置文件 broker-base.conf

在这里插入图片描述

ip 修改成服务器的 ip

namesrvAddr:nameServer地址
brokerIP1:启动IP

namesrvAddr = 10.10.10.01:9876
brokerIP1 = 10.10.10.01

然后配置 9876 端口的 NodePort

修改后会报错 10911、10909 访问不了,所以还要开放 10911、10909 的端口

问题点:k8s 集群默认是只能访问 30000 以上的端口,那怎么办呢
1、修改集群 NodePort 端口范围

vim /etc/kubernetes/manifests/kube-apiserver.yaml

在 command 下添加 --service-node-port-range=1-65535 参数,修改后会自动生效,无需其他操作
在这里插入图片描述

2、修改默认端口 10911、10909
编辑 broker 容器的映射端口

  • vip:默认为10909,修改为 30220
  • main:默认为10911.修改为 30218
  • ha:RocketMQ 不是 部署的可以不改

在这里插入图片描述

修改 broker-base.conf

listenPort参数是broker的监听端口号,是remotingServer服务组件使用,作为对Producer和Consumer提供服务的端口号,默认为10911,可以通过配置文件修改。

fastListenPort参数是fastRemotingServer服务组件使用,默认为listenPort - 2,可以通过配置文件修改。

listenPort=30220

broker 的服务开放 NodePort 端口
在这里插入图片描述

nameserver 的服务开放 NodePort 端口
在这里插入图片描述

通过 ip:30754 即可本地访问

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要在Kubernetes部署RocketMQ,您可以按照以下步骤进行操作: 1. 创建RocketMQ的命名空间: ``` kubectl create namespace rocketmq ``` 2. 部署RocketMQ的Namesrv组件: 创建`namesrv.yaml`文件,并将以下配置添加到文件中: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: rocketmq-namesrv namespace: rocketmq spec: replicas: 1 selector: matchLabels: app: rocketmq-namesrv template: metadata: labels: app: rocketmq-namesrv spec: containers: - name: rocketmq-namesrv image: rocketmqinc/rocketmq:4.8.0 command: ["sh", "-c", "cd /opt/rocketmq/distribution && sh bin/mqnamesrv"] ports: - containerPort: 9876 ``` 使用以下命令创建Namesrv组件的Deployment: ``` kubectl apply -f namesrv.yaml ``` 3. 部署RocketMQ的Broker组件: 创建`broker.yaml`文件,并将以下配置添加到文件中: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: rocketmq-broker namespace: rocketmq spec: replicas: 2 selector: matchLabels: app: rocketmq-broker template: metadata: labels: app: rocketmq-broker spec: containers: - name: rocketmq-broker image: rocketmqinc/rocketmq:4.8.0 command: ["sh", "-c", "cd /opt/rocketmq/distribution && sh bin/mqbroker -n namesrv:9876"] ports: - containerPort: 10911 - containerPort: 10909 ``` 使用以下命令创建Broker组件的Deployment: ``` kubectl apply -f broker.yaml ``` 4. 验证RocketMQ部署是否成功: 使用以下命令检查Pod的状态: ``` kubectl get pods -n rocketmq ``` 如果所有的Pod都处于"Running"状态,则RocketMQ部署成功。 请注意,上述步骤仅提供了基本的部署配置。根据您的具体需求,您可能需要进一步配置RocketMQ的参数和持久化存储等。另外,为了确保数据的可靠性和高可用性,建议您配置RocketMQ的数据备份和故障恢复机制。 希望以上信息能对您有所帮助!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值