rabbitmq集群与镜像集群部署
-
部署包地址:
RabbitMQ 与 Erlang版本对照表:RabbitMQ Erlang Version Requirements — RabbitMQ
RabbitMQ包下载地址:gh.api.99988866.xyz/https://git…
Erlang包下载地址:el/7/erlang-23.2.7-2.el7.x86_64.rpm - rabbitmq/erlang · packagecloud
-
单机安装命令:
rpm -Uvh rabbitmq-server-3.10.0-1.el8.noarch.rpm
yum install -y erlang
-
节点分布:
节点IP 所部署角色 节点名 192.168.1.142 - master-0 192.168.1.143 - slave-0 192.168.1.144 - slave-1 -
部署步骤:
4.1 三台节点安装服务:
rpm -Uvh rabbitmq-server-3.10.0-1.el8.noarch.rpm
4.2 单独启动每个服务:
# 先在第一台节点启动
rabbitmq-server -detached
# 将cookie拷贝给集群里的其他节点
scp /var/lib/rabbitmq/.erlang.cookie root@192.168.1.143:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@192.168.1.144:/var/lib/rabbitmq/
# 如拷贝后文件权限为root,需要手动调整
chown rabbitmq.rabbitmq .erlang.cookie
# 启动另外两节点
rabbitmq-server -detached
# 查看每个节点状态:
rabbitmqctl status
4.3 将其他节点加入主集群:
# 在其他两节点依次执行此命令,将两节点加入集群
rabbitmqctl stop_app
(不必须,需要重置时才需此命令:rabbitmqctl reset)
rabbitmqctl join_cluster rabbit@master-0
rabbitmqctl start_app
4.3+ 配置镜像模式(跳过此步骤,是普通的集群模式)
# 策略根据实际情况调整
#^test 匹配hello开头的队列
rabbitmqctl set_policy ha-all "^test" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
4.4 查看集群状态:
rabbitmqctl cluster_status
5. 开启web访问:
rabbitmq-plugins enable rabbitmq_managemen
# 集群模式则每台都需打开
6. 配置web访问用户:
# 创建admin用户与密码
rabbitmqctl add_user admin admin
# 设置admin为管理员
rabbitmqctl set_user_tags admin administrator
# 注:用户只需要在第一台节点创建即可;只有管理员才可以登陆web页面
helm 部署rabbitmq cluster及operator cluster
二者区别:
statefulset cluster:按照statefulset模板自定义编辑即可,但一个集群部署多套服务时,不可直接复用。需要调整多个values文件配置,及clusterName等。
operator cluster:按照operator设计者的理念,如需修改配置则须理解crd中的定义。但部署多套服务时只需要rabbitmq中修改name即可复用。(name同时为clusterName)
相同点:
部署后的集群模式相同,使用方法相同
1. rabbitmq statefulset cluster
-
获取chart地址:charts/bitnami/rabbitmq at main · bitnami/charts · GitHub
-
修改values配置文件
# 修改存储类名
18: storageClass: "local-path"
# 自定义密码
128: password: "reny.123"
# 调整pod副本数
545: replicaCount: 3
# 自定义资源配额
666: resources:
# 调整每个pod的存储卷大小
849: size: 10Gi
# 开启web端访问端口,如不用可不修改
865: type: NodePort
# 自定义nodeport端口映射
919: nodePorts:
- 安装:
helm install -f rabbitmq/values.yaml rabbitmq rabbitmq/
- 查看pod状态:
kubectl get po |grep rabbitmq
-
查询集群状态:
命令行:
kubectl exec -it rabbitmq-0 bash
rabbitmqctl cluster_status
# 镜像集群单独增加策略,或从web添加
#^hello 匹配hello开头的队列
rabbitmqctl set_policy ha-all "^hello" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
页面:
2. rabbitmq operator cluster
-
获取chart地址: github.com/bitnami/cha…
-
修改values配置文件
此处主要修改operator服务的配置,可直接启动。如有镜像,资源限制等需求自行修改即可
- 安装operator
helm install -f rabbitmq-cluster-operator/values.yaml rabbitmq-cluster-operator rabbitmq-cluster-operator/
- 查看operator pod状态
kubectl get po|grep rabbit
- 通过operator运行rabbitmq服务pod
# 写编排文件
# cat rabbitmq.yaml
apiVersion: rabbitmq.com/v1beta1
kind: RabbitmqCluster
metadata:
name: production-ready
spec:
replicas: 3
rabbitmq:
additionalConfig: |
cluster_partition_handling = pause_minority
vm_memory_high_watermark_paging_ratio = 0.99
disk_free_limit.relative = 1.0
collect_statistics_interval = 10000
default_user=user
default_pass=reny.123
persistence:
storageClassName: local-path
storage: "10Gi"
service:
type: NodePort
也可直接使用官方提供的生产模板,地址:github.com/rabbitmq/cl…
- 部署并查看服务状态
# 可写好后单独手动运行,也可放在chart/templates中,通过安装operator时一同部署
kubectl apply -f rabbitmq.yaml -n default
- 查询集群状态 命令行:
kubectl exec -it production-ready-server-0 bash
rabbitmqctl cluster_status
# 镜像集群单独增加策略,或从web添加
#^hello 匹配hello开头的队列
rabbitmqctl set_policy ha-all "^hello" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
页面:
rabbitmq账户权限及数据迁移
用户权限
-
查询vhost信息:
-
新建普通用户:
-
赋权:
点进 Users --> vhostTest 用户名
数据迁移
-
注:
迁移时,仅迁移队列及队列内消息,其他账户相关信息请自行创建。
-
打开shovel插件
常用插件配置有:
- rabbitmq_federation_management
- rabbitmq_management,rabbitmq_mqtt
- rabbitmq_stomp
- rabbitmq_delayed_message_exchange
- rabbitmq_shovel
- rabbitmq_shovel_management
- 在shovel management配置双方信息:
# 前提:新集群与旧集群地址互通
URI配置规则:
amqp://{username}:{password}@{hostIP}:{port}
port为amqp端口,默认5672
# 效果如下
- 查看同步状态:
- 查看新旧队列消息:
迁移后效果为:新队列中存在所有消息,旧队列中消息为0