rocketmq单机k8s部署

步骤

单机版只需要部署一个nameserver,一个broker,一个dashboard即可。需要先部署nameserver,然后再部署broker和dashboard,因为需要调用nameserver的svc。版本为rocketmq:4.9.4

创建nameserver

vim nameserver.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: rocketmqnamesrv
  name: rocketmqnamesrv
spec:
  type: ClusterIP
  ports:
  - port: 9876
    targetPort: 9876
    name: namesrvport
  selector:
    app: rocketmqnamesrv
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: rocketmqnamesrv
spec:
  serviceName: rocketmqnamesrv
  replicas: 1
  selector:
    matchLabels:
      app: rocketmqnamesrv
  template:
    metadata:
     labels:
       app: rocketmqnamesrv
    spec:
      containers:
      - name: rocketmqnamesrv
        image: apache/rocketmq:4.9.4
        imagePullPolicy: IfNotPresent
        env:
          - name: TZ
            value: Asia/Shanghai
          - name: JAVA_OPT_EXT
            value: "-Duser.home=/home/rocketmq -Xms512M -Xmx512M -Xmn128m"
        command: ["sh","/home/rocketmq/rocketmq-4.9.4/bin/mqnamesrv"]
        readinessProbe:
          tcpSocket:
            port: 9876
          initialDelaySeconds: 15
          timeoutSeconds: 5
          periodSeconds: 20

k apply -f nameserver.yaml

创建configmap

namesrvAddr需要根据环境进行修改。

vim broker.conf
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
namesrvAddr= rocketmqnamesrv:9876

k create configmap rocketmqbroker --from-file=broker.conf

创建broker

vim broker.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: mqbroker
  name: mqbroker
spec:
  type: ClusterIP
  ports:
  - port: 10911
    targetPort: 10911
    name: broker-port
  selector:
    app: mqbroker

---

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: rocketmqbroker
spec:
  serviceName: rocketmqbroker
  replicas: 1
  selector:
    matchLabels:
      app: rocketmqbroker
  template:
    metadata:
      labels:
        app: rocketmqbroker
    spec:
      securityContext:
        fsGroup: 3000
      containers:
      - name: rocketmqbroker
        image: apache/rocketmq:4.9.4
        env:
          - name: TZ
            value: Asia/Shanghai
          - name: POD_NAME
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: metadata.name
          - name: JAVA_OPT_EXT
            value: "-Xms4096M -Xmx4096M -Xmn1024m -XX:ParallelGCThreads=2"
          - name: NAMESRV_ADDR
            value: rocketmqnamesrv:9876
        command: ["sh","/home/rocketmq/rocketmq-4.9.4/bin/mqbroker","-n","rocketmqnamesrv:9876","-c","/home/rocketmq/rocketmq-4.9.4/conf/broker.conf"]
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 10911
        volumeMounts:
        - mountPath: /home/rocketmq/rocketmq-4.9.4/conf/broker.conf
          name: rocketmqbroker-config
          subPath: broker.conf
          ##注意这里挂载的是store目录,而不是data目录,store目录才是真正的数据目录,不然做不了持久化
        - mountPath: /home/rocketmq/store
          name: rocketmqbroker-data
        resources:
          limits:
            cpu: "2"
            memory: 6Gi
          requests:
            cpu: "1"
            memory: 4Gi
      imagePullSecrets:
      - name: registry-pull-secret
      volumes:
      - configMap:
          defaultMode: 420
          name: rocketmqbroker
        name: rocketmqbroker-config
  volumeClaimTemplates:
          - apiVersion: v1
            kind: PersistentVolumeClaim
            metadata:
              name: rocketmqbroker-data
            spec:
              accessModes:
              - ReadWriteOnce
              resources:
                requests:
                  storage: 10Gi
              storageClassName: fast
              volumeMode: Filesystem

 k apply -f broker.yaml

file

部署dashboard

vim rocketmq-dashboard.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: rocketmq-dashboard
  name: rocketmq-dashboard
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 8080
    name: port
  selector:
    app: rocketmq-dashboard
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rocketmq-dashboard
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rocketmq-dashboard
  template:
    metadata:
     labels:
       app: rocketmq-dashboard
    spec:
      containers:
      - name: rocketmq-dashboard
        image: apacherocketmq/rocketmq-dashboard
        imagePullPolicy: IfNotPresent
        env:
          - name: TZ
            value: Asia/Shanghai
          - name: JAVA_OPTS
            value: "-Drocketmq.namesrv.addr=rocketmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
        readinessProbe:
          tcpSocket:
            port: 8080
          initialDelaySeconds: 15

k apply -f rocketmq-dashboard.yaml

查看部署情况

k get po,svc | grep rocketmq

file

验证

先登录dashboard,查看消息。

file

生成消息

k exec -it rocketmqbroker-0 -- bash
pwd # /home/rocketmq/rocketmq-4.9.4/bin
./tools.sh org.apache.rocketmq.example.quickstart.Producer

file

消费消息

./tools.sh org.apache.rocketmq.example.quickstart.Consumer

file

查看dashboard,生产和消费消息变为了1000。

file

验证成功。

0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
最旧
最新 最多投票
内联反馈
查看所有评论

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部
0
希望看到您的想法,请您发表评论x