HA(High Availability,高可用)集群的主要目的是提高服务的在线率,也就是缩短平均无故障的时间。实际上就是当一个提供服务的服务节点不在线时,有另一个提供相同服务的节点可以继续提供服务,避免出现单点故障。
HA集群相关概念
一、相关名词解释
1、在线率
在线率是衡量HA集群的一个重要指标,就算方式如下:
在线率=平均无故障时间/(平均修复时间 + 平均无故障时间)
所以提高系统的可用性:
1)、增加平均无故障时间
2)、缩短平均修复时间 (可以通过冗余机制实现)
2、资源
这里的资源指的是 HA 集群提高服务时所需要的资源。例如:提供mysql服务时,需要的资源有ip地址(访问数据库的接口),mysql服务脚本(提供数据库服务),文件系统(提供数据的存储位置,可以是本地的文件系统也可以是共享文件系统,例如:nfs等)。
对于不同的 HA 集群来说所需要的资源也是不同的。
3、资源类型
- 主资源:primitive/native,只能运行在某一节点
- 组资源:是多个资源的集合
- clone:克隆资源,一个资源可以运行于多个节点。包括克隆的份数,每个节点最多运行的克隆份数都要指定
- master/slave:主从资源,特殊的克隆资源。(drbd)
4、资源切换
FailOver:故障转移,当节点出现故障时,需要实现资源的转移。
FailBack:资源恢复,当出现故障的节点重新上线时,是否重新接管资源。
5、资源约束
定义资源与资源之间的粘性和约束。常见的约束有位置约束、排练约束、顺序约束。
二、HA 集群架构
这里提到的架构是使用软件的方式来实现高可用,能实现高可用集群的软件都应该实现以下几个方面的内容。
1、Messaging Layer(消息层)
此层的主要目的是为了传递“心跳”信息。“心跳”信息: (也称为状态信息)是一定大小的广播、组播或多播数据包。可为以每个节点配置其向其它节点通报“心跳”信息的频率,以及其它节点上的进程为了确认主节点出节点出现了运行等错误之前的等待时间。
能实现此功能的软件有:
- heartbeat v1
- heartbeat v2
- heartbeat v3
- corosync
- cman
2、CRM(Cluster Resource Manager集群资源管理)
所在的HA集群中的每个节点都运行的,为高可用集群提供核心组件,包括资源的定义,属性。另外,在每个节点上都维护一个CIB(集群信息库 XML文档)和LRM(本地资源管理)组件。对于CIB只有工作在DC(主节点)上的文档才是可以修改的。对于LRM,是执行CRM传递过来的本地执行某个资源和停止的具体执行人。当某个节点发生故障时,是由DC通过PE(策略引擎)和TE(实施引擎)来决定是否抢夺资源。
实现此层功能的软件有:
1)、heartbeat v1: 自带资源管理器haresources,haresources:需要的是配置文件,文件名为haresources
2)、heartbeat v2: 自带资源管理器crm,crm:需要在各节点运行crmd。配置接口:命令行:crmsh;GUI:ha-gui
3)、heartbeat v3 = heartbeat + pacemaker + cluster-glue
pacemaker:CLI: crm(SuSE),pcs;GUI接口:hawk,pacemaker-mgmt
4)、rgmanager(cman作为Message Layer):会使用到Failover Domial,Node priority这些机制来管理集群。
配置接口:CLI: clustat,cman_tool;GUI: Conga(lici + ricci)
3、RA(Resource Agent资源代理)
能够管理本节点上的属于集群的某一资源的启动、停止和状态信息的脚本。
常见的资源代理:
LSB:在/etc/init.d/目录下的所有脚本
OCF(Open Cluster Framework 开源集群架构):相比LSB来说,更加通用。
hb legcy: /etc/ha.d/haresource.d/下的所有文件
三、资源约束
资源运行的倾向性:(资源转移倾向性)
资源粘性:资源倾向于留在当前节点的值 (-oo +oo)
-oo的意思是:只有此节点提供服务时,才选择。
+oo 优先选择此节点。
资源约束:
位置约束:资源对某一节点运行的倾向性
inf -inf
排列约束:定义资源之间的倾向性
inf:
-inf:
顺序约束:多个资源运行于同一节点时,启动和关闭的次序
未完待续......