keepalived是一款高可用软件,它的功能主要包括两方面:
1、通过ip漂移,实现服务的高可用;服务器集群共享一个虚拟ip,同一时间只有一个服务器占有虚拟ip,并对外提供服务,若该服务器不可用,则虚拟ip漂移到另一台服务器并对外提供服务。
2、对LVS应用服务器的应用服务器集群进行状态监控,若应用服务器不可用,则keepalived将其从集群中摘除,若应用服务器恢复,则keepalived将其又重新加入到集群中
健康检查和失败切换是keepalived的核心。所谓健康检查,就是采用TCP三次握手、icmp请求,http请求,udp echo请求等方式对负载均衡器后面的实际服务器进行一个存活状态确认;而失败切换主要是应用于配置了负载均衡器上,利用VRRP维持主备负载均衡器的心跳,当主负载均衡器出现问题的时候,由备负载均衡器承载对应的业务,从而在最大限度上减少流量损失,并提供服务的稳定性。
它可以单独使用,即通过ip漂移实现服务的高可用,也可以结合LVS使用,即一方面通过ip漂移实现LVS负载均衡层的高可用,另一方面实现LVS应用服务器层的状态监控。
相关原理
keepalived的实现基于VRRP,而VRRP是为了解决静态路由的高可用。
虚拟路由器由多个VRRP路由器组成,每个VRRP路由器都有各自的IP和共同的VRID,其中一个VRRP路由器通过竞选成为master,占有VIP,对外提供路由服务,其他成为backup,master以ip组播(组播地址为:224.0.0.18)形式发送VRRP协议,与backup保持心跳连接,若master不可用(或backup接收不到VRRP协议包),则backup通过竞选产生新的master并继续对外路由服务,从而实现高可用。
在网络层:通过ICMP协议向后端服务器集群中发送数据报文。
在传输层:利用TCP协议的端口连接和扫描技术检测后端服务器集群是否正常。
在应用层:自定义keepalived工作方式。
相关体系和组件
1、Scheduler I/OMultiplexer是一个I/O复用分发调度器,它负载安排keepalived所有内部的任务请求。
2、memory mngt:是一个内存管理机制,这个框架提供了访问内存的一些方法。
3、control plane是keepalived的控制面板,可以实现对配置文件编译和解析。
4、core components:
- watchdog:是计算机可靠领域中极为简单又有效的监测工具,keepalived正是通过它监控checkers和VRRP进程的。
- checkers:这是keepalived最基础的功能,也是最主要的,可以实现对服务器运行状态检测和故障隔离。
- ipvs wrapper:这个是IPVS功能的一个实现,这个模块将设置好的ipvs规则发送给内核空间并且提供给IPVS模块,最终实现IPVS模块的负载功能。
- VRRP stack:可以实现HA集群失败切换功能。负责负载均衡器之间的失败切换。
- netlink reflector:用来实现高可用集群failover时虚拟ip的设置和切换。
keepalived运行时,会启动3个进程:
- core:负责主进程的启动、维护和全局配置文件的加载
- check:负载健康检查
- vrrp:用来实现VRRP协议
配置文件说明
配置文件:
/etc/keepalived/keepalived.conf
包含三部分:
1、全局配置,配置邮件等;
2、VRRP的配置,配置VRRP实例;
3、LVS配置,配置LVS的应用服务器
若只是单独使用keepalived,通过IP漂移实现服务的高可用,则只需要配置前两部分就可以,若结合LVS使用,实现LVS负载均衡层的高可用、应用服务层的状态监控,则还需要配置第三部分。
1 | global_defs { |