首页 > 其他分享 >k8s部署rocketmq

k8s部署rocketmq

时间:2023-08-23 17:48:36浏览次数:38  
标签:name 部署 app rocketmqnamesrv rocketmqbroker dashboard k8s rocketmq

分别部署rocketmqnamesrv、rocketmqbroker、rocketmq-dashboard三个。

1、部署rocketmqnamesrv

部署时,rocketmq的日志存储采用hostPath方式挂载到服务器磁盘上,所以需要指定node节点。

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: rocketmqnamesrv
    k8s.kuboard.cn/layer: cloud
  name: rocketmqnamesrv
  namespace: kube-public
spec:
  selector:
    matchLabels:
      app: rocketmqnamesrv
  template:
    metadata:
      labels:
        app: rocketmqnamesrv
    spec:
      containers:
        - command:
            - sh
            - /home/rocketmq/rocketmq-5.1.2/bin/mqnamesrv
          env:
            - name: TZ
              value: Asia/Shanghai
            - name: JAVA_OPT_EXT
              value: '-Duser.home=/home/rocketmq -Xms512M -Xmx512M -Xmn128m'
            - name: autoCreateTopicEnable
              value: 'true'
          image: 'apache/rocketmq:5.1.2'
          imagePullPolicy: IfNotPresent
          name: rocketmqnamesrv
          volumeMounts:
            - mountPath: /root/logs
              name: srclogs
            - mountPath: /root/store
              name: srcstore
      volumes:
        - hostPath:
            path: /opt/rocketmq-server/logs
            type: DirectoryOrCreate
          name: srclogs
        - hostPath:
            path: /opt/rocketmq-server/store
            type: DirectoryOrCreate
          name: srcstore
---
apiVersion: v1
kind: Service
metadata:
  name: rocketmqnamesrv
  namespace: kube-public
spec:
  ports:
    - name: namesrvport
      nodePort: 31376
      port: 9876
      protocol: TCP
      targetPort: 9876
  selector:
    app: rocketmqnamesrv
  type: NodePort

 

2、部署rocketmqbroker

rocketmqbroker部署到K8s上,需要修改brocket的ip,默认是docket内ip,修改为K8s的服务器Ip。采用configmap方式将broker.conf文件挂载出来。

configmap.yaml如下,需要修改brokerIP1 的值为你服务器的Ip。

---
apiVersion: v1
data:
  config: |-
    brokerClusterName = DefaultCluster
    brokerName = broker-c
    brokerId = 0
    deleteWhen = 04
    fileReservedTime = 48
    brokerRole = ASYNC_MASTER
    flushDiskType = ASYNC_FLUSH
    brokerIP1 = 192.168.111.90
kind: ConfigMap
metadata:
  name: roketmqconfig
  namespace: kube-public

 

rocketmqbroker部署的yaml文件如下:

 

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: rocketmqbroker
    k8s.kuboard.cn/layer: cloud
  name: rocketmqbroker
  namespace: kube-public
spec:
  selector:
    matchLabels:
      app: rocketmqbroker
  template:
    metadata:
      labels:
        app: rocketmqbroker
    spec:
      containers:
        - command:
            - sh
            - /home/rocketmq/rocketmq-5.1.2/bin/mqbroker
            - '-n'
            - 'rocketmqnamesrv:9876'
            - '-c'
            - /home/rocketmq/rocketmq-5.1.2/conf/broker.conf
          env:
            - name: TZ
              value: Asia/Shanghai
            - name: JAVA_OPT_EXT
              value: '-Xms512M -Xmx512M -Xmn128m'
            - name: NAMESRV_ADDR
              value: 'rocketmqnamesrv:9876'
          image: 'apache/rocketmq:5.1.2'
          imagePullPolicy: IfNotPresent
          name: rocketmqbroker
          volumeMounts:
            - mountPath: /home/rocketmq/rocketmq-5.1.2/conf/broker.conf
              name: rocketmqconfig
              subPath: broker.conf
            - mountPath: /root/logs
              name: logsconfig
            - mountPath: /root/store
              name: storeconfig
      nodeName: node3
      restartPolicy: Always
      volumes:
        - configMap:
            defaultMode: 420
            items:
              - key: config
                path: broker.conf
            name: roketmqconfig
          name: rocketmqconfig
        - hostPath:
            path: /opt/rocketmq-broker/logs
            type: DirectoryOrCreate
          name: logsconfig
        - hostPath:
            path: /opt/rocketmq-broker/store
            type: DirectoryOrCreate
          name: storeconfig
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: rocketmqbroker
  name: rocketmqbroker
  namespace: kube-public
spec:
  ports:
    - name: broker-port
      nodePort: 10911
      port: 10911
      protocol: TCP
      targetPort: 10911
    - name: 7cpk4a
      nodePort: 10912
      port: 10912
      protocol: TCP
      targetPort: 10912
    - name: ykdmnd
      nodePort: 10909
      port: 10909
      protocol: TCP
      targetPort: 10909
  selector:
    app: rocketmqbroker
  sessionAffinity: None
  type: NodePort

 

3、部署rocketmq-dashboard

 

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: rocketmq-dashboard
  name: rocketmq-dashboard
  namespace: kube-public
spec:
  selector:
    matchLabels:
      app: rocketmq-dashboard
  template:
    metadata:
      labels:
        app: rocketmq-dashboard
    spec:
      containers:
        - env:
            - name: TZ
              value: Asia/Shanghai
            - name: JAVA_OPTS
              value: >-
                -Drocketmq.namesrv.addr=rocketmqnamesrv:9876
                -Dcom.rocketmq.sendMessageWithVIPChannel=false
          image: apacherocketmq/rocketmq-dashboard
          imagePullPolicy: IfNotPresent
          name: rocketmq-dashboard
            tcpSocket:
              port: 8080
      dnsPolicy: ClusterFirst
      restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    k8s.kuboard.cn/workload: rocketmq-dashboard
  labels:
    app: rocketmq-dashboard
  name: rocketmq-dashboard
  namespace: kube-public
spec:
  ports:
    - name: port
      nodePort: 20880
      port: 8080
      protocol: TCP
      targetPort: 8080
  selector:
    app: rocketmq-dashboard
  type: NodePort

 

部署完成后,浏览器访问:http://ip:20880就可以查看dashboard了。

遇到的问题:

  之前部署的时候,rocketmqbroker采用nodeport方式暴露出来的节点端口不是10911等服务端口,导致dashboard一直提示连接失败。将nodeprot节点端口与服务端口设置为一致即可。

  k8s的nodeport使用的默认端口范围是30000-32767。若想设置10911端口,需要修改默认端口范围。

 

标签:name,部署,app,rocketmqnamesrv,rocketmqbroker,dashboard,k8s,rocketmq
From: https://www.cnblogs.com/nuomm/p/17652344.html

相关文章

  • K8S-安装笔记
    准备:主机环境的前期准备工作个人环境使用3台CentOSLinuxrelease8.5.2111,搭建需要联网,配置yum的k8s仓库等。IP地址:172.17.136.28/29/32/33,主机名对应为:gip28、gip29、gip32、gip33期中k8smaster主节点为gip28注意:以下操作如果没有特殊说明,则默认在所有的节点均执行。一、安装dock......
  • K8S pod挂载存储卷
    1、hostpath方式#hostpath挂载方式---apiVersion:apps/v1kind:Deploymentmetadata:labels:app:grafananame:grafanaspec:selector:matchLabels:app:grafanatemplate:metadata:labels:app:grafanaspec:......
  • 五脏俱全,搭建部署多人语音厅源码功能分析
    首先,要搭建部署一个稳定成熟的多人语音厅源码,具体的实现方式可能因项目需求以及使用的工具而有所不同,下边来简单分析下。搭建多人语音厅场景系统:场景功能如下。(1)多个麦位语聊:支持多人连麦及无限观众收听,并将麦位状态同步给房间内所有用户。(2)多人语音厅配置:参数可以按需配置,如码率、......
  • 如何在k8s中部署nfs-client-provisioner实现nfs共享存储的动态PV创建?
    0、背景说明 正常的情况,如果使用nfs的网络共享存储,需要手动的创建pv,然后创建pvc和pv进行绑定。 最后在应用程序的pod中来挂载使用这个pvc,达到挂载外部共享存储的目的。 那么,要实现动态的PV的创建,该怎么做呢? 在今天的内容里面,介绍一个nfs-client-provisoner工具,通过它......
  • k8s 相关
    转载至:https://blog.51cto.com/u_15287666/5805969查询所有命名空间下image运行起来的资源kubectlgetall-owide-A缺点:这种方法kubectlgetall其实查询出来不是全部资源,仅仅是常用资源,仅仅是service-deployment/statefulset/daemonset/job/cronjob-replicaset-p......
  • Node.Js 13.4.18 Docker 部署后无法访问
    将项目Next.js升级后,通过Docker部署无法访问到服务,通过dockerlogsid检查日志,发现没有任何反应,甚至一个访问请求都没看到。一开始怀疑是打包的问题,将Docker容器中的服务文件全部拉下来,在本地跑..诶嘿~正常运行...排除打包问题检查启动日志:readystartedserveron......
  • k8s挂载示例
    apiVersion:apps/v1kind:Deploymentmetadata:name:tongwebspec:selector:matchLabels:app:tongwebreplicas:1template:metadata:labels:app:tongwebspec:containers:-name:tongweb......
  • docker部署MySQL、tomcat
    一、安装MySQL1、dockerpullmysql:latest拉取镜像dockersearchmysql命令将返回与关键字“mysql”相关的Docker镜像列表。在结果中,你将看到镜像名称、描述、星级评分、官方/认证标志以及其他相关信息。结果包括了许多不同的MySQL镜像,包括官方支持的和由社区维护的镜像。你......
  • 轻松玩转70亿参数大模型!借助Walrus在AWS上部署Llama2
    Llama2是Meta的下一代开源大语言模型。它是一系列经过预训练和微调的模型,参数范围从70亿到700亿个。MetaLlama2可免费用于研究和商业用途并且提供了一系列具有不同大小和功能的模型,因此一经发布备受关注。在(之前的文章)中,我们详细地介绍了Llama2的使用和优势以及FAQ。......
  • 轻松玩转70亿参数大模型!借助Walrus在AWS上部署Llama2
    Llama2是Meta的下一代开源大语言模型。它是一系列经过预训练和微调的模型,参数范围从70亿到700亿个。MetaLlama2可免费用于研究和商业用途并且提供了一系列具有不同大小和功能的模型,因此一经发布备受关注。在之前的文章中,我们详细地介绍了Llama2的使用和优势以及FAQ。......