(1)支持故障自动切换(Failover)
(2)支持节点健康状态检查(Health Checking)
判断LVS负载调度器、节点服务器的可用性,当master主机出现故障即时切换到backup节点保证业务正常,当master故障主机恢复后将其重新加入群集并且业务重新切回master节点
(3)官方网站:http://www.keepalived.org/
Keepalived是一个基于底层协议是VRRP热备份协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。
在一个LVS服务集群中通常有主服务器 (MASTER)和备份服务器(BACKUP) 两种角色的服务器,但是对外表现为一个虚拟IP,主服务器会发送VRRP通告信息给备份服务器, 当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
1. 问题:
在一次故障切换后,原来的master并没有真正的挂掉 ,VIP还在,而backup 则已经抢占master地位,并也在本地配置了VIP,本来为一整体、动作协调的HA系统,就分裂成为2个独立的个体。由于相互失去了联系,都以为是对方出了故障。两个节点上的HA软件像“裂脑人”一样,争抢“共享资源”、争起“应用服务”,就会发生严重后果——或者共享资源被瓜分、2边“服务”都起不来了;或者2边“服务”都起来了,但同时读写“共享存储”,导致数据损坏(常见如数据库轮询着的联机日志出错),这时客户端发送请求都能够做出响应造成资源的争夺
2. 解决方法:
(1)网络的层面来解决 再加一条链路,需要一定的成本
(2)通过第三方监控软件的方式来解决 zabbix
既监控服务器的状态,也监控网络的流量
(3)在本地通过脚本方式来解决
在master主机通过if判断是否能够ping通backup主机,ping不通2种可能性,中间链路断掉了或backup宕机,再使用if判断使用ssh跳到某一台节点服务器ping backup主机 ,如果也ping 不通则判断backup宕机,如果Ping通则说明是中间链路问题,链路问题就手动关闭maseter的keepalived工具,让backup主机顶上
(4)编写监控脑裂脚本
vim check_keepalived.sh
#!/bin/bash
state=$(ip addr show ens33 | grep 192.168.150.200 | wc -l)
while true
do
if [ $state -ne 0 ]
then
echo "建立VIP"
else
echo "未建立VIP"
fi
done
原文:https://www.cnblogs.com/darryallen/p/15177736.html