【k8s中安装rabbitmq】k8s中基于安装rabbitmq并搭建镜像集群-pvc版

文章目录

      • 简介
      • 一.条件及环境说明
        • 4.2.创建configmap配置
        • 4.3.创建statefulset和service headless配置
        • 4.4.授权配置
        • 4.5.创建service配置
      • 五.安装完后的配置
      • 六.安装说明

简介

该文搭建的rabbitmq集群是采用rabbitmq_peer_discovery_k8s的形式进行搭建,是通过该插件自动从k8s api中读取节点信息并组建rabbitmq集群,采用搭建方式是一个statefulset,三个副本的形式,所以要保证数据的持久可以采用hostpath+节点亲和性,也可以采用pvc的形式,本文将讲述采用pvc的形式来报障数据的持久化。

一.条件及环境说明

k8s版本k8s-1.29.4,采用共享存储的形式搭建,共享存储采用自建的root-ceph的形式,如果是采用阿里云的集群可以通过挂载硬盘、挂载nas或者对象存储来实现数据持久化,采用共享存储的缺点就是普遍存在读写性能较差的问题。

4.2.创建configmap配置

将如下配置保存到autotest-rabbitmq-config.yaml,配置中配置默认的vhost和用户密码,并初始化好集群节点【安装前规划好节点名称】信息。

apiVersion: v1
kind: ConfigMap
metadata:name: autozx-rabbitmq-confignamespace: zx-applabels:appname: pcauto-zxapp: autozx-rabbitmq-config 
data:enabled_plugins: |[rabbitmq_management,rabbitmq_peer_discovery_k8s].rabbitmq.conf: |cluster_name = autozx-rabbitmqlisteners.tcp.default = 5672default_vhost = /default_user = admindefault_pass = pconlinedefault_user_tags.administrator = truedefault_user_tags.management = truedefault_user_tags.custom_tag = truechannel_max = 1024tcp_listen_options.backlog = 2048cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8scluster_formation.k8s.host = kubernetes.default.svc.cluster.localcluster_formation.k8s.address_type = hostnamecluster_formation.node_cleanup.interval = 30cluster_formation.node_cleanup.only_log_warning = truecluster_partition_handling = autohealqueue_master_locator=min-mastersloopback_users.guest = falsecluster_formation.k8s.hostname_suffix = .autozx-rabbitmq.zx-app.svc.cluster.local
4.3.创建statefulset和service headless配置

采用3副本

apiVersion: apps/v1
kind: StatefulSet
metadata:name: autozx-rabbitmq namespace: zx-app labels:appname: pcauto-zxapp: autozx-rabbitmq
spec:serviceName: "autozx-rabbitmq"replicas: 3selector:matchLabels:app: autozx-rabbitmqtemplate:metadata:labels:app: autozx-rabbitmqspec:containers:- name: rabbitmq-serverimage: pcgroup-registry-vpc.cn-shenzhen.cr.aliyuncs.com/public/rabbitmq:3.12.14-management imagePullPolicy: IfNotPresentenv:- name: RABBITMQ_ERLANG_COOKIEvalue: "YZSDHWMFSMKEMBDHSGGZ"- name: K8S_SERVICE_NAMEvalue: autozx-rabbitmq - name: POD_IPvalueFrom:fieldRef:fieldPath: status.podIP- name: POD_NAMEvalueFrom:fieldRef:fieldPath: metadata.name- name: POD_NAMESPACEvalueFrom:fieldRef:fieldPath: metadata.namespace- name: RABBITMQ_USE_LONGNAMEvalue: "true"- name: RABBITMQ_NODENAMEvalue: rabbit@$(POD_NAME).$(K8S_SERVICE_NAME).$(POD_NAMESPACE).svc.cluster.localports:- name: httpcontainerPort: 15672 - name: amqpcontainerPort: 5672 readinessProbe:exec:command:- rabbitmq-diagnostics- statusinitialDelaySeconds: 20periodSeconds: 60timeoutSeconds: 10volumeMounts:- name: rbmq-datamountPath: /var/lib/rabbitmq- name: rabbitmq-config-volumemountPath: /etc/rabbitmq/ restartPolicy: Always serviceAccountName: rabbitmq-clusterterminationGracePeriodSeconds: 30volumes:- name: rabbitmq-config-volumeconfigMap:name: autozx-rabbitmq-configvolumeClaimTemplates:- metadata:name: rbmq-dataspec:accessModes:- ReadWriteManystorageClassName: example-storageclassresources:requests:storage: 20Gi
---
apiVersion: v1
kind: Service
metadata:name: autozx-rabbitmqnamespace: zx-applabels:appname: pcauto-zxapp: autozx-rabbitmq
spec:ports:- port: 5672clusterIP: Noneselector:app: autozx-rabbitmq

注:如果为了避免相同的pod分配到同一节点可以加上如下配置:

      affinity:podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: "app"operator: Invalues:- autozx-rabbitmqtopologyKey: "kubernetes.io/hostname"
4.4.授权配置

配置serviceAccount、role、RoleBinding来给statefulset进行授权读取节点信息

apiVersion: v1
kind: Service
metadata:name: autozx-rabbitmq-managenamespace: zx-applabels:app: autozx-rabbitmq-manageappname: pcauto-zx
spec:ports:- port: 5672name: amqp- port: 15672name: httpselector:app: autozx-rabbitmqtype: LoadBalancer 
[root@autobbs-docker-240-213 rabbitmq]# cat rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:name: rabbitmq-clusternamespace: zx-app
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: rabbitmq-clusternamespace: zx-app
rules:
- apiGroups: [""]resources: ["endpoints"]verbs: ["get"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: rabbitmq-clusternamespace: zx-app
roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: rabbitmq-cluster
subjects:
- kind: ServiceAccountname: rabbitmq-clusternamespace: zx-app
4.5.创建service配置

给amqp端口5672和管理端口15672配置一个service的代理服务.

apiVersion: v1
kind: Service
metadata:name: autozx-rabbitmq-managenamespace: zx-applabels:app: autozx-rabbitmq-manageappname: pcauto-zx
spec:ports:- port: 5672name: amqp- port: 15672name: httpselector:app: autozx-rabbitmqtype: LoadBalancer 

五.安装完后的配置

将rabbitmq的集群设置成3节点的镜像集群,在4.4步骤操作完以后就可以通过loadbalancer的IP进行登录控制台了:http://ip:15672,用configmap中设置的 default_user和default_pass来登录。
在这里插入图片描述

镜像模式设置:
在这里插入图片描述

设置后:
在这里插入图片描述
在这里插入图片描述

镜像模式可以通过命令设置:
设置demo的vhost的镜像执行命令:
rabbitmqctl set_policy -p demo ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
设置默认vhost /的镜像模式:
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'

六.安装说明

  • 使用配置前将配置中的autozx替换成自己需要的命名,配置的命名空间为:zx-app,修改成自己的命名空间,appname为pcauto-zx,修改成自己的应用名称,该标签也可以删除。
  • 配置中的镜像地址采用了私有的镜像地址,镜像是dockerhub上下载的rabbitmq:3.12.14-management 镜像到私有镜像仓库的,如果能直通外网的k8s可以直接用rabbitmq:3.12.14-management 。否则配置一个可以通的镜像地址。
  • 默认的用户名和密码是admin。
  • pvc模板中的存储类:example-storageclass 修改成自己的存储类
  • "五.安装后的配置"由于配置方法都是一样,就采用了上一篇文章中的截图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/374493.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这8个AI工具高效无敌,设计师又轻松了!

人工智能工具在设计领域的广泛应用给艺术界带来了巨大的变化。设计师可以使用各种工具来展示他们的创造力和灵感,而不受时间和空间的限制。这些专业的人工智能绘图工具允许设计师看到每一步的最终结果,从而更高效、更方便地创造和设计灵感。因此&#xf…

什么是业务架构、数据架构、应用架构和技术架构

TOGAF(The Open Group Architecture Framework)是一个广泛应用的企业架构框架,旨在帮助组织高效地进行架构设计和管理。而TOGAF的核心就是由我们熟知的四大架构领域组成:业务架构、数据架构、应用架构和技术架构。 所以今天我们就来聊聊,企业…

水文:CBA业务架构师

首先, 我们来了解一下什么是CBA业务架构师? CBA业务架构师认证是由业务架构师公会(Business Architecture Guild)授予的一种专业认证。标志着证书持有者已经掌握了业务架构的核心技能和知识,能够在实际工作中熟练运用业务架构技术和框架&…

SAP S4 销售组的定义和分配

spro-企业结构-定义-销售与分销-维护销售组 新增一个记录 spro-企业结构-分配-销售与分销-给销售办公室分配销售组

c++多态——virtual关键字,C++11 override 和 final,析构函数的重写。

目录 多态基本概念 virtual关键字 C11 override 和 final 举个栗子 析构函数的重写(基类与派生类析构函数的名字不同) 多态基本概念 概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会 产生出不同…

关于string的‘\0‘与string,vector构造特点,反迭代器与迭代器类等的讨论

目录 问题一:关于string的\0问题讨论 问题二:C标准库中的string内存是分配在堆上面吗? 问题三:string与vector的capacity大小设计的特点 问题四:string的流提取问题 问题五:迭代器失效 问题六&#xf…

filex用户手册中文版解读

filex用户手册 filex的用户手册,看着好头疼呢,主要是没有🖊记录,感觉就是浮在空中,飘在天上,好像懂了,又好像啥也没了解到,哈哈,有点意思。为了解决这个bug,…

哪个牌子开放式耳机质量好?五款全网爆火款式盘点!

开放式耳机是目前最流行的一种无线蓝牙耳机,与TWS耳机一样,拥有小巧轻盈的耳机主体,也有便携的补能收纳充电仓,但不同的是,开放式耳机有更加舒适的佩戴体验。作为资深数码产品测评师,我最近测评了多款产品&…

基于前馈神经网络 FNN 实现股票单变量时间序列预测(PyTorch版)

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对…

原生小程序生成二维码并保存到本地

需求:我要在一个页面中生成一个二维码,并且这个二维码可以长按保存到本地或者发送给好友; 我这里是将生成的canvas二维码转换成图片,利用长按图片进行保存或转发 效果图: 第一步先下载对应的包: npm instal…

Docker部署gitlab私有仓库后查看root默认密码以及修改external_url路径和端口的方法

文章目录 1、docker部署最新版gitlab2、进入gitlab容器3、修改路径地址ip和端口4、检验效果 1、docker部署最新版gitlab #docker安装命令 docker run --detach \--name gitlab \--restart always \-p 1080:80 \-p 10443:443 \-p 1022:22 \-v /gitlab/config:/etc/gitlab \-v …

Apache中使用CGI

Apache24 使用Visual Studio 2022 // CGI2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <stdio.h> #include <stdlib.h>#include <stdio.h>void main() {//设置HTML语言printf("Content-type:text/html\n\n&q…

Redis基本命令源码解析-字符串命令

1. set 用于将kv设置到数据库中 2. mset 批量设置kv mset (msetnx) key1 value1 key2 value2 ... mset:msetCommand msetnx:msetnxCommand msetCommand和msetnxCommand都调用msetGenericCommand 2.1 msetGenericCommand 如果参数个数为偶数,则响应参数错误并返回 如果…

【游戏客户端】大话slg玩法架构(二)背景地图

【游戏客户端】大话slg玩法架构&#xff08;二&#xff09;背景地图 大家好&#xff0c;我是Lampard家杰~~ 今天我们继续给大家分享SLG玩法的实现架构&#xff0c;关于SLG玩法的介绍可以参考这篇上一篇文章&#xff1a;【游戏客户端】制作率土之滨Like玩法 PS&#xff1a;和之前…

hudi数据湖万字全方位教程+应用示例

1、时间轴&#xff08;TimeLine&#xff09; Hudi的核心是维护表上在不同的即时时间&#xff08;instants&#xff09;执行的所有操作的时间轴&#xff08;timeline&#xff09;&#xff0c;这有助于提供表的即时视图 一个instant由以下三个部分组成&#xff1a; 1&#xff09;…

视频号矩阵系统源码,实现AI自动生成文案和自动回复私信评论,支持多个短视频平台

在当今短视频蓬勃发展的时代&#xff0c;视频号矩阵系统源码成为了自媒体人争相探索的宝藏。这一强大的技术工具不仅能帮助我们高效管理多个短视频平台&#xff0c;更能通过AI智能生成文案和自动回复私信评论&#xff0c;为自媒体运营带来前所未有的便利与效率。 一、视频号矩…

layui-表单(输入框)

1.基本使用方法 先写一个表单元素块 form 加上layui-form 里面写行区块结构&#xff0c;如下&#xff1a; 2.输入框样式选项 input框 placeholder默认文本 autocomplete自动填充 lay-verify required必填 3.下拉菜单样式选项 默认选择第一项 select框 disable禁…

导员:你这么牛,那你来讲讲你项目的核心流程-判题模块吧

耗时一个月开发的OJ在线判题系统&#xff0c;文末有项目地址&#xff0c;目前还在更新代码~ 今天我们来开发OJ系统后端核心流程之一的判题模块 文章目录 判题机模块与代码沙箱的关系代码沙箱架构开发判题服务开发判题服务业务流程判断逻辑策略模式优化 小知识-Lombox Builder …

新品牌快速成长指南:揭秘品牌成功的黄金法则

打造一个新品牌是一个系统性工程&#xff0c;不是一两句话就能说清楚的。 作为一个13年的营销人&#xff0c;今天试图给大家以最简练和通俗的文字&#xff0c;详细讲讲打造一个全新的品牌都需要做些啥&#xff1f;码字不易&#xff0c;请多给点支持哦。 一、市场调研与定位&a…

Elasticsearch 开放推理 API 增加了对 Amazon Bedrock 的支持

作者&#xff1a;来自 Elastic Mark Hoy, Hemant Malik Elasticsearch 开放推理 API 增加了对托管在 Amazon Bedrock 上的模型生成嵌入的支持。 Elasticsearch 开放 infereence API 使开发人员能够创建推理端点并使用来自领先提供商的机器学习模型。从今天开始&#xff0c;托管…