k8s部署rocketmq单节点(server+broker+console)—— 筑梦之路

news/2024/11/7 22:37:32/

之前写过几篇关于rocketmq构建双架构镜像、docker-compose部署的文章,接上篇docker-compose部署rocketmq,这里记录下k8s下如何部署。

多架构环境下docker-compose部署rocketmq单机模式—— 筑梦之路-CSDN博客

nameserver节点

apiVersion: apps/v1
kind: StatefulSet
metadata:name: rocketmq-nameservlabels: {app: rocketmq}namespace: merry
spec:serviceName: rocketmqreplicas: 1selector:matchLabels: {app: rocketmq}template:metadata:labels: {app: rocketmq}spec:affinity:nodeAffinity:preferredDuringSchedulingIgnoredDuringExecution:- weight: 1preference:matchExpressions:- key: appnodeoperator: Invalues:- truecontainers:- name: rocketmqimage: harbor.codemiracle.com.cn/baseapp/rocketmq:4.7.1imagePullPolicy: IfNotPresentcommand: ["/home/rocketmq/rocketmq-4.7.1/bin/mqnamesrv"]resources:limits: {cpu: 5000m, memory: 2000Mi}requests: {cpu: 1000m, memory: 2000Mi}env:- {name: TZ, value: Asia/Shanghai}#- {name: JAVA_OPT, value: -Duser.home=/opt}#- {name: JAVA_OPT_EXT, value: -server -Xms1900m -Xmx1900m -Xmn1024m}ports:- {containerPort: 9876}volumeMounts:- {name: vol-init-d, mountPath: /home/rocketmq/logs}volumeClaimTemplates:- metadata: {name: vol-init-d}spec:accessModes: [ReadWriteOnce]resources:requests: {storage: 1000Gi}storageClassName: custom-hostpath
---
apiVersion: v1
kind: Service
metadata:name: rocketmq-svclabels:app: rocketmqnamespace: merry
spec:type: NodePortports:- port: 9876targetPort: 9876nodePort: 9876selector:app: rocketmq

broker节点

---
apiVersion: v1
kind: ConfigMap
metadata:name: broker-confignamespace: merry
data:broker.conf: |#所属集群名字brokerClusterName=DefaultCluster#broker名字,注意此处不同的配置文件填写的不一样,如果在broker-a.properties使用:broker-a,#在broker-b.properties使用:broker-bbrokerName=broker-a#0 表示Master,>0 表示SlavebrokerId=0#nameServer地址,分号分割#namesrvAddr=rocketmq-0:9876;rocketmq-1:9876namesrvAddr=rocketmq-svc:9876#启动IP,如果 docker 报 com.alibaba.rocketmq.remoting.exception.RemotingConnectException:         connect to <192.168.0.120:10909> failed# 解决方式1 加上一句producer.setVipChannelEnabled(false);,解决方式2 brokerIP1 设置宿主机IP,        不要使用docker 内部IP#brokerIP1=192.168.0.254brokerIP1=192.168.100.100#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数defaultTopicQueueNums=4#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 !!!这里仔细看是false,false,false#原因下篇博客见~ 哈哈哈哈autoCreateTopicEnable=true#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭autoCreateSubscriptionGroup=true#Broker 对外服务的监听端口listenPort=10911#haService中使用  默认值为:listenPort + 1haListenPort=10912#主要用于slave同步master  listenPort - 2fastListenPort=10909#删除文件时间点,默认凌晨4点deleteWhen=04#文件保留时间,默认48小时fileReservedTime=48#commitLog每个文件的大小默认1GmapedFileSizeCommitLog=1073741824#ConsumeQueue每个文件默认存30W条,根据业务情况调整mapedFileSizeConsumeQueue=300000#destroyMapedFileIntervalForcibly=120000#redeleteHangedFileInterval=120000#检测物理文件磁盘空间diskMaxUsedSpaceRatio=88#存储路径storePathRootDir=/home/rocketmq/store#commitLog 存储路径#storePathCommitLog=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/commitlog#消费队列存储#storePathConsumeQueue=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/consumequeue#消息索引存储路径#storePathIndex=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/index#checkpoint 文件存储路径#storeCheckpoint=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/checkpoint#abort 文件存储路径#abortFile=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/abort#限制的消息大小maxMessageSize=4194304#flushCommitLogLeastPages=4#flushConsumeQueueLeastPages=2#flushCommitLogThoroughInterval=10000#flushConsumeQueueThoroughInterval=60000#Broker 的角色#- ASYNC_MASTER 异步复制Master#- SYNC_MASTER 同步双写Master#- SLAVEbrokerRole=ASYNC_MASTER#刷盘方式#- ASYNC_FLUSH 异步刷盘#- SYNC_FLUSH 同步刷盘flushDiskType=ASYNC_FLUSH#发消息线程池数量sendMessageThreadPoolNums=64#拉消息线程池数量pullMessageThreadPoolNums=64#消息发送队列等待时间,默认200waitTimeMillsInSendQueue=400#发送消息是否使用可重入锁useReentrantLockWhenPutMessage=true
---
apiVersion: v1
kind: Service
metadata:name: rmqbrokerlabels:app: rmqbrokernamespace: merry
spec:type: NodePortports:- port: 10909targetPort: 10909name: slave-masternodePort: 10909- port: 10911targetPort: 10911name: listennodePort: 10911- port: 10912targetPort: 10912name: ha-servicenodePort: 10912selector:app: rmqbroker
---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: rmqbrokerlabels: {app: rmqbroker}namespace: merry
spec:serviceName: rmqbrokerreplicas: 1selector:matchLabels: {app: rmqbroker}template:metadata:labels: {app: rmqbroker}spec:affinity:nodeAffinity:preferredDuringSchedulingIgnoredDuringExecution:- weight: 1preference:matchExpressions:- key: rmbroker0nodeoperator: Invalues:- true    containers:- name: rmqbrokerimage: harbor.codemiracle.com.cn/baseapp/rocketmq:4.7.1imagePullPolicy: IfNotPresentcommand: ["/bin/sh","-c","/home/rocketmq/rocketmq-4.7.1/bin/mqbroker -c /etc/rocketmq/broker.conf"]resources:limits: {cpu: 4000m, memory: 8Gi}requests: {cpu: 1000m, memory: 2Gi}env:- {name: TZ, value: Asia/Shanghai}- {name: JAVA_OPT_EXT, value: -Duser.home=/opt -server -Xms1536m -Xmx4096m}#command: [/bin/bash, mqbroker, -c, /etc/rocketmq/broker.conf, -n, 'rocketmq-svc:9876',#  autoCreateTopicEnable=true]ports:- {containerPort: 10909}- {containerPort: 10911}- {containerPort: 10912}volumeMounts:- {name: vol-store, mountPath: /home/rocketmq/store}- {name: vol-broker-config, mountPath: /etc/rocketmq}volumes:- name: vol-broker-configconfigMap: {name: broker-config}volumeClaimTemplates:- metadata: {name: vol-store}spec:accessModes: [ReadWriteOnce]resources:requests: {storage: 1000Gi}storageClassName: custom-hostpath

console客户端

kind: ConfigMap
apiVersion: v1
metadata:name: rocketmq-console-cmnamespace: merry
data:users.properties: |+# 该文件支持热修改,即添加和修改用户时,不需要重新启动console# 格式, 每行定义一个用户, username=password[,N]  #N是可选项,可以为0 (普通用户); 1 (管理员)  #定义管理员 admin=admin123,1#定义普通用户#user1=user1#user2=user2role-permission.yml: |+# 该文件支持热修改,即添加和修改用户时,不需要重新启动console# 格式,如果增加和删除接口权限,直接在列表中增加和删除接口地址即可。# 接口路径配置支持通配符# * 表示匹配0或多个不是/的字符# ** 表示匹配0或多个任意字符# ? 表示匹配1个任意字符rolePerms:# 普通用户ordinary:- /rocketmq/nsaddr- /ops/*- /dashboard/**- /topic/*.query- /topic/sendTopicMessage.do- /producer/*.query- /message/*- /messageTrace/*- /monitor/*
---
apiVersion: apps/v1
kind: Deployment
metadata:labels:run: rocketmq-consolename: rocketmq-console-deploynamespace: merry
spec:replicas: 1selector:matchLabels:run: rocketmq-consoletemplate:metadata:labels:run: rocketmq-consolespec:containers:- name: rocketmq-consoleimage: harbor.codemiracle.com.cn/baseapp/rocketmq-console:2.0.0env:- name: TZvalue: Aisa/Shanghai- name: JAVA_OPTSvalue: "-Drocketmq.namesrv.addr=rocketmq-svc:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false -Drocketmq.config.loginRequired=true -Drocketmq.config.dataPath=/tmp/rocketmq-console/data"volumeMounts:- mountPath: /tmp/rocketmq-console/data/users.propertiesname: rocketmq-console-cmsubPath: users.properties- mountPath: /tmp/rocketmq-console/data/role-permission.ymlname: rocketmq-console-cmsubPath: role-permission.ymlvolumes:- name: rocketmq-console-cmconfigMap:name: rocketmq-console-cm
---
apiVersion: v1
kind: Service
metadata:labels:run: rocketmq-consolename: rocketmq-consolenamespace: merry
spec:type: NodePortports:- name: httpprotocol: TCPtargetPort: 8080port: 8080nodePort: 18080selector:run: rocketmq-console

这里主要以rocketmq 4.7.1为例,其他版本类似。


http://www.ppmy.cn/news/1255121.html

相关文章

sed笔记231127 `-e`基本正则,`-E`扩展版正则

-e基本正则,-E扩展版正则 -E, -r, --regexp-extended 在脚本中使用扩展正则表达式&#xff08;为保证可移植性使用 POSIX -E&#xff09;。-e或 --expression 接基本正则表达式, 可多次使用,多次过滤-f 或 --file 选项接脚本文件, 注意是脚本文件, 而不是输入文件 -e可以不写…

【开源】前后端分离的在线考试系统,支持多种部署方式

在线考试系统 https://download.csdn.net/download/mo3408/88593116 在线考试系统是一种利用网络技术&#xff0c;实现在线出题、答题、阅卷、成绩查询等一系列考试活动的系统。它不受地理位置限制&#xff0c;可以实现远程考试&#xff0c;大大提高了考试的效率和便利性。此…

【计算机概论 ①】- 电脑:辅助人脑的好工具

目录 一、电脑硬件的五大单元 二、一切设计的起点&#xff1a;CPU 的架构 三、其他单元的设备 四、运行流程 五、电脑的分类 六、电脑上面常用的计算单位&#xff08;容量、速度等&#xff09; 操作系统跟硬件有相当程度的关联性&#xff0c;所以&#xff0c;如果不了解一…

LeetCode417. Pacific Atlantic Water Flow

文章目录 一、题目二、题解 一、题目 There is an m x n rectangular island that borders both the Pacific Ocean and Atlantic Ocean. The Pacific Ocean touches the island’s left and top edges, and the Atlantic Ocean touches the island’s right and bottom edges…

在 Qt 的文本编辑类中,document() 是一个成员函数,用于获取文档对象

在 Qt 的文本编辑类中&#xff0c;document() 是一个成员函数&#xff0c;用于获取文档对象。它返回与文本编辑器关联的 QTextDocument 对象的指针。 QTextDocument 类是 Qt 中用于处理富文本内容的类。它包含了文本内容以及相关的格式、样式和布局信息。通过 document() 函数…

SmartSoftHelp8,图片版权保护工具,水印加密文件

设置水印文本内容 设置水印位置 设置水印图片内容 设置水印图片位置 对图片进行版权保护 下载地址&#xff1a; https://pan.baidu.com/s/1zBgeYsqWnSlNgiKPR2lUYg?pwd8888

免费AI洗稿软件【2023最新】

很多时候我们需要通过文字来表达观点、推广产品或服务。然而&#xff0c;长时间的文稿创作不仅费时费力&#xff0c;还容易陷入表达瓶颈。许多写手和从业者纷纷寻找一款方便、高效的AI洗稿工具。 文心一言洗稿软件。这款软件以其独特的文风生成和洗稿功能而备受瞩目。用户只需…

Rust多线程任务,发现有些线程一直获取不到锁【已解决】

问题描述 项目中用到rust&#xff0c;其中在多线程中用到了同一个对象的锁&#xff0c;然而发现其中一个线程一直拿不到这个锁。 解决过程 我先是在线程A中加入了sleep方法&#xff0c;这样做的效果就是&#xff0c;比最初好一些&#xff0c;但是拿到锁还是要较长时间&#xf…