Keepalived主要是通过虚拟路由冗余来实现高可用功能
部署和使用简单,所有配置只需要一个配置文件
1,Keepalived
起初为LVS设计:(服务器章台检测和故障隔离功能)
专门用来监控集群几桶中各个服务节点的状态
根据TCP/IP参考模型的第三、第四和第五层交换机制检测每个服务节点的状态
自动将出现故障的服务节点从集群系统中剔除
自动将人工修复好的服务节点重新加入服务器集群中
后来加入VRRP功能:(HA cluster功能)
VRRP——虚拟路由器冗余协议
为了解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行
2,VRRP协议工作原理(Keepalibed高可用功能的工作原理)
主备模式协议
通过VRRP协议可以在网络发生故障时透明的进行设备切换而不影响主机间的数据通信
VRRP可将两台或多台物理路由器设备虚拟成一个虚拟路由器,该虚拟路由器通过虚拟IP对外提供服务
虚拟路由器内部是多个物理路由器协同工作,同一时间只有一台物理路由器对外提供服务,该物理路由器被称为主路由器(处于MASTER角色)
一般情况,MASTER由选举算法产生,拥有对外服务的虚拟IP,提供各种网络功能
其他物理路由器不拥有对外的虚拟IP,也不提供网络功能,仅仅接受MASTER的VRRP状态报告信息,这些路由器被称为备份路由器(处于BACKUP角色)
每个虚拟路由器都有一个唯一标识,称为VRID,一个VRID和一组IP地址构成了一个虚拟路由器
在VRRP协议中,所有报文都是通过IP多播形式发送
3,keepalived工作原理(Keepalived对服务器运行状态监控和检测的工作原理)
Keepalived工作在TCP/IP参考模型的第三、第四、第五层,即是网络层、传输层和应用层
在网络层:
运行着四个协议,互联网协议IP、互联网控制报文协议ICMP、地址转换协议ARP和反向地址转换协议RARP
工作方式,通过ICMP协议向服务器集群中的每个节点发送一个ICMP的数据报,如果某个节点没有返回相应数据包,即认为该节点发生故障,就本报告该节点失效,并剔除。
在传输层:
两个协议,传输控制协议TCP和用户数据协议UDP
Keepalived在传输层利用TCP协议的端口连接和扫描技术来判断集群节点是否正常
Keepalived只要在传输层探测到端口没有相应数据返回,就认为这些端口发生异常,便强制将此端口的节点从集群中移除
在应用层:
可以运行FTP、TELENET、SMTP、DNS等各种不同类型的高层协议
4,Keepalived体系结构
①用户空间层(User Space)
位于内核空间层之上,Keepalived的所有具体功能都在这里实现
Keepalived分为四部分,
Scheduler I/O Multiplexer:I/O服用分发调度器,负责安排Keepalived所有内部的任务请求
Memory Management:内存管理机制,提供了访问内存的一些通用方法
Control Plane:控制面板,实现对配置文件进行编译和解析
Core components:核心组件,包括:
WatchDog:监控Checkers和VRRP进程
Checkers:实现对服务器运行状态检测和故障隔离
VRRP Stack:实现HA集群中失败切换功能
IPVS wrapper:将设置好的IPVS规则发送到内核空间并提交给IPVS模块
Netlink Reflector:实现高可用集群中失败切换时虚拟IP的设置和切换
②内核空间层(Kernel Space)
处于最底层,包括IPVS和NETLINK两个模块
通过IPVS可以实现基于IP的负载均衡集群,Keepalived可以实现对集群节点的状态检测(Keepalived借助IPVS搭建负载均衡系统)
NETLIKN模块主要用于是西安一些高级路由框架和一些相关的网络功能,完成用户空间Netlink Reflector模块发来的各种网络请求。