k8s部署rabbitmq集群

k8s部署消息中间件RabbitMQ集群 部署前准备: k8s集群,详见k8s集群搭建。 部署机型:本集群有3个master节点,3个worknode节点,rabbitMQ副本3个,则由k8s自由调度到各个工作节点中。 一、编写集群yaml文件,rabbitmq-cluster.yaml。 apiVersion: v1 kind: ServiceAccount metadata: name: rabbitmq namespace: sit --- kind: Role apiVersion: rbac.authorizati... 阅读详情

一、前言

      本次部署方式为setafulset的方式部署rabbitmq集群,使用svc的无头服务,本次涉及使用到的服务有setafulset、secret、configmap、service、pv、pvc、sa,在rabbitmq的官网中使用的是operator的方式

     operator方式参考:RabbitMQ Cluster Kubernetes Operator Quickstart | RabbitMQ

二、部署

     创建rabbitmq yaml文件存放目录

     mkdir /opt/rabbitmq && cd /opt/rabbitmq

     编辑secret配置

     vi secret.yaml

kind: Secret
apiVersion: v1
metadata:
  name: rabbitmq
  namespace: rabbitmq
type: Opaque
stringData:
  rabbitDefaulUser: admin       #设置rabbitmq集群的用户名
  rabbitDefaultPass: admin      #设置rabbitmq集群的密码
  erlang.cookie: ERLANG_COOKIE    #集群需要用到的cookie值,每个节点都需要保持一致

    编辑configmap配置

     vi configmap.yaml

kind: ConfigMap
apiVersion: v1
metadata:
  name: rabbitmq-config
  namespace: rabbitmq
data:
   enabled_plugins: |
      [rabbitmq_management,rabbitmq_peer_discovery_k8s].
   rabbitmq.conf: |
      cluster_formation.peer_discovery_backend  = rabbit_peer_discovery_k8s
      cluster_formation.k8s.host = kubernetes.default.svc.cluster.local
      cluster_formation.k8s.address_type = hostname
      cluster_formation.k8s.hostname_suffix = .rabbitmq-headless.rabbitmq.svc.cluster.local
      cluster_formation.node_cleanup.interval = 30
      cluster_formation.node_cleanup.only_log_warning = true
      cluster_partition_handling = autoheal
      queue_master_locator=min-masters
      cluster_formation.randomized_startup_delay_range.max = 2
      vm_memory_high_watermark.absolute = 1GB
      disk_free_limit.absolute = 2GB
      loopback_users.guest = false

编辑rbac配置

   vi rbac.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: rabbitmq
  namespace: rabbitmq
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: endpoint-reader
  namespace: rabbitmq
rules:
- apiGroups: [""]
  resources: ["endpoints"]
  verbs: ["get"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: endpoint-reader
  namespace: rabbitmq
subjects:
- kind: ServiceAccount
  name: rabbitmq
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: endpoint-reader

编辑service配置

vi service.yaml

kind: Service
apiVersion: v1
metadata:
  name: rabbitmq-headless       #该service服务为提供无头服务
  namespace: rabbitmq
spec:
  clusterIP: None
  publishNotReadyAddresses: true
  ports:
   - name: amqp
     port: 5672
   - name: http
     port: 15672
  selector:
    app: rabbitmq

vi service-nodeport.yaml

kind: Service
apiVersion: v1
metadata:
  namespace: rabbitmq
  name: rabbitmq-service
spec:
  ports:
  - name: http
    protocol: TCP
    port: 15672
    nodePort: 30015  #管理web界面
  - name: amqp
    protocol: TCP
    port: 5672
    targetPort: 5672
    nodePort: 30016
  selector:
    app: rabbitmq
  type: NodePort

编辑pv配置(使用该nfs路径时一定要配置一定的写入权限,不然启动rabbitmq服务时会出现没有写入权限而报错)

vi pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: rabbitmq-pv01
spec:
  storageClassName: rabbitmq-pv    #定义了存储类型
  capacity:
    storage: 30Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: /volume2/k8s-data/rabbitmq/rabbitmq-pv01
    server: 10.1.13.99
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: rabbitmq-pv02
spec:
  storageClassName: rabbitmq-pv    #定义了存储类型
  capacity:
    storage: 30Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: /volume2/k8s-data/rabbitmq/rabbitmq-pv02
    server: 10.1.13.99
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: rabbitmq-pv03
spec:
  storageClassName: rabbitmq-pv    #定义了存储类型
  capacity:
    storage: 30Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: /volume2/k8s-data/rabbitmq/rabbitmq-pv03
    server: 10.1.13.99

编辑setafulset配置

vi setafulset.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: rabbitmq
  namespace: rabbitmq
spec:
  podManagementPolicy: Parallel
  serviceName: rabbitmq-headless
  selector:
    matchLabels:
      app: rabbitmq  
  replicas: 3  #副本数3
  template:
    metadata:
      labels:
        app: rabbitmq
      annotations:
        pod.alpha.kubernetes.io/initialized: "true"
    spec:
      affinity:             #配置反亲和性,使pod不能部署再同一个node上
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: "app"
                    operator: In
                    values:
                      - rabbitmq
              topologyKey: "kubernetes.io/hostname"
      tolerations:       #该配置是容忍污点,使pod可以部署再master上,可以不要该配置
      - key: "node-role.kubernetes.io/control-plane"
        operator: "Exists"
        effect: NoSchedule
      serviceAccountName: rabbitmq
      terminationGracePeriodSeconds: 10
      containers:
      - name: rabbitmq
        image: rabbitmq:3.10-management
        securityContext:
          runAsUser: 1000
        resources:
          limits:
            cpu: 2
            memory: 2Gi
          requests:
            cpu: 1
            memory: 1Gi
        volumeMounts:
          - name: config-volume
            mountPath: /etc/rabbitmq
          - name: rabbitmq-data      #使用pvc挂载数据目录,rabbitmq启动时会往该目录写入数据,所以挂载的该目录要具有写入权限
            mountPath: /var/lib/rabbitmq/mnesia
        ports:
          - name: http
            protocol: TCP
            containerPort: 15672
          - name: amqp
            protocol: TCP
            containerPort: 5672
        livenessProbe:
          exec:
            command: ["rabbitmq-diagnostics", "status"]
          initialDelaySeconds: 60
          periodSeconds: 60
          timeoutSeconds: 5
        readinessProbe:
          exec:
            command: ["rabbitmq-diagnostics", "status"]
          initialDelaySeconds: 20
          periodSeconds: 60
          timeoutSeconds: 5
        imagePullPolicy: Always
        env:
        - name: RABBITMQ_DEFAULT_USER
          valueFrom:
            secretKeyRef:
              key: rabbitDefaulUser
              name: rabbitmq              
        - name: RABBITMQ_DEFAULT_PASS
          valueFrom:
            secretKeyRef:
              key: rabbitDefaultPass
              name: rabbitmq
        - name: RABBITMQ_ERLANG_COOKIE
          valueFrom:
            secretKeyRef:
              name: rabbitmq
              key: erlang.cookie
        - name: HOSTNAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: RABBITMQ_USE_LONGNAME
          value: "true"
        - name: SERVICE_NAME
          value: "rabbitmq-headless"
        - name: RABBITMQ_NODENAME
          value: rabbit@$(HOSTNAME).$(SERVICE_NAME).$(NAMESPACE).svc.cluster.local
        - name: K8S_HOSTNAME_SUFFIX
          value: .$(SERVICE_NAME).$(NAMESPACE).svc.cluster.local
      volumes:
      - name: config-volume
        configMap:
          name: rabbitmq-config
          items:
          - key: rabbitmq.conf
            path: rabbitmq.conf
          - key: enabled_plugins
            path: enabled_plugins
  volumeClaimTemplates:
  - metadata:
      name: rabbitmq-data
    spec:
      storageClassName: "rabbitmq-pv"
      accessModes: [ "ReadWriteMany" ]
      resources:
        requests:
          storage: 30Gi

创建命名空间

kubectl create namespace rabbitmq

创建各yaml服务

kubectl create -f secret.yaml
kubectl create -f configmap.yaml
kubectl create -f pv.yaml
kubectl create -f service.yaml
kubectl create -f service-nodeport.yaml
kubectl create -f setafulset.yaml

查看集群状态

kubectl exec -it rabbitmq-0 -n rabbitmq -- rabbitmqctl cluster_status

可以看到rabbitmq集群正常运行,至此rabbitmq集群部署完成 

在Kubernetes上部署RabbitMQ集群的完整指南 Kubernetes作为当前最流行的容器编排平台,它通过声明式API简化了复杂分布式系统的管理。通过部署、扩展和管理应用程序容器的生命周期,Kubernetes能够支持在物理或虚拟机集群上运行的容器化应用。Kubernetes不仅支持自动化部署、扩展和故障转移,还提供了负载均衡、服务发现、自动配置、批量执行和日志收集等高级功能。这使得Kubernetes成为管理大规模应用的理想选择。在Kubernetes中,Service资源是核心组件之一,它定义了一组Pod的访问策略。 阅读详情

相关推荐

k8s下部署rabbitmq集群部署方式

包含k8s下部署rabbitmq集群部署方式的说明,有pv.yaml, svc.yaml, statefulset.yaml

K8s安装RabbitMq以及基本使用

rabbitmq属于有状态的服务,即每个服务上存储的内容都不一样,对于有状态的服务,k8s推荐我们使用StatefulSet控制器。 rabbitmq中的部分信息需要持久化,持久化内容使用nfs进行存储,并使用storageclass动态分配pv。......

zhang19903848257的博客 6075

Solidworks转URDF避坑实录:从履带机器人到ROS仿真的完整配置流程

本文详细介绍了将Solidworks履带机器人模型转换为URDF格式并配置ROS仿真的完整流程,重点解析了坐标系设置、复杂关节定义、插件配置等关键步骤中的常见问题与解决方案,帮助开发者高效实现履带机器人在RVIZ和Gazebo中的精确仿真。

weixin_30693683的博客 457

k8s部署rabbitMQ集群

一.使用statefulset部署rabbitmq集群 在部署集群之前需要为集群创建一个Storage Class(存储类)来作为集群数据的持久化后端。本例中使用ceph作为后端存储,在创建存储类之前需要先搭建好,并保证在k8s集群各个节点上均能挂载该ceph存储。 1.创建命名空间rabbit-mq # cat rabbit-mq.yaml --- apiVersion: v1 kind: Namespace metadata: name: rabbit-mq # kubectl app

xiaxia2022的博客 6096

细说STM32单片机SPI-Flash芯片的FatFS移植及其应用实例详解

本文以开发板上的SPI-Flash芯片W25Q16为媒介详细介绍CubeMX中FatFS各个参数的意义和设置,分析生成的代码中FatFS各个文件的作用和关联,完成针对W25Q16的硬件访问层的移植。继续使用旺宝红龙开发板STM32F407ZGT6 KITV1.0。

wenchm的博客 1640

C#国产化技术路线(全栈落地指南,适配信创场景)

本文详细介绍了C#语言在信创产业中的国产化适配方案。核心方案基于.NET8框架,通过硬件架构适配、基础软件替换和打包部署优化三个层面进行改造,无需更换开发语言即可适配国产CPU和操作系统。文章系统讲解了开发工具选择、全栈适配层改造、数据库替换等技术要点,并提供了桌面应用和服务端应用的具体开发流程。针对政务、金融、能源等典型场景给出了可直接套用的技术组合,同时总结了10个关键避坑点。该方案可复用C#开发特性,实现低成本迁移,已在多个行业成功落地。

weilinc的专栏 1200

kubernetes使用rabbitmq-peer-discovery-k8s部署rabbitmq集群

github:https://github.com/rabbitmq/rabbitmq-peer-discovery-k8s 参考里面的statefulset方式部署的例子 我是kubernetes v1.16.0,版本比较高,所以对yml做了一点小修改 rabbitmq_rbac.yaml --- apiVersion: v1 kind: ServiceAccount metada...

fuck487的博客 2761

别再花屏了!手把手教你用STM32CubeIDE搞定LVGL 8.3移植(附完整源码)

本文详细介绍了如何在STM32CubeIDE环境下成功移植LVGL 8.3,解决常见的花屏问题。从环境配置、显示驱动优化到编译警告处理,提供完整的实战方案和源码示例,帮助开发者快速实现流畅的嵌入式GUI界面。特别针对STM32平台的DMA2D加速和内存管理进行了深度优化。

weixin_33739646的博客 243

Helm部署高可用rabbitmq k8s 镜像集群

使用helm部署rbbitmq k8s 高可用镜像集群,镜像集群可以对rabbitmq服务进行服务和数据的容灾。随意连接一个节点,创建队列和交互机,把数据发送到队列,所有节点将同步队列的数据,避免在消费数据前数据丢失的风险。然后,如果有消费者对数据进行消费,所有节点对应的数据也将被清理。

ningkangming的博客 2947

RK3588S开发板实战:手把手教你调试IMX415摄像头(附常见问题排查)

本文提供了基于RK3588S开发板调试IMX415摄像头的完整实战指南。从硬件连接到软件配置,详细解析了设备树(DTS)设置、驱动加载验证及V4L2工具链使用,并附带了常见问题排查方法,帮助开发者快速解决摄像头调试中的典型问题,实现图像采集与性能调优。

assembly8low的博客 596

YOLOv11 改进 - 特征融合 | RepGFPN重参数化特征金字塔网络 ,实现高效多尺度特征交互与融合

本文介绍了DAMO - YOLO目标检测方法及其相关技术在YOLOv11中的结合。DAMO - YOLO扩展了多项新技术,如MAE - NAS搜索检测主干网络、Efficient - RepGFPN构建检测neck等。在neck设计上,针对原始GFPN存在的问题,提出Efficient - RepGFPN,包括对不同尺度特征使用不同通道数、删除Queen - Fusion中额外上采样操作、改进特征融合方式等。我们将相关模块集成进YOLOv11,替换部分模块。

魔改工程师的博客 936

K8S - 集群中部署RabbitMQ

1、下载文件 https://github.com/dotbalo/k8s/ 2、创建namespace kubectl create namespace public-service 如果不使用public-service,需要更改所有yaml文件的public-service为你namespace。 sed -i "s#public-service#YOUR_NAMESPACE#g" *.yaml 3、创建持久化pv 此处采用的是静态PV方式,后端使用的是NFS,为了方便扩展可以使用

迦南的专栏 1397

一周一个Unity小游戏2D反弹球游戏 - 球反弹的方向

本文将实现当球在球板上反弹时,会根据球板移动的方向来给球施加反弹的力,例如当球板往左移动时反弹球,则球应向左上方反弹,若球板往右移动时反弹球,则球应向右上方反弹。

Giver的博客 752

基于k8s手动部署rabbitmq集群(Manually Deploying RabbitMQ Cluster Based on k8s)

RabbitMQ是实现了高级消息队列协议AMQP的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。AMQP:Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于,此协议的客户端与消息中间件可传递消息,并不受产品、开发语言灯条件的限制。本章详细介绍基于k8s手动部署rabbitmq集群。

Linux运维老纪的博客 1313

《大数据之路:阿里巴巴大数据实践》-第1篇 数据技术篇 -第3章数据同步

我们将数据釆集分为日志采集和数据库数据同步两 部分。数据同步技术更通用的含义是不同系统间的数据流转,有多种不 同的应用场景。主数据库与备份数据库之间的数据备份,以及主系统与 子系统之间的数据更新,属于同类型不同集群数据库之间的数据同步。 另外,还有不同地域、不同数据库类型之间的数据传输交换,比如分布 式业务系统与数据仓库系统之间的数据同步。对于大数据系统来说,包 含数据从业务系统同步进入数据仓库和数据从数据仓库同步进入数据 服务或数据应用两个方面。本章侧重讲解数据从业务系统同步进入数据 仓库这个环节,但其适

m0_54252387的博客 961

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

在 K8s 集群上部署 RabbitMQ 实战

作者:老Z,云原生爱好者,目前专注于云原生运维,KubeSphere Ambassador。 前言 知识点 定级:入门级 RabbitMQ 单节点安装部署 RabbitMQ 集群安装部署 GitOps 运维思想 演示服务器配置 主机名 IP CPU 内存 系统盘 数据盘 用途 zdeops-master 192.168.9.9 2 4 40 200 Ansible 运维控制节点 ks-k8s-master-0 192.168.9.91 4 16 40 200+200 Kube

KubeSphere 2789

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Docker 与 Kubernetes 部署 RabbitMQ 集群(一)

容器化部署流程、服务编排与高可用配置、Kubernetes Operator 实践。

1504

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

K8S部署:Dockerfile构建rabbitmq镜像,并部署到K8S集群暴露端口出来。

Dockerfile构建rabbitmq镜像,并部署到K8S集群暴露端口出来。 一、构建rabbitmq2.8.7版本镜像 背景描述: rabbitmq 版本:RabbitMQ 2.8.7 erlang版本:otp_src_R16B03 并已事先下载好文件到本地 dockerfile文件如下: FROM centos:centos7.4.1708 MAINTAINER xiaojun "490089459@qq.com" RUN yum install -y gcc glibc-devel gcc-c++

那个那个 1390

K8S 部署rabbitmq集群

K8S 部署rabbitmq集群 版本介绍 名称 版本 k8s 1.18 rabbitmq 3.8 命名空间:rabbitmq 我这里已经建立 configmap 配置文件 [root@k8s-master01 rabbitmq]# cat configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: rabbitmq-config namespace: rabbitmq data: enabled_plug

WEN_BK的博客 729

kubernetes部署rabbitmq集群

os:centos7 kubernetes版本:1.8 rabbitmq版本:3.7.4(只要有下面所说的功能就可以,版本不一定非要这个号的)首先说明一下,rabbitmq是使用autocluster插件去调用kubernetes apiserver获取rabbitmq服务的endpoints获取node节点信息,并加入集群的。下面开始操作:1. kubernetes环境2. 下载docker镜像...

莫之云间的专栏 4633

【云原生 | Kubernetes 系列】— k8s-helm 部署rabbitmq集群

Helm帮助您管理 Kubernetes 应用程序——Helm Charts 帮助您定义、安装和升级最复杂的 Kubernetes 应用程序。Helm 可以使用 Charts 启动 Kubernetes 集群。版本下载地址:https://github.com/helm/helm/releases。官方文档:https://helm.sh/docs/intro/install/5:访问集群 http://$NODE_IP:30672/3:运行rabbitmq集群。4:查看是否启动完成。

云录 1636

K8s 利用docker快速部署RabbitMQ集群

1.创建容器(所有节点都需要做) 1.1 宿主机环境 kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1 docker-19.03.13 1.2 三台节点配置信息 1.2创建持久数据目录和hosts配置 2.创建容器并运行(所有节点都需要做) 3.加入节点(除主节点的其他节点需要做) ...

qq_16397829的博客 556

docker 部署rabbitmq,k8s部署rabbitmq集群,跟踪和监控rabbitmq

docker部署rabbit 在docker环境部署RabbitMQ RabbitMQ是用 Erlang 编写的,直接部署的话需要先部署 Erlang 环境,比较麻烦。在 docker 环境下部署就比较简单了,直接使用rabbitmq官方提供的镜像即可。 登录 docker 节点,运行 docker pull rabbitmq:management 这里使用的是带 web 管理插件的...

1万+

Kubernetes 部署 RabbitMQ 集群

一、安装步骤 ConfigMap configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: rabbitmq-config namespace: default data: enabled_plugins: | [rabbitmq_management,rabbitmq_mqtt,rabbitmq_peer_discovery_k8s]. rabbitmq.conf: | ## Cluste...

liweihai399的专栏 1181
上一篇: nginx配置ssl证书
下一篇: k8s集群部署elk
Apex   Predator
博客等级 码龄6年 9371粉丝 289原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值