这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情
前言
大家好,我是程序猿小白 GW_gw,很高兴能和大家一起学习进步。
以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。
摘要
本文主要带大家了解如何在Centos7中使用Haproxy配置RabbitMQ的负载均衡,并且使用Keepalived来实现高可靠性。
使用Haproxy和Keepalive实现高可用和负载均衡
1. 安装并配置Haproxy
在各节点分别安装:
yum -y install haproxy
修该各节点的haproxy.cfg文件
vim /etc/haproxy/haproxy.cfg
在配置文件最后添加如下内容:
### haproxy 监控页面地址是:http://192.168.44.251:9188/status
listen admin_stats
bind *:9188 #绑定端口9188
mode http #配置http模式
log 127.0.0.1 local3 err
stats refresh 60s #每60秒更新监控数据
stats uri /status
stats realm welcome login\ Haproxy
stats auth admin:123456 #监控页面的用户名和密码
stats hide-version
stats admin if TRUE
### rabbitmq 集群配置,转发到
listen rabbitmq_cluster
bind *:5673 #对外暴露端口
mode tcp #配置tcp模式
balance roundrobin #采用轮询算法,也可以使用其他算法,读者可自行了解
server node1 192.168.44.251:5672 check inter 2000 rise 2 fall 3 weight 1
server node2 192.168.44.252:5672 check inter 2000 rise 2 fall 3 weight 1
如果rabbitmq节点和haproxy安装在同一台机器上,改变对外暴露接口,避免和rabbitmq抢占端口。
参数解释:
# inter 3000 健康检查时间间隔为3秒
# rise 3 检测3次才认为是正常的
# fall 3 失败3次才认为是不可用的
# weight 1 权重
启动haproxy
haproxy -f /etc/haproxy/haproxy.cfg
访问http://192.168.44.251:9188/status测试:
2. 安装并配置Keepalived
虽然我们使用了负载均衡,但是如果haoproxy的节点故障,就算rabbitmq服务没问题我们也访问不了,所以我们使用Keepalived来实现故障转移。一个为主机master、一个为备机backup,当主机故障时,VIP(虚拟IP)会漂移到备机上。
下载keepalived:
yum -y install keepalived
修改配置文件:
vim /etc/keepalived/keepalived.conf
节点1和节点2的内容基本一致,内容在下面给出。
节点1修改内容如下:
global_defs {
# 路由id,主备节点不能相同
router_id rabbit-1
}
# 自定义监控脚本
vrrp_script chk_haproxy {
# 脚本位置
script "/etc/keepalived/haproxy_check.sh"
# 脚本执行的时间间隔
interval 5
weight 10
}
vrrp_instance VI_1 {
# Keepalived的角色,MASTER 表示主节点,BACKUP 表示备份节点
state MASTER
# 指定监测的网卡,可以使用 ifconfig 进行查看,我这里是ens32,每个人可能不同。
interface ens32
# 虚拟路由的id,主备节点需要设置为相同
virtual_router_id 1
# 优先级,主节点的优先级需要设置比备份节点高
priority 100
# 设置主备之间的检查时间,单位为秒
advert_int 1
# 定义验证类型和密码
authentication {
auth_type PASS
auth_pass 123456
}
# 调用上面自定义的监控脚本
track_script {
chk_haproxy
}
virtual_ipaddress {
# 虚拟IP地址(VIP)
192.168.44.251
}
}
节点2修改内容如下:
global_defs {
# 路由id,主备节点不能相同
router_id rabbit-2
}
vrrp_script chk_haproxy {
script "/etc/keepalived/haproxy_check.sh"
interval 5
weight 10
}
vrrp_instance VI_1 {
# BACKUP 表示备份节点
state BACKUP
interface ens32
virtual_router_id 1
# 优先级,备份节点要比主节点低
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
track_script {
chk_haproxy
}
virtual_ipaddress {
# 虚拟IP地址(VIP)
192.168.44.251
}
}
在指定位置创建haproxy状态检测脚本,脚本内容如下:
# 创建检测脚本
vim /etc/keepalived/haproxy_check.sh
#!/bin/bash
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then
haproxy -f /etc/haproxy/haproxy.cfg
fi
sleep 2
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then
service keepalived stop
fi
启动服务:
#先启动两个haproxy节点
haproxy -f /etc/haproxy/haproxy.cfg
#先启动主机keepalived,后启动备机keeplived
systemctl start keepalived
3. 在SpringBoot中使用
配置文件:
# 配置haproxy负载均衡
spring:
rabbitmq:
host: 192.168.44.251
port: 5673
username: admin
password: 123456
小结
以上就是如何在Centos7中配置RabbitMQ的负载均衡,并且使用Keepalived来实现高可靠性。希望能对读者有所帮助,如有不正之处,欢迎留言指正。