1.高可用集群概念
html
高可用集群就是当某一个节点或服务器发生故障时,另外一个节点可以自动且当即向外提供服务,即将有故障节点上的资源转 移到另外一个节点上去,这样另外一个节点有了资源既能够向外提供服务。高可用集群是用于单个节点发生故障时,可以自动将资源、服务进行切换,这样能够保证服务 一直在线。在这个过程当中,对于客户端来讲是透明的。mysql
2.高可用集群组件linux
1).Messaging Layer:集群服务信息层,主要的做用是传递当前节点的心跳信息,并告知给对方,这样对方就知道其余节点是否在线。若是不在线,则能够实现资源 转移,这样另外一台节点就能够充当主节点,并正常提供服务。传递心跳信息通常使用一根心跳线链接,该线接口可使用串行接口也能够是以太网接口来链接。每一 个节点上都包含信息层。sql
2).CRM:Cluster Resource Messager,该组件叫作资源管理器,它主要是用来提供那些不具备高可用的服务提供高可用性的。它须要借助Messaging Layer来实现工做,所以工做在Messaging Layer上层。资源管理器的主要工做是根据messaging Layer传递的健康信息来决定服务的启动、中止和资源转移、资源的定义和资源分配。在每个节点上都包含一个CRM,且每一个CRM都维护这一个 CIB(Cluster Internet Base,集群信息库),只有在主节点上的CIB是能够修改的,其余节点上的CIB都是从主节点那里复制而来的。在CRM中还包含LRM和DC等组件。
服务器
3).DC:事务协调员,其包括PE和TE两个子模块,DC负责收集每一个组中集群的事务信息,并造成CIB,且同步到每个集群节点上。同时DC还会统计每一个组的法定票数(quorum),当该组的法定票数大于二分之一时,则表示启动该组节点上的服务;不然中止该节点上的服务。DC通常位于主节点上。ide
4).PE和TE:PE和TE是DC的子组件,PE(Policy Engine),策略引擎,来定义资源转移的一整套转移方式,但只是作策略者,并不亲自来参加资源转移的过程,而是让TE来执行本身的策略。TE(Transition Engine),事务引擎, 就是来执行PE作出的策略的。spa
5).LRM:Local Resource Messager,叫作本地资源管理器,它是CRM的一个子组件,用来获取某个资源的状态,而且管理本地资源的。例如:当检测到对方没有心跳信息时,则会启动本地相应服务。代理
6).RA:Resource Agent,资源代理,实际负责启动关闭资源的,LRM用来管理本地资源的,可是不能启动关闭资源,当须要启动关闭资源时会调用RA来启动,RA是一个个脚本文件,在一个节点上可能有多个RA。常见的RA风格有OCF和LSB。code
7).stonith:若是备份节点在某一时刻不能收到主节点的心跳信息时,那么若是此时备份节点马上抢占资源时,而此时主节点正好在执行写操做,备份节点一旦也执行相应的写操做,会致使文件系统错乱或者服务器崩溃,所以在抢占资源的时候可使用资源隔离机制来防止此类事件发生。而咱们经常 使用stonithd(即爆头)来使主节点再也不抢占资源。htm
3.资源
资源就是启动一个服务须要的子项目。例如启动一个httpd服务,须要ip,也须要服务脚本、还须要文件系统(用来存储数据的),这些咱们均可以统称为资源。
资源类型:
primitive:能够理解为主资源,有时候看到的会是native,都是一个意思,表示在某一时刻只能运行在某一结点上的资源。
group:组资源,将多个资源绑定在一个同一个组上面且运行在同一个节点上。
clone:是将primitive资源克隆n份且运行在多个节点上。
master/slave:也是将primitive克隆2份、其中master和slave节点各运行一份,且只能在这2个节点上运行。
资源粘性:资源是否倾向于留在当前节点。一般使用score来定义,当score为正数表示乐意留在当前节点,负数表示不乐意留在当前节点。
资源约束:
位置约束(location):资源对节点的倾向程度,一般可使用一个分数(score)来定义,当 score为正值时,表示资源倾向与此节点;负值表示资源倾向逃离于此节点。也能够将score定义为-inf(负无穷大)和inf(正无穷大)。例如: 有三个节点rs一、rs二、rs3当rs1是主节点且发生故障时,则比较rs2和rs3的score值,谁是正值,则资源将会转移到哪一个节点上去。
排列约束(colocation):用来定义资源是否能够在一块儿,一般也是使用一个score来定义的。当score是正值表示资源能够在一块儿;不然表示不能够在一块儿。经过定义资源类型为group也能够来将全部资源绑定在一块儿。
顺序约束(order):用来定义资源启动和中止的顺序。例如,首先应该先挂载共享存储,再启动httpd或mysqld服务才行吧。
资源隔离级别:资源隔离是为了集群产生脑裂时防止因为抢占共享存储致使文件系统崩溃。
节点级别:使用stonithd设备来实现。
资源级别:使用FC SAN switch能够实如今存储资源级别拒绝某节点的访问。
参考资料:
linux高可用集群原理详解:http://www.mamicode.com/info-detail-416675.html