前言
生产环境中连接单节点服务是比较危险的情况,一旦服务宕机则会出现前端用户访问失败的情况,而且只连单机服务容易造成单机负载过高导致服务响应过慢,使用Rabbitmq集群则能够避免这种情况,同时通过haProxy实现负载均衡,再使用keepalived服务实现虚拟IP漂移,任一节点服务宕机均不会影响服务的正常运行,对于业务要求度比较高的场合适合此种模式,尤其是7x24的服务。
一、配置信息
- 本次服务安装涉及的中间件信息、服务器信息如下表所示:
IP | 主机名 | 操作系统 | 用途 |
---|---|---|---|
80.31.102.15 | cd15 | Centos 7.6 | MQ集群节点 |
80.31.102.18 | cd18 | Centos 7.6 | MQ集群节点 |
80.31.102.22 | cd22 | Centos 7.6 | MQ集群节点 |
80.85.6.4 | dy04 | Centos 7.6 | haproxy+keepalived |
80.85.6.6 | dy06 | Centos 7.6 | haproxy+keepalived |
- 集群规划图如下所示:
- 本次安装的rabbitmq3.8.1、haproxy-1.9.5、keepalived-2.1.5均提供下载地址,也可自行选择其他版本,或者直接使用yum -y install命令进行安装 ,楼主选择源码安装的原因主要是方便管理,建议各位在实际生产中尽量使用源码安装,方便后期运维管理
#Rabbitmq
链接地址: https://pan.baidu.com/s/1CUxFJX8oMsRd9tPeIqLUmg
提取码: 9tbr
#haproxy+keepalived
链接地址:https://pan.baidu.com/s/1XSd9IlouPjp9V0e31tHPQw
提取码: spk8
二、安装
Rabbitmq集群
安装配置Rabbitmq集群,需要先安装单节点rabbitmq服务,单机版服务安装可参照此项地址《Rabbitmq 单节点安装》
分别在上述三台服务器(80.31.102.15、80.31.102.18、80.31.102.22)上安装Rabbitmq单机服务。
1.MQ集群
- 更改主机信息
#1、修改主机名,三台主机都需要修改
hostnamectl set-hostname cd15
#2、修改/etc/hosts,新增如下内容
80.31.103.15 cd15
80.31.103.15 cd18
80.31.103.15 cd22
#3、三台主机的hosts文件都需要修改,重启完成后进行ping码测试,查看主机名是否相通
ping cd18
ping cd22
- 同步.erlang.cookie
#1、查看.erlang.cookie,源码安装的.erlang.cookie文件在用户的$HOME下,我这边编译安装erlang的用户是bph_zhdd
ls -a /home/bph_zhdd/.erlang.cookie
#2、使用scp将主节点.erlang.cookie同步到其他两个节点
scp -P 63322 /home/bph_zhdd/.erlang.cookie bph_zhdd@:/home/bph_zhdd
#3、也可人工修改.erlang.cookie,先更改.erlang.cookie权限,再人工修改
chmod 600 .erlang.cookie
- MQ集群搭建
#1、逐个启动节点,在三个服务器上分别执行
rabbitmq-server -detached
#2、将节点2(80.31.102.18以内存节点的方式加入节点1)
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@cd15
rabbitmqctl start_app
#3、查看集群节点状态
rabbitmqctl cluster_status
#3、将节点2(80.31.102.22以磁盘节点的方式加入节点1)
rabbitmqctl stop_app
rabbitmqctl reset
#默认为磁盘节点
rabbitmqctl join_cluster rabbit@cd15
rabbitmqctl start_app
#3、查看集群节点状态
rabbitmqctl cluster_status
2.集群访问
- 使用google浏览器任一输入其中一台服务器ip:15672即可访问rabbitmq集群服务,集群访问如下图所示: