Keepalived

2021-03-19  本文已影响0人  AydanLinux

Keepalived — VRRP 的 Linux 软件实现

1.Keepalived 简介

官方网站:https://www.keepalived.org/
官方手册:https://www.keepalived.org/doc/
https://www.keepalived.org/documentation.html
官方仓库:https://github.com/acassen/keepalived

新华三的VRRP技术白皮书:http://www.h3c.com/cn/d_200802/335873_30003_0.htm

Keepalived 起初是为 LVS 设计的,专门用来监控集群系统中各个服务节点的状态,它根据 TCP/IP L3-L5 层交换机制检测每个服务节点的状态,每个服务节点异常或者工作障碍,Keepalived 将立刻检测到,并把障碍节点剔除,是毫秒级的,当后台节点恢复正常以后,Keepalived有自动将服务节点重新添加在服务器集群中。

Keepalived 后来又加入了 VRRP 功能,目的就是解决静态路由单点故障的问题,通过 VRRP 可以实现网络不间断稳定运行。

简而言之,Keepalived 是一个使用 C 编写的,基于 VRRP 协议的高可用解决方案。通过 VIP 地址和心跳检测支持高可用功能,避免发生单点故障。该项目的主要目标是为 Linux 系统和基于 Linux 的基础结构提供负载均衡和高可用性的简单而强大的功能。

2.Keepalived 的架构

Keepalived Arch.gif

上图可见,Keepalived 的架构分为两大层:内核空间(Kernel Space)、用户空间(User Space)。其中,IPVS(IP Virtual Server)实现了 L4 传输层负载平衡;NETLINK 则用于在内核和用户空间进程之间传输信息。

Keepalived 分为 3 个守护进程:

  1. 父进程:很简单,负责 fork 子进程,并监视子进程健康状态,图中 WatchDog 周期性发送检测包,在需要时重启子进程。
  2. 子进程 A:负责 VRRP 框架,图中 VRRP Stack。
  3. 子进程 B:负责健康检查,图中 Checkers。

3.Keepalived 的运行原理

Keepalived 通过选举(根据服务器设置的权重)挑选出一台热备服务器做 Master 机器,Master 会被分配到一个指定的 VIP,外部程序可通过该 VIP 访问这台服务器,如果这台服务器出现故障(断网,重启,或者本机器上的 Keepalived Crash 等),Keepalived 会从其他的备份机器上重选(还是看服务器设置的权重)一台机器做 Master 并分配同样的 VIP,充当前一台 Master 的角色。权重越高,备用机器被拉起来的占比就越大,一般的主备就可以满足我们的需求。

4.Keepalived 的选举策略

选举策略是根据 VRRP 协议,完全按照权重大小,权重最大的是 Master 机器,下面几种情况会触发选举:

5.Keepalived 的脑裂

在高可用系统中,作为主备节点的两台服务器,可能因为一些比如说网络断开,两台机器的心跳检测会认为主挂了,但是主其实是正常的,只是网络断开了,心跳检测没法检查到主还活着,由于主从之间失去了联系,都以为是对方发生了故障,所以两个节点都会主动的抢占资源,争抢应用服务,争抢 VIP,这样就发发生一些严重的后果,或者资源被瓜分了、或者是两边的节点都启动不起来了、或者是都起来了,但是同时读写共享存储,导致数据损坏。

脑裂产生的原因:

脑裂常见的解决方案:

当然,在实施高可用方案时,要根据业务实际需求确定是否能容忍这样的损失。对于一般的网站常规业务。这个损失是可容忍的。

上一篇下一篇

猜你喜欢

热点阅读