Keepalived 是使用C语言编写的路由热备软件
,该项目软件起初是专门为LVS
负载均衡设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了能够实现高可用的VRRP
功能。
所以,Keepalived除了可以管理LVS软件外,还能够做为其余服务(例如:Nginx
,Haproxy
,MySQL
等)的高可用解决方案软件。php
Keepalived 主要是经过VRRP
协议实现高可用功能的。VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议
)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它可以保证当个别节点宕机时,整个网络能够不间断地运行。nginx
因此,Keepalived一方面具备配置管理LVS的功能,同时还具备对LVS下面节点进行健康检查的功能,另外一方面也可实现系统网络服务的高可用功能。web
咱们以一次面试为例,解答Keepalived的工做原理。如下为对面试官的表述:面试
Keepalived 高可用之间是经过VRRP通讯的,所以我从VRRP开始给您讲起:apache
(1)VRRP,也就是虚拟路由冗余协议,它的出现就是为了解决静态路由的单点故障。编程
(2)VRRP是经过一种竞选协议机制将路由任务交给某台VRRP路由器。服务器
(3)VRRP用 IP多播的方式(默认多播地址(224.0_0.18))实现高可用对 之间通讯。微信
(4)工做时主节点发包,备节点接包,当备节点接收不到主节点发的数据包时,就启动接管程序接管主节点的资源。备节点能够有多个,经过优先级竞选,但通常Keepalived系统工做中都是一对。网络
(5)VRRP使用了加密协议加密数据,但Keepalived官方目前仍是推荐用明文的方式配置认证类型和密码。架构
介绍完 VRRP,接下来介绍一下 Keepalived服务的工做原理:
(1)Keepalived高可用之间是经过VRRP
进行通讯的,VRRP是经过竞选机制来肯定主备的,主的优先级高于备,所以,工做时主会优先得到全部的资源,备节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,而后顶替主节点对外提供服务。
(2)在Keepalived服务之间,只有做为主的服务器会一直发送VRRP广播包,告诉备它还活着,此时备不会抢占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性。接管速度最快能够小于1
秒。
(1)管理 VIP
VIP即对外提供服务的浮动IP, 会在 LVS 之间漂移
(2)监控 LVS分发器
运行在主分发器的 Keepalived 会以组播的形式向网络中宣告本身,即主分发器还活着,备用节点能收到。当备用节点,在一个时间单位中收不到组播,备用节点会认为主 LVS 挂了,开始接手主分发器工做,把 VIP 分配给本身。
(3)管理RS
RS,RealServer。即真正为用户提供服务的服务器。好比:web、mail、FTP服务等。
Keepalived 会每隔一个时间段去作一次相似于访问的操做如:
探针: elinks http://192.168.1.251 –dump
经典高可用web架构: LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可选)
欢迎关注微信公众号『开源Linux
』,专一于分享Linux/Unix相关内容,包括Linux运维、Linux系统开发、网络编程、以及虚拟化和云计算等技术干货。后台回复『学习
』,送你一套学习Linux的系列书籍,期待与你相遇。