目录
[2.VRRP 工作原理](#2.VRRP 工作原理)
[3.Keepalived 主要模块](#3.Keepalived 主要模块)
[1.脑裂(Split Brain)](#1.脑裂(Split Brain))
[2.安装与配置 LVS + Keepalived](#2.安装与配置 LVS + Keepalived)
[2.1.DR 服务器操作](#2.1.DR 服务器操作)
[2.2.配置 Keepalived](#2.2.配置 Keepalived)
[3.配置 Web 节点](#3.配置 Web 节点)
前言:
上次和大家分享了DR模式部署的相关原理和实验操作,今天主要就keepalived群集相关知识做一个交流。
一.概念与原理
1.Keepalived
基于 VRRP 协议实现高可用( HA )
初衷是为 LVS 负载均衡提供高可用方案,后来支持其他服务(如 Nginx 、 MySQL 等)
功能:
LVS 集群管理
节点健康检查( Health Check )
Keepalive 可以通过在自身的 Keepalive.conf 文件里配置 LVS 的节点 IP 和相关参数实现对 LVS 的直接管理;除此之外,当LVS 集群中的某一个甚至是几个节点服务器同时发生故障无法提供服务时,Keepalive 服务会自动将失效的节点服务器从 LVS 的正常转发队列中清除出去,并将请求调度到别的正常节点服务器上,从而保证最终用户的访问不受影响;当故障的节点服务器被修复以后, Keepalive服务又会自动地把它们加入到正常转发队列中,对客户提供服务。
故障自动切换( Failover )
Keepalive 可以实现任意两台主机之间,例如 Master 和 Backup 主机之间的故障转移和自动切换,
这个主机可以是普通的不能停机的业务服务器,也可以是 LVS 负载均衡, Nginx 反向代理这样的服
务器。
Keepalive 高可用功能实现的简单原理为,两台主机同时安装好 Keepalive 软件并启动服务,开
始正常工作时,由角色为 Master 的主机获得所有资源并对用户提供服务,角色为 Backup 的主机作
为 Master 主机的热备;当角色为 Master 的主机失效或出现故障时,角色为 Backup 的主机将自动
接管 Master 主机的所有工作,包括接管 VIP 资源及相应资源服务;而当角色为 Master 的主机故障
修复后,又会自动接管回它原来处理的工作,角色为 Backup 的主机则同时释放 Master 主机失效时
它接管的工作,此时,两台主机将恢复到最初启动时各自的原始角色及工作状态。
高可用 VIP (虚拟 IP )接管
2.VRRP****工作原理
MASTER 节点发送心跳(通告)给 BACKUP 节点
BACKUP 节点收不到心跳时,接管 VIP
MASTER 恢复时,可抢回 VIP (抢占模式)或不抢回(非抢占模式)
默认多播地址: 224.0.0.18
优先级决定 MASTER 节点(数值越大优先)
3.Keepalived****主要模块

二.脑裂问题与防护
1.脑裂(Split Brain)
两个节点失去心跳连接,均认为对方挂掉
后果:
共享资源冲突
数据损坏(如数据库)
在高可用( HA )系统中,当联系 2 个节点的 " 心跳线 " 断开时,本来为一整体、动作协调的 HA 系统,就分裂成为2个独立的个体。由于相互失去了联系,都以为是对方出了故障。两个节点上的 HA 软件像 " 裂脑人 " 一样,争抢"共享资源 " 、争起 " 应用服务 " ,就会发生严重后果 ------ 或者共享资源被瓜分、 2 边 " 服务 " 都起不来了;或者 2 边"服务 " 都起来了,但同时读写 " 共享存储 " ,导致数据损坏(常见如数据库轮询着的联机日志出错)。
2.原因
心跳线故障(断线、老化)
高可用服务器对之间心跳线链路发生故障,导致无法正常通信。如心跳线坏了(包括断了,老
化)。
网卡 / 驱动故障
因网卡及相关驱动坏了, ip 配置及冲突问题(网卡直连)。
心跳网络设备故障
因心跳线间连接的设备故障(网卡及交换机)。
仲裁机器异常
因仲裁的机器出问题
防火墙阻挡 VRRP
高可用服务器上开启了 iptables 防火墙阻挡了心跳消息传输。
配置不一致( virtual_router_id 、优先级、实例名)
Keepalive 配置里同一 VRRP 实例如果 virtual_router_id 两端参数配置不一致也会导致裂脑问题发
生。
vrrp 实例名字不一致、优先级一致。
3.防护策略
双心跳线冗余
添加冗余的心跳线,例如:双线条线(心跳线也 HA ),尽量减少 " 裂脑 " 发生几率。
磁盘锁(锁定共享资源)
正在服务一方锁住共享磁盘, " 裂脑 " 发生时,让对方完全 " 抢不走 " 共享磁盘资源。但使用锁磁盘也
会有一个不小的问题,如果占用共享盘的一方不主动 " 解锁 " ,另一方就永远得不到共享磁盘。现实
中假如服务节点突然死机或崩溃,就不可能执行解锁命令。后备节点也就接管不了共享资源和应用
服务。于是有人在 HA 中设计了 " 智能 " 锁。即:正在服务的一方只在发现心跳线全部断开(察觉不到
对端)时才启用磁盘锁。平时就不上锁了。
仲裁机制( Ping 参考 IP )
例如设置参考 IP (如网关 IP ),当心跳线完全断开时, 2 个节点都各自 ping 一下参考 IP ,不通则表明 断点就出在本端。不仅" 心跳 " 、还兼对外 " 服务 " 的本端网络链路断了,即使启动(或继续)应用服 务也没有用了,那就主动放弃竞争,让能够ping 通参考 IP 的一端去起服务。更保险一些, ping 不通 参考IP 的一方干脆就自我重启,以彻底释放有可能还占用着的那些共享资源。
脚本监控报警
三.部署
1.环境准备
主 DR : 192.168.10.80 ( MASTER )
备 DR : 192.168.10.23 ( BACKUP )
VIP : 192.168.10.180
Web 节点:
192.168.10.16
192.168.10.17
客户端: 192.168.10.100
2.安装与配置****LVS + Keepalived
2.1.DR****服务器操作

2.2.配置****Keepalived
文件: /etc/keepalived/keepalived.conf
关键配置:



VIP 配置:

重启网络:

2.3.启动服务

2.4.内核参数优化

3.配置Web节点


4.测试
客户端访问 VIP
http://192.168.10.180/
停掉 MASTER Keepalived
systemctl stop keepalived
观察 BACKUP 节点接管 VIP 是否成功
再启动 MASTER ,观察 VIP 是否回归(抢占或非抢占模式)
总结:
今天主要是详细讲述了关于keepalived群集的相关原理和实验操作,希望对读者们有所帮助!