Keepalived VS Heartbeat
Keepalived是Linux下一个轻量级的高可用解决方案,它与Heartbeat、RoseHA实现的功能类似,都可以实现服务或者网络的高可用,但是又有差别.
Heartbeat是一个专业的、功能完善的高可用软件,它提供了HA软件所需的基本功能,比如心跳检测和资源接管,监测集群中的系统服务,在群集节点间转移共享IP地址的所有者等,Heartbeat功能强大,但是部署和使用相对比较麻烦
与Heartbeat相比,Keepalived主要是通过虚拟路由冗余来实现高可用功能,虽然它没有Heartbeat功能强大,但Keepalived部署和使用非常简单,所有配置只需一个配置文件即可完成
Keepalived的用途
Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态。
它根据第3~5层的交换机制检测每个服务节点的状态,如果某个服务节点出现异常,或工作出现故障,Keepalived将检测到,并将出现故障的服务节点从集群系统中剔除。而在故障节点恢复正常后,Keepalived又可以自动将此服务节点重新加入到服务器集群中,这些工作全部自动完成,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。
Keepalived后来又加入了VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)的功能。它出现的目的是为了解决静态路由器出现的单点故障问题,通过VRRP可以实现网络不间断地、稳定地运行。因此,Keepalived一方面具有服务器状态检测和故障隔离功能,另一方面也具有HA集群功能。
VRRP与工作原理
在现实的网络环境中,主机之间的通信都是通过配置静态路由器(默认网关)完成的,而主机之间的路由器一旦出现故障,通信就会失败,因此,在这种通信模式中,路由器就成了一个单点瓶颈。为了解决这个问题,就引入了VRRP。
VRRP是一种主备模式的协议,通过VRRP可以在网络发生故障时透明地进行设备切换而不影响主机间的数据通信。
这其中涉及两个概念:物理路由器和虚拟路由器。
物理路由器和虚拟路由器
VRRP可以将两台或多台物理路由器设备虚拟成一个虚拟路由器,这个虚拟路由器通过虚拟IP(一个或多个)对外提供服务,而在虚拟路由器内部,多个物理路由器协同工作,同一时间只有一台物理路由器对外提供服务,这台物理路由器称为主路由器(处于MASTER角色)。
一般情况下MASTER由选举算法产生,它拥有对外服务的虚拟IP,提供各种网络功能,如ARP请求【地址解析协议 Address Resolution Protocol 】、ICMP【 Internet Control Message ProtocolInternet控制报文协议】、数据转发等。
而其他物理路由器不拥有对外的虚拟IP,也不提供对外网络功能,仅仅接收MASTER的VRRP状态通告信息,这些路由器统称为备份路由器(处于BACKUP角色)。
当主路由器失效时,处于BACKUP角色的备份路由器将重新进行选举,产生一个新的主路由器进入MASTER角色继续提供对外服务,整个切换过程对用户来说完全透明。
每个虚拟路由器都有一个唯一标识,称为VRID,一个VRID与一组IP地址构成了一个虚拟路由器。
在VRRP中,所有的报文都是通过IP多播形式发送的,而在一个虚拟路由器中,只有处于MASTER角色的路由器会一直发送VRRP数据包,处于BACKUP角色的路由器只接收MASTER发过来的报文信息,用来监控MASTER运行状态,因此,不会发生BACKUP抢占的现象,除非它的优先级更高。
而当MASTER不可用时,BACKUP也就无法收到MASTER发过来的报文信息,于是就认定MASTER出现故障,接着多台BACKUP就会进行选举,优先级最高的BACKUP将成为新的MASTER,这种选举并进行角色切换的过程非常快,因而也就保证了服务的持续可用性。