docker pull rabbitmq:3.9.28-management
1.部署模板

apiVersion: v1
kind: Service
metadata:
  name: rabbitmq
spec:
  ports:
    - name: amqp
      port: 5672
      targetPort: 5672
    - name: management
      port: 15672
      targetPort: 15672
  selector:
    app: rabbitmq

---

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: rabbitmq
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rabbitmq
  template:
    metadata:
      labels:
        app: rabbitmq
    spec:
      imagePullSecrets:
        - name: harbor
      containers:
        - name: rabbitmq
          image: rabbitmq:3.9.28-management
          ports:
            - containerPort: 5672
            - containerPort: 15672
          resources:
            limits:
              cpu: 1024m
              memory: 2048Mi
            requests:
              cpu: 100m
              memory: 200Mi
          livenessProbe:
            initialDelaySeconds: 30
            periodSeconds: 10
            timeoutSeconds: 5
            successThreshold: 1
            failureThreshold: 3
            tcpSocket:
              port: 5672
          readinessProbe:
            initialDelaySeconds: 10
            periodSeconds: 10
            timeoutSeconds: 5
            successThreshold: 1
            failureThreshold: 3
            tcpSocket:
              port: 5672
          env:
            - name: RABBITMQ_DEFAULT_USER
              value: "guest"
            - name: RABBITMQ_DEFAULT_PASS
              value: "guest"
          volumeMounts:
            - name: data
              mountPath: /var/lib/rabbitmq/
            - name: localtime
              readOnly: true
              mountPath: /etc/localtime
      volumes:
        - name: data
          hostPath:
            type: DirectoryOrCreate 
            path: /data/znst/rabbitmq
        - name: localtime
          hostPath:
            type: File
            path: /etc/localtime
      nodeName: gem-yxyw-t-c02

暴露端口的service

apiVersion: v1
kind: Service
metadata:
  name: rabbitmq
spec:
  type: NodePort
  ports:
    - name: rabbitmq
      port: 5672
      targetPort: 5672
      nodePort: 30004
    - name: management
      port: 15672
      targetPort: 15672
      nodePort: 30005
  selector:
    app: rabbitmq

实际部署

apiVersion: v1
kind: Service
metadata:
  name: znst-rabbitmq-test
spec:
  type: NodePort
  ports:
    - name: rabbitmq
      port: 5672
      targetPort: 5672
      nodePort: 30004
    - name: management
      port: 15672
      targetPort: 15672
      nodePort: 30005
  selector:
    app: znst-rabbitmq-test

---

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: znst-rabbitmq-test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: znst-rabbitmq-test
  template:
    metadata:
      labels:
        app: znst-rabbitmq-test
    spec:
      imagePullSecrets:
        - name: harbor
      containers:
        - name: rabbitmq
          image: rabbitmq:3.9.28-management
          ports:
            - containerPort: 5672
            - containerPort: 15672
          env:
            - name: RABBITMQ_DEFAULT_USER
              value: "guest"
            - name: RABBITMQ_DEFAULT_PASS
              value: "Gd*(53#SALEMQ"
          resources:
            limits:
              cpu: 1024m
              memory: 2048Mi
            requests:
              cpu: 100m
              memory: 200Mi
          livenessProbe:
            initialDelaySeconds: 30
            periodSeconds: 10
            timeoutSeconds: 5
            successThreshold: 1
            failureThreshold: 3
            tcpSocket:
              port: 5672
          readinessProbe:
            initialDelaySeconds: 10
            periodSeconds: 10
            timeoutSeconds: 5
            successThreshold: 1
            failureThreshold: 3
            tcpSocket:
              port: 5672
          volumeMounts:
            - name: data
              mountPath: /var/lib/rabbitmq/
            - name: localtime
              readOnly: true
              mountPath: /etc/localtime
      volumes:
        - name: data
          hostPath:
            type: DirectoryOrCreate 
            path: /data/znst/rabbitmq
        - name: localtime
          hostPath:
            type: File
            path: /etc/localtime
      nodeName: cn-shenzhen.10.0.21.33

2.服务连接
http://10.0.21.33:30005/ web登录地址
http://10.0.21.33:30004 服务实际调用地址

host: 10.0.21.33
port: 30004
username: guest
password: Gd*(53#SALEMQ

3.rabbitmq新增用户:进入容器或者pod操作

如果想要跨机器登录RabbtiMQ的web管理平台,就需要新建用户,而不能用默认的用户guest。

下面记录一下新增用户的步骤:

1).添加新用户,用户名为root,密码为123456

rabbitmqctl add_user root 123456
2).为该用户分配所有权限

rabbitmqctl set_permissions -p / root “." ".” “.*”
3).设置该用户为管理员角色

rabbitmqctl set_user_tags root administrator
现在就可以用root用户在其他机器上登录RabbitMQ的web管理平台了。
番外篇数据迁移
cd /data/znst/
tar -zcvf rabbitmq.tar.gz rabbitmq
登陆目标主机拷贝过去数据目录执行
tar -xvf rabbitmq.tar.gz 覆盖原有的数据目录,重启服务

4.RabbitMQ数据迁移
rabbitmq日志及存储数据磁盘空间在使用过程中如果不及时消费或者数据量过多,会导致磁盘空间使用率日益增高,严重时可能会发生rabbitmq服务器宕机。一旦发现rabbitmq磁盘空间不够用,或者发生服务器宕机,重启服务失败,此时就需要更大的磁盘来存储rabbitmq数据,才能保证服务正常启动。为了保证数据不丢失,如何迁移数据显得尤为重要,以下为数据迁移步骤,请按顺序执行。
一、 rabbitMq管理界面监控数据
二、 默认存储路径
MNESIA_BASE 后端存储目录,默认为/var/lib/rabbitmq/mnesia
LOG_BASE 日志目录,默认为/var/log/rabbitmq/
注意:如果部署服务器时修改过rabbitmq服务,需要到对应的目录下拷贝存储数据和日志

三、拷贝原有的存储数据和日志文件
拷贝数据文件,通过文件传输工具,把文件下载下来备用

cd /var/lib/rabbitmq/mnesia
拷贝日志文件,通过文件传输工具,把文件下载下来备用

cd /var/log/rabbitmq/
四、新建日志和文件存储位置,并将原数据上传到新建的文件目录内
#进入数据存储路径
cd /data/rabbitmq/data
#上传数据文件
#进入日志存储路径
cd /data/rabbitmq/data
#上传日志存储文件
文件上传后,需要对目录的权限进行修改,如果不进行修改,会导致服务重启失败

chown -R rabbitmq:rabbitmq /data/rabbitmq
五、修改rabbitmq配置文件中日志文件和数据文件的存储路径
#进入目录
cd /etc/rabbitmq
#打开文件
vim rabbitmq-env.conf
#添加以下内容
RABBITMQ_MNESIA_BASE=/data/rabbitmq/data
RABBITMQ_LOG_BASE=/data/rabbitmq/log
六、重启rabbitmq服务
systemctl restart rabbitmq-server.service
七、登录管理界面,查看数据是否正常
原账号能够登录成功,说明数据迁移成功,因为如果数据迁移失败,用户数据会丢失,原账号是登录不成功的

通过图形界面导如导出队列,相当于导出导入表结构
Overview》Export definitions 导出
Overview》Import definitions 导入
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐