一、什么是keepalived?
官方网站是这么说的:Keepalived是一个用C语言编写的路由软件。该项目的主要目标是为Linux系统和基于Linux的基础架构提供简单而强大的负载均衡和高可用性设施。 负载平衡框架依赖于众所周知且广泛使用的Linux虚拟服务器(IPVS )内核模块,提供Layer4负载均衡。Keepalived实现了一组检查程序,以根据其运行状况动态地和自适应地维护和管理负载均衡的服务器池。另一方面,VRRP实现了高可用性协议。VRRP是路由器故障转移的基础。此外,Keepalived为VRRP有限状态机实现了一组挂钩,提供低级和高速协议交互。Keepalived框架可以单独使用,也可以一起使用,以提供灵活的基础架构。
Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。Keepalived借助于第三方模块IPVS就可以很方便地搭建一套负载均衡系统,在这里有个误区,由于Keepalived可以和IPVS一起很好的工作,以为Keepalived就是一个负载均衡软件,这种理解是错误。
后来Keepalived又加入了VRRP的功能,VRRP出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行,因此Keepalvied 一方面具有服务器状态检测和故障隔离功能,另外一方面也有HA cluster功能,下面介绍一下VRRP协议实现的过程。
关键词:IPVS (IP Virtual Server) 是运行在LVS下的提供负载平衡功能的一种技术。
关键词:LVS(Linux Virtual Server),虚拟服务器是一个高度可扩展性和高可用性的服务器,建立在一个集群的服务器中。服务器集群的架构对用户是完全透明的,并且用户使用起来感觉它只有一个高性能虚拟服务器。
因为LVS的IP负载平衡技术就是通过IPVS模块来实现的,所以IPVS是LVS的关键,IPVS是LVS集群系统的核心软件,它的主要作用是:安装在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。
关键词:虚拟路由冗余协议(Virtual Router Redundancy Protocol VRRP) 具体可参考 http://blog.51cto.com/billy98/2064252
二、Keepalived工作原理和体系结构
keepalived可提供vrrp以及health-check功能,可以只用它提供双机浮动的vip(vrrp虚拟路由功能),这样可以简单实现一个双机热备高可用功能;keepalived是以VRRP虚拟路由冗余协议为基础实现高可用的,可以认为是实现路由器高可用的协议,即将N台提供相同功能的物理路由器组成一个虚拟路由器,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
keepalived也是模块化设计,不同模块复杂不同的功能,它主要有三个模块,分别是core、check和VRRP,其中:
- core模块:为keepalived的核心组件,负责主进程的启动、维护以及全局配置文件的加载和解析;
- check:负责健康检查,包括常见的各种检查方式;
- VRRP模块:是来实现VRRP协议的。
在Keepalived当中IPVS模块是可配置的,如果需要负载均衡功能,可以在编译Keepalived时开打负载均衡功能,也可以通过编译参数关闭。
内核空间(Kernel Spac