Ke+ha集群搭建作用
Keepalived的存在其中一个作用也是防止出现haproxy节点出现单点故障,要实现故障自动转移。Keepalived集群通过VRRP(虚拟路由冗余协议)共同构建一个虚拟ip。一般情况,整个集群只对外提供一个ip。根据keeplived集群中各节点优先级,来抢占虚拟IP,若抢占虚拟IP的节点挂掉,则其他backup服务集群根据优先级选举产生新的一个master,使用虚拟ip。
环境部署
Centos7虚拟机 192.168.71.131
Centos7虚拟机 192.168.71.132
修改配置文件
Keepalived需要安装在haproxy节点上。
在192.168.71.131上通过yum安装keepalived。安装过程此处忽略
Keepalived配置文件修改
vi/etc/keepalived/keepalived.conf
router_id:指定标识该机器的route_id;
##添加执行的脚本
vrrp_scriptchk_haproxy
{
script"/etc/check_haproxy.sh" #检测haproxy 状态的脚本路径
interval3 # 检测时间间隔
weight 3 #如果条件成立,权重+3
}
#### 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instanceVI_1 {
state MASTER #master为主设备,backup为从设备
interface ens33 #绑定虚拟 IP 的网络接口,我的是ens33
virtual_router_id 10 ##虚拟路由的 ID 号,两个节点设置必须一样
priority 100 #节点优先级,值范围 0-254,MASTER 要比BACKUP 高。
advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
# 将 track_script 块加入 instance 配置块
#track_script{
#chk_haproxy
#}
## 设置验证信息,两个节点必须一致
authentication {
auth_type PASS
auth_pass 1111
}
## 虚拟 IP 池, 两个节点设置必须一样
virtual_ipaddress {
192.168.71.200/24 #虚拟ip
注意:#主设备(priority 值大的)配置一定要加上nopreempt,否则非抢占也不起作用。
编写haproxy检测脚本
Vim/etc/check_haproxy.sh
输入一下内容
#!/bin/bash
START_HAPROXY="/etc/rc.d/init.d/haproxystart"
STOP_HAPROXY="/etc/rc.d/init.d/haproxystop"
LOG_FILE="/usr/local/keepalived/log/haproxy-check.log"
HAPS=`ps-C haproxy --no-header |wc -l`
date"+%Y-%m-%d %H:%M:%S" >> $LOG_FILE
echo"check haproxy status" >> $LOG_FILE
if [$HAPS -eq 0 ];then
echo$START_HAPROXY >> $LOG_FILE
$START_HAPROXY>> $LOG_FILE 2>&1
sleep 3
if [ `ps-C haproxy --no-header |wc -l` -eq 0 ];then
echo"start haproxy failed, killall keepalived" >> $LOG_FILE
killallkeepalived
fi
fi
赋予脚本可执行权限
Chmod +x etc/check_haproxy.sh
同样在192.168.71.132节点配置相同的keepalived的从节点。
启动keepalived
Systemctlstart keepalived.service
可以看到虚拟ip创建成功,131节点为master抢占虚拟IP。
关闭了131节点后虚拟ip漂移到keepalived的从节点132上。
总结:131节点和132节点同时也也是haproxy节点,因此keepalived集群有效的防止haproxy出现单点故障,故障无法转移的情况。