在高可用软件领域,我们可能常会听到Heartbeat、Corosync、Pacemaker、keepalived等软件。常见有人问Heartbeat、Corosync、Keepalived这三个集群组件我们到底选哪个好呢?
首先我想说明的是,Heartbeat、Corosync是属于同一类型,Keepalived与Heartbeat、Corosync,根本不是同一类型的。Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP);Heartbeat或Corosync是基于主机或网络服务的高可用方式;
简单的说就是,Keepalived的目的是模拟路由器的高可用,Heartbeat或Corosync的目的是实现Service的高可用。所以一般Keepalived是实现前端高可用,常用的前端高可用的组合有,就是我们常见的LVS Keepalived、Nginx Keepalived、HAproxy Keepalived。而Heartbeat或Corosync是实现服务的高可用,常见的组合有Heartbeat v3(Corosync) Pacemaker NFS Httpd 实现Web服务器的高可用、Heartbeat v3(Corosync) Pacemaker NFS MySQL 实现MySQL服务器的高可用。
总结一下,Keepalived中实现轻量级的高可用,一般用于前端高可用,且不需要共享存储,一般常用于两个节点的高可用。而Heartbeat(或Corosync)一般用于服务的高可用,且需要共享存储,一般用于多节点的高可用。
下面主要介绍下keepalived。
Keepalived详解Keepalived是什么?
Keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。Keepalived起初就是为了LVS调度节点高可用而设计的,专门用来监控集群系统中各个服务节点的状态。如果某个服务节点出现异常,或工作出现故障,Keepalived将检测到,并将出现故障的服务节点从集群系统中剔除,也就是替LVS做了对后端realserver的健康状态监测。而当故障节点恢复正常后,Keepalived又可以自动将此服务节点重新加入到服务器集群中。这些工作全部自动完成,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。
keepalived也是模块化设计不同模块负责不同的功能,下面是keepalived的相关模块:core、check、vrrp、libipfwc、libipvs-2.4、libipvs-2.6。
core:是keepalived的核心,负责主进程的启动和维护及全局配置文件的加载解析等。
check:负责healthchecker(健康检查),包括了各种健康检查方式以及对应的配置的解析(包括LVS的配置解析)。
vrrp:VRRPD子进程就是来实现VRRP协议的。
libipfwc:liipfwc库是配置LVS时会用到的。
libipvs*:配置LVS时会用到。
PS:注意keepalived和LVS完全是两码事只不过他们各负其责相互配合而已。
后面会分享更多DEVOPS和DBA方面的内容,感兴趣的朋友可以关注下!!
,