一、 HA集群的架构图:

HA高可用集群的详解_第1张图片 

对每个部分的理解:

1) 信息和资源架构层

在基础架构上实现心跳信息探测。双方节点可以随时探测到对方的心跳信息,以实现对对方主机工作状态的探测。三类控制信息:心跳(Heartbeats),集群事务信息(Cluster Transition Messages),重传信息(Retransmission Request)。 配置文件:/etc/ha.d/ha.cf。各节点间域共享密钥,实现节点间互相通信的认证。加密方式:MD5,HMAC-SHA1 。常用实现软件:HeartBeat、keepalived、ultramonkey、openais/corosync。红帽官方提供的集群套件RHCS底层使用的通信机制就是openais/corosync。

2) 资源分配子层

在资源分配上定义资源种类,界定资源归属,每个服务需要哪些资源及这些资源之间的前后次序。

集群资源管理器(CRM,常用软件pacemaker),管理双方向外提供服务所需用到的资源,包括IP地址、Web服务、共享存储等等。而这些资源需要依靠集群信息库CIB(XML文件)来定义,同时还必须保证一旦某个节点上的XML文件更新,即刻通知其他节点上的XML也要及时更新。

策略引擎(PE Policy Engine):定义法定人数以及根据法定人数所做出的动作等等。

Transition Engine(TE):所作出的决策有TE执行。PE和TE只工作在DC上

本地资源管理器(LRM Local Resource Manager):监控本地某个资源的工作状况。

3) 资源层

本地资源代理(Resource Agent),脚本文件,一旦集群资源管理器发现某个资源工作异常,立即通知本地资源代理重启服务。常用方法:

(1)Heartbeat v1;

(2)使用脚本LSB scripts (Linux Standards Base );

(3)OCF Open Cluster Format 开放集群框架,也是一个脚本但比LSB功能更强大(最佳方式)。

(4)第三方脚本

 

二、高可用集群常用架构模型

(1)一主一从架构;

(2)互为主从架构:两台主机分别提供两种不同的服务;

(3)多主机架构:N台主机组成一个集群,分别提供不同的服务,一台服务器空闲做备节点。或者全部处于工作状态,一台服务器出故障,立刻将服务转移到其他主机上。各节点之间需要以多播的形式将自己的健康情况发送给其他主机。

故障转移域,如果一台主机发生故障,会将主机上的服务转移到域内的另一台主机上。

法定人数(Quorum) 集群超过这个值会正常工作,低于这个值会停止工作,同时也避免出现资源争用的情况。

脑裂和仲裁:在某种情况下,由于底层通知错误,或者传递信息的介质出现故障,会出现资源争用的情况,称之为脑裂。此时,每个部分都想取得对集群资源的控制权,以保证集群的高可用,这将破坏集群资源的完整性和一致性,导致整个集群瘫痪,硬件被破坏等严重后果。为防止脑裂的放生,将由仲裁协议即法定代表人数来决定哪个部分取得对集群资源的控制权。