RabbitMQ + 镜像队列 + HAProxy 实现负载均衡的集群
一、集群管理(RabbitMQ扩容)
1. 环境介绍
| hostname | ip |
|---|---|
| mq1 | 192.168.80.16 |
| mq2 | 192.168.80.17 |
| mq3 | 192.168.80.18 |
| mqhaproxy | 192.168.80.19 |
单机部署
单机版安装地址:RabbitMQ3.8.4安装和配置

注意:修改三台节点的hostname文件,设置主机名称,分别mq1/mq2/mq3

修改三台节点的/etc/hosts文件,设置节点名称和ip地址的映射关系

2. 从mq1拷贝.erlang.cookie到mq2、mq3的相应目录(元数据共享)
如果没有该文件,手动创建 /var/lib/rabbitmq/.erlang.cookie ,生成Cookie字符串,或者启动一次RabbitMQ自动生成该文件。生产中推荐使用第三方工具生成。
2.1 我们首先在mq1上启动单机版RabbitMQ,以生成Cookie文件:
systemctl start rabbitmq-server

2.2 开始准备同步 .erlang.cookie 文件
RabbitMQ的集群依赖Erlang的分布式特性,需要保持Erlang Cookie一致才能实现集群节点的认证和通信,我们直接使用scp命令从node1远程传输。
scp /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@node4:/var/lib/rabbitmq/

同步完 .erlang.cookie 文件 后,在当前节点就可以访问其他节点
2.3 修改mq2和mq3上该文件的所有者为:rabbitmq:rabbitmq
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

注意: .erlang.cookie文件权限为400
3. 使用下述命令启动mq2和mq3上的RabbitMQ:
systemctl start rabbitmq-server

4. 将mq2和mq3这两个节点加入到集群中(默认情况下:一个节点就是一个集群)
4.1 以mq1节点为集群,查看集群状态:此时运行节点只有mq1节点
rabbitmqctl cluster_status

4.2 停止Erlang VM上运行的RabbitMQ应用,保持Erlang VM的运行
rabbitmqctl stop_app

4.3 移除当前RabbitMQ虚拟主机中的所有数据:重置
rabbitmqctl reset

本文介绍了使用RabbitMQ + 镜像队列 + HAProxy实现负载均衡集群的方法。包括RabbitMQ集群管理与扩容、镜像集群配置以解决单点故障,HAProxy的安装与配置用于负载均衡,还提及了RabbitMQ自带监控工具及Prometheus + Grafana等监控方案。
最低0.47元/天 解锁文章
826

被折叠的 条评论
为什么被折叠?



