Linux HA Cluster的使用背景node
高可用集群,英文原文为High Availability Cluster,简称HACluster,简单的说,集群(cluster)就是一组计算机,它们做为一个总体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点(node)。mysql
高可用集群的出现是为了使集群的总体服务尽量可用,从而减小由计算机硬件和软件易错性所带来的损失。若是某个节点失效,它的备援节点将在几秒钟的时间内接管它的职责。所以,对于用户而言,集群永远不会停机。sql
高可用集群软件的主要做用就是实现故障检查和业务切换的自动化。只有两个节点的高可用集群又称为双机热备,即便用两台服务器互相备份。当一台服务器出现故障时,可由另外一台服务器承担服务任务,从而在不须要人工干预的 状况下,自动保证系统能持续对外提供服务。双机热备只是高可用集群的一种,高可用集群系统更能够支持两个以上的节点,提供比双机热备更多、更高级的功能,更能知足用户不断出现的需求变化。shell
Linux HA Cluster的系统组成,HA Cluster的工做模型apache
Heartbeat有三个版本分别为Heartbeat v1.x,Heartbeat v2.x,Heartbeat v3.x。服务器
Heartbeat v1.x和Heartbeat v2.x版本的组成结构十分简单,全部模块都集中在heartbeat中,到了v3版本后,整个heartbeat项目进行了拆分,分为不一样的项目来分别进行开发。网络
1.Heartbeat v1.x与v2.x的组件架构
heartbeat:节点间通讯检测模块ide
ha-logd:集群事件日志服务工具
CCM(Consensus Cluster Membership):集群成员一致性管理模块
LRM (Local Resource Manager):本地资源管理模块
Stonith Daemon: 使出现问题的节点从集群环境中脱离或重启
CRM(Cluster resource management):集群资源管理模块,高可用集群中任何资源都不该该自行启动,而是由CRM管理启动启动的;
Cluster policy engine: 集群策略引擎
Cluster transition engine:集群转移引擎(也叫策略执行引擎)
ha_aware:若是一个应用程序本身可以利用底层心跳信息传递层的功能完成集群事物决策的过程的软件就叫ha_aware。
DC:Designated Coordinator选定的协调员,当DC所在的主机挂了就会先选出一个DC,再由DC作出事物的决策。注意:在高可用集群中最核心的、最底层的管理的单位叫资源,把资源组合在一块儿来组合成一个服务。
Heartbeat v1.x与 v2.x区别
在Heartbeat v2.x中增长了一个新的集群资源管理器crm,在Heartbeat v1.x中的集群资源管理器是haresource,Heartbeat v2.x中为了兼容v1.x保留了haresource,但同时又新增了一个功能更强大的crm资源管理器。crm管理方式有,一种是基于命令行crmsh,一种是基于图形界面的hb_gui。
heartbeat v2第二版的时候,heartbeat被作了很大的改进,本身能够作为一个独立进程来运行,并而能够经过它接收用户请求,它就叫crm,在运行时它须要在各节点上运行一个叫crmd的进程,这个进程一般要监听在一个套接字上,端口就是5560,因此服务器端叫crmd,而客户端叫crm(能够称为crm shell),是个命令行接口,经过这个命令行接口就能够跟服务器端的crm通讯了,heartbeat也有它的图形化界面工具,就叫heartbeat-GUI工具,经过这个界面就能够配置进行。
Heartbeat v3.x的组件
第三版heartbeat v3,被独立成三个项目heartbeat、pacemaker(心脏起博器)、cluster-glue(集群的贴合器),架构分离开来了,能够结合其它的组件工做了。
Heartbeat:将原来的消息通讯层独立为heartbeat项目,新的heartbeat只负责维护集群各节点的信息以及它们以前通讯。
Cluster Glue:至关于一个中间层,它用来将heartbeat和pacemaker关联起来,主要包含2个部分,即为LRM和STONITH。
Resource Agent:用来控制服务启停,监控服务状态的脚本集合,这些脚本将被LRM调用从而实现各类资源启动、中止、监控等等。
Pacemaker:也就是Cluster Resource Manager(集群资源管理器,简称CRM),用来管理整个HA的控制中心,客户端经过pacemaker来配置管理监控整个集群。
RA:resource agent资源代理,其实就是可以接收CRM的调度用于实如今节点上对某一个资源完成管理的工具,这个管理的工具一般是脚本,因此咱们一般称为资源代理。任何资源代理都要使用同一种风格,接收四个参数:{start|stop|restart|status},包括配置IP地址的也是。每一个种资源的代理都要完成这四个参数据的输出。
当某一个节点出现故障时,其上面的资源被自动转移到其它正常的备用节点上并启动的这个过程叫故障转移,也称为失效转移(failover)。
若是出现故障的节点又回来的,那咱们就要把这个节点添加回来,那这个添加回来的过程咱们就叫失效转回,也称故障转回(failback)。
Heartbeat的各版本区别
与v1.x风格相比,Heartbeat v2.x版本以后功能变化以下:
1.保留原有全部功能
2.自动监控资源
默认状况下每2分钟检测资源运行状况,若是发现资源不在,则尝试启动资源, 若是60s后还未启动成功,则资源切换向另节点。时间能够修改。
3.能够对各资源组实现独立监控
好比apache运行在node1上,mysql运行在node2上,Heartbeat可同时实现两台主机的服务监控
4.同时监控系统负载
能够自动将资源切换到负载低的node上
5.新增crm资源管理器
crm管理器可让heartbeat基于图形界面管理,即hb_gui
与v2.x风格相比,Heartbeat 3最主要变化是功能拆分,Heartbeat官方最后一个STABLE release 2.x 版本是2.1.4,Heartbeat 3官方正式发布的首个版本是3.0.2,Heartbeat 3与Heartbeat2.x的最大差异在于,Heartbeat3.x按模块把的原来Heartbeat2.x拆分为多个子项目,可是HA实现原理与Heartbeat2.x基本相同,配置也基本一致。