HA(High Availability,高可用)集群的主要目的是提升服务的在线率,也就是缩短平均无端障的时间。实际上就是当一个提供服务的服务节点不在线时,有另外一个提供相同服务的节点能够继续提供服务,避免出现单点故障。mysql
在线率是衡量HA集群的一个重要指标,就算方式以下:sql
在线率=平均无端障时间/(平均修复时间 + 平均无端障时间)数据库
因此提升系统的可用性:架构
1)、增长平均无端障时间分布式
2)、缩短平均修复时间 (能够经过冗余机制实现)ide
这里的资源指的是 HA 集群提升服务时所须要的资源。例如:提供mysql服务时,须要的资源有ip地址(访问数据库的接口),mysql服务脚本(提供数据库服务),文件系统(提供数据的存储位置,能够是本地的文件系统也能够是共享文件系统,例如:nfs等)。ui
对于不一样的 HA 集群来讲所须要的资源也是不一样的。spa
主资源:primitive/native,只能运行在某一节点命令行
组资源:是多个资源的集合代理
clone:克隆资源,一个资源能够运行于多个节点。包括克隆的份数,每一个节点最多运行的克隆份数都要指定
master/slave:主从资源,特殊的克隆资源。(drbd)
FailOver:故障转移,当节点出现故障时,须要实现资源的转移。
FailBack:资源恢复,当出现故障的节点从新上线时,是否从新接管资源。
定义资源与资源之间的粘性和约束。常见的约束有位置约束、排练约束、顺序约束。
这里提到的架构是使用软件的方式来实现高可用,能实现高可用集群的软件都应该实现如下几个方面的内容。
此层的主要目的是为了传递“心跳”信息。“心跳”信息: (也称为状态信息)是必定大小的广播、组播或多播数据包。可为以每一个节点配置其向其它节点通报“心跳”信息的频率,以及其它节点上的进程为了确认主节点出节点出现了运行等错误以前的等待时间。
能实现此功能的软件有:
heartbeat v1
heartbeat v2
heartbeat v3
corosync
cman
所在的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)
可以管理本节点上的属于集群的某一资源的启动、中止和状态信息的脚本。
常见的资源代理:
LSB:在/etc/init.d/目录下的全部脚本
OCF(Open Cluster Framework 开源集群架构):相比LSB来讲,更加通用。
hb legcy: /etc/ha.d/haresource.d/下的全部文件
资源运行的倾向性:(资源转移倾向性)
资源粘性:资源倾向于留在当前节点的值 (-oo +oo)
-oo的意思是:只有此节点提供服务时,才选择。
+oo 优先选择此节点。
资源约束:
位置约束:资源对某一节点运行的倾向性
inf -inf
排列约束:定义资源之间的倾向性
inf:
-inf:
顺序约束:多个资源运行于同一节点时,启动和关闭的次序
STONITH机制:
普通文件系统:不知道对方的锁信息(缘由是锁信息全部内核),可能会出现文件错乱
分布式锁管理系统:借助于Messaging Layer通知其余节点的锁管理系统,锁管理系统通知内核。分布式文件锁管理系统管理的文件系统叫作分布式文件系统。
未完待续......