- Keepalived配置文件
global_defs {
router_id NodeA #路由ID, 主备的ID不能相同
} - 自定义监控脚本
vrrp_script chk_haproxy {
script “/etc/keepalived/check_haproxy.sh”
interval 5
weight 2
} - Keepalived配置文件
global_defs {
router_id NodeB #路由ID, 主备的ID不能相同
} - 自定义监控脚本
vrrp_script chk_haproxy {
script “/etc/keepalived/check_haproxy.sh”
interval 5
weight 2
} - !/bin/bash
if [ $(ps -C haproxy —no-header | wc -l) -eq 0 ];then
haproxy -f /opt/haproxy-1.7.8/haproxy.cfg
fi
sleep 2
if [ $(ps -C haproxy —no-header | wc -l) -eq 0 ];then
service keepalived stop
fi
三、KeepAlived配置高可用
Keepalived,它是一个高性能的服务器高可用或热备解决方案,Keepalived主要来防止服务器单点故障的发生问题,可以通过其与Nginx、Haproxy等反向代理的负载均衡服务器配合实现web服务端的高可用。Keepalived以VRRP协议为实现基础,用VRRP协议来实现高可用性(HA)。
- KeepAlived安装
firewall-cmd —direct —permanent —add-rule ipv4 filter INPUT 0 —in-interface ens192 —destination 224.0.0.18 —protocol vrrp -j ACCEPT
firewall-cmd —reload
Keepalived的官网下载Keepalived的安装文件,目前最新的版本为:keepalived-2.0.17.tar.gz,下载地址为http://www.keepalived.org/download.html。
下载之后进行解压和编译安装。
tar zxvf keepalived-2.0.17.tar.gz
cd keepalived-2.0.17
./configure —prefix=/opt/keepalived —with-init=SYSV
#注:(upstart|systemd|SYSV|SUSE|openrc) #根据你的系统选择对应的启动方式
make
make install
- KeepAlived配置
之后将安装过后的Keepalived加入系统服务中,详细步骤如下:
cp /opt/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /opt/keepalived/etc/sysconfig/keepalived /etc/sysconfig
cp /opt/keepalived/sbin/keepalived /usr/sbin/
chmod +x /etc/init.d/keepalived
chkconfig —add keepalived
chkconfig keepalived on
#Keepalived默认会读取/etc/keepalived/keepalived.conf配置文件
mkdir /etc/keepalived
cp /opt/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
接下来修改/etc/keepalived/keepalived.conf文件,在Keepalived的Master上配置详情如下:
Keepalived配置文件
global_defs {
router_id NodeA #路由ID, 主备的ID不能相同
}
自定义监控脚本
vrrp_script chk_haproxy {
script “/etc/keepalived/check_haproxy.sh”
interval 5
weight 2
}
vrrp_instance VI_1 {
state MASTER #Keepalived的角色。Master表示主服务器,从服务器设置为BACKUP
interface eth0 #指定监测网卡
virtual_router_id 1
priority 100 #优先级,BACKUP机器上的优先级要小于这个值
advert_int 1 #设置主备之间的检查时间,单位为s
authentication { #定义验证类型和密码
auth_type PASS
auth_pass root123
}
track_script {
chk_haproxy
}
virtual_ipaddress { #VIP地址,可以设置多个:
192.168.16.130
}
}
Backup中的配置大致和Master中的相同,不过需要修改global_defs{}的router_id,比如置为NodeB;其次要修改vrrp_instance VI_1{}中的state为BACKUP;最后要将priority设置为小于100的值。注意Master和Backup中的virtual_router_id要保持一致。下面简要的展示下Backup的配置:
Keepalived配置文件
global_defs {
router_id NodeB #路由ID, 主备的ID不能相同
}
自定义监控脚本
vrrp_script chk_haproxy {
script “/etc/keepalived/check_haproxy.sh”
interval 5
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0 #指定监测网卡
virtual_router_id 1
priority 80 #优先级,BACKUP机器上的优先级要小于这个值
advert_int 1 #设置主备之间的检查时间,单位为s
authentication { #定义验证类型和密码
auth_type PASS
auth_pass root123
}
track_script {
chk_haproxy
}
virtual_ipaddress { #VIP地址,可以设置多个:
192.168.16.130
}
}
为了防止HAProxy服务挂了,但是Keepalived却还在正常工作而没有切换到Backup上,所以这里需要编写一个脚本来检测HAProxy服务的状态。当HAProxy服务挂掉之后该脚本会自动重启HAProxy的服务,如果不成功则关闭Keepalived服务,如此便可以切换到Backup继续工作。这个脚本就对应了上面配置中vrrp_script chk_haproxy{}的script对应的值,/etc/keepalived/check_haproxy.sh的内容如代码清单所示。
!/bin/bash
if [ $(ps -C haproxy —no-header | wc -l) -eq 0 ];then
haproxy -f /opt/haproxy-1.7.8/haproxy.cfg
fi
sleep 2
if [ $(ps -C haproxy —no-header | wc -l) -eq 0 ];then
service keepalived stop
fi
如此配置好之后,使用service keepalived start命令启动192.168.16.128和192.168.16.129中的Keepalived服务即可。之后客户端的应用可以通过192.168.16.130这个IP地址来接通RabbitMQ服务。
