HA高可用集群核心总结

1. HA集群概念

高可用集群(High Availability Cluster),即HA集群,是一种以减少服务中断时间为目的的服务器集群技术,其主要作用在于实现故障检查和业务切换的自动化,进而减少由于计算机硬件或软件发生故障所造成的损失
在HA集群中,如果某个节点发生故障失效(如宕机等),其他备援节点立即在短时间内接管并执行故障节点的任务,进而保证HA集群业务继续正常运行。

2. HA集群的衡量标准

HA集群是通过系统的可靠性(reliability)可维护性(maintainability)这两个指标来度量的。通常地,在工程上常用平均无故障时间(MTTF)来度量系统的可靠性,用平均维修时间(MTTR)来度量系统的可维护性。于是高可用性可被定义为:𝐻𝐴=𝑀𝑇𝑇𝐹/(𝑀𝑇𝑇𝐹+𝑀𝑇𝑇𝑅)×100%,其中,HA的常用衡量标准如下:

  • 99% ,指一年宕机时间不超过4天。
  • 99.9% ,指一年宕机时间不超过10小时。
  • 99.99% ,指一年宕机时间不超过1小时。
  • 99.999% ,指一年宕机时间不超过6分钟。

通常地,在工程上大部分企业通常追求年业务正常率达到99.99%,即一年最多只允许约52分钟的故障率

3. HA集群的常见方式

3.1 主从式

主从式也称为非对称式,这种方式组建的高可用集群通常包含2个节点和一个或多个服务,其中一台作为主节点(active),另一台作为备份节点(standy)。备份节点随时都在检测主节点的健康状况,当主节点发生故障时,服务会自动切换到备份节点上以保证服务正常运行。另外,该方式的备份节点平时不会启动服务,只有发生故障时才会有用,某种程度上来说,有些浪费资源。

3.2 对称式

这种方式一般包含2个节点和一个或多个服务,其中每一个节点都运行着不同的服务且相互作为备份,两个节点互相检测对方的健康状况,当其中一个节点发生故障时,该节点上的服务会自动切换到另一个节点上去,从而保证服务能够继续正常运行。

3.3 集群式

这种集群包含多个节点和多个服务。每一个节点都可能运行和不运行服务,每台服务器都监视着几个指定的服务,当其中的一个节点发生故障时,该节点的业务会自动切换到其他节点上运行。

4. HA集群架构

HA集群通常被分为四层结构:节点主机层、成员关系层、集群资源管理层、资源代理层,下文分别对每层的工作原理进行介绍。

4.1 节点主机层

这一层主要是运行在物理主机上的服务,高可用集群相关的软件运行在各主机节点上,集群资源也是在各主机上。

4.2 成员关系层

成员关系层主要可分为两大层:信息传递层(Messaging Layer)和成员关系层(Membership Layer)。

  1. 信息传递层

该层也称为心跳层,是传递集群信息的一种机制,通过监听UDP 694号端口,可以通过单播、组播、广播等方式实时快速传递信息,传递的内容为HA集群的集群事务,如心跳信息、资源事务信息等。另外,该层只负责传递信息,不负责信息的计算和比较

  1. 成员关系层

这层最重要的作用是主节点(DC)通过Cluster Consensus Menbership Service(CCM或者CCS)这种服务来产生一个完整的成员关系。这层主要实现承上启下的作用,承上是指将下层产生的信息生产成员关系图传递给上层,用于汇报各个节点的工作状态;启下是指对上层发出隔离某一设备的命令进行具体实施。

4.3 集群资源管理层

该层主要为那些不具有高可用服务提供高可用性,它需要借助Messaging Layer来实现工作,因此工作在Messaging Layer上层。资源管理器的主要工作是收集messaging Layer传递的节点信息,并负责信息的计算和比较,并做出相应的动作,如服务的启动、停止和资源转移、资源的定义和资源分配等
在该层中每个节点都运行一个集群资源管理器(CRM,cluster Resource Manager),CRM会推选出一个用于计算和比较的节点,叫DC指定协调节点(Designated Coordinator),计算由PE策略引擎(Policy Engine)实现,计算出结果后的动作控制由TE事务引擎(Transition Engine)实现。
在每个节点上CRM都维护着一个xml格式的CIB(Cluster Information Base,集群信息库)文件,只有DC(主节点)才可以对该CIB文件进行修改,其他节点上的CIB文件都是复制DC上的CIB文件而来。
在每个节点上都有一个LRM本地资源管理器(local resource manager),是CRM的一个子功能,是执行CRM传递过来的在本地执行某个资源的执行和停止的具体执行人。当某个节点发生故障之后,是由DC通过PE和TE来决定是否抢夺资源。

4.4 资源代理层

资源代理层,简单的说就是能够对集群资源进行管理的脚本,如资源的start,stop、restart和查询状态信息等操作的脚本,该脚本由LRM本地资源管理器负责运行。
当前,集群资源代理主要分为如下几种:

  1. Legacy heartbeat(heatbeat v1版本的资源管理)。
  2. LSB(Linux Standard Base),主要是/etc/init.d/*目录下的脚本,如start/stop/restart/status;
  3. OCF(Open Cluster Famework),比LSB更专业,更加通用,除了上面的四种操作,还包含monitor、validate-all等集群操作。
  4. STONITH:实现节点隔离。

5. HA集群工作原理

在介绍HA集群工作原理之前,先介绍下心跳线和隔离方法,以便更容易对HA集群工作原理的进行了解。

5.1 心跳线

心跳线也主要分为串行电缆和以太网线。串行电缆被认为是比以太网连接安全性稍好的连接方式,因为hacker无法通过串行连接运行诸如telnet、ssh或rsh类的程序,从而可以降低其通过已劫持的服务器再次侵入备份服务器的几率。但串行线缆受限于可用长度,因此主、备服务器的距离必须非常短。以太网线连接,可以消除串行线缆的在长度方面限制,并且可以通过此连接在主/从服务器之间同步文件系统,从而减少了对正常通信连接带宽的占用。

5.2 隔离方法

隔离方法主要有两种,一种是节点隔离,另一种是资源隔离。节点隔离就是我们常说的STONITH(Shoot The Other Node In the Head ,俗称“爆头”),意思就是直接切断电源。常用的方法是将所有节点都接在一个电源交换机上,如果某一个节点发生故障,就直接导致该节点的电压不稳定或断电,让有故障的节点重启或关闭。而资源隔离就是通过fencing方式直接把某种资源截获过来。

5.3 HA集群工作原理

以主/从MySQL服务器为例,主服务器和从服务器建立双机热备,基本上都是共享一个存储。通常情况下,数据库文件挂载在主数据库服务器上,用户连接到主服务器上进行数据库操作。当主服务器出现故障时,从服务器就会自动挂载数据库文件,并接替主服务器的工作。用户在未接到通知的情况下,可以通过从数据库连接到数据库文件进行操作,等到主服务器的故障修复之后,又可以重新提供服务。
那么,从服务器是如何知道主服务器挂掉了呢?这就需要使用心跳检测机制,也就是让每一个节点都会定期向其他节点通知自己的心跳信息,尤其是主服务器,如果从服务器在几个心跳周期内(可自行设置心跳周期)还没有检测到心跳信息的话,就认为主服务器宕掉了,而这期间在通知心跳信息时通常采用udp协议来进行传递信息。
另外,如果主服务器在某一段时间内由于服务繁忙,没时间响应心跳信息,这个时候从服务器如果把主服务器的资源抢过去(共享数据文件),但是这个时候主服务器还没有宕掉,这样就会导致资源抢占,这样的话,用户在主服务器和从服务器上都能访问,如果仅仅是读操作不受影响,但如果包含写操作就会导致文件系统崩溃,因此,在资源抢占的时候,可以采用一定的隔离方法来实现,即当从服务器抢占资源的时候,直接把主服务器给“STONITH掉”,即常说的“爆头”现象。

6. HA集群软件

6.1 Messaging and Membership Layer

  • heartbeat (v1,v2,v3),heartbeat v3分拆 heartbeat、pacemaker、cluster-glue
  • corosync
  • cman
  • keepalived
  • ultramokey

6.2 Cluster Resource Manager Layer

  • haresource,crm (heartbeat v1/v2)
  • pacemaker (heartbeat v3/corosync)
  • rgmanager (cman)

6.3 HA集群常用组合及应用

  • heartbeat v2+haresource (说明:一般常用于CentOS 5.X)
  • heartbeat v3+pacemaker (说明:一般常用于CentOS 6.X)
  • corosync+pacemaker (说明:现在最常用的组合)
  • cman + rgmanager (说明:红帽集群套件中的组件,还包括gfs2,clvm)
  • keepalived+lvs (说明:常用于lvs的高可用)

HA集群架构主要由核心两部分组成:资源转移和心跳检测,通过二者结合使用来实现对高可用架构的自动管理。以HA集群中常用的corosync+pacemaker组合为例,pacemaker用于资源转移,corosync用于心跳检测,心跳检测是指用来检测服务器是否还在提供服务,若出现服务器异常,就认为它挂掉了,此时pacemaker将会对资源进行转移操作。

7. Fence设备及原理

7.1 Fence设备的概念

Fence设备(又称Stonith设备)是RHCS集群中必不可少的一个组成部分,集群中所有服务器均接到Fence设备上,通过Fence设备可以避免因出现不可预知的情况而造成的“爆头”现象。
Fence操作是指通过服务器、存储本身的硬件管理接口或者外部电源管理设备,对服务器或存储直接发出硬件管理指令,将对应的服务器或存储进行重启、关机或者与网络断开连接。

7.2 Fence设备的工作原理

当意外原因导致主机异常或者宕机时,备机会首先调用Fence设备,然后通过Fence设备将异常主机重启或者从网络隔离,当Fence操作成功执行后,返回信息给备机,备机在接到Fence成功的信息后,开始接管主机的服务和资源。这样通过Fence设备,将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上。另外,原来那个被Fence重启后的主节点在重启完成后是否继续成为主节点,这个通常需要根据具体的业务场景进行合理设置。

7.3 Fence设备的类型

RHCS的Fence设备可以分为两种:内部Fence和外部Fence。常用的内部Fence设备有IBMRSAII卡,HP的iLO卡,还有IPMI的设备等,外部Fence设备有UPS、SANSWITCH、NETWORKSWITCH等。

7.4 Fence相关命令

  • 开启某节点的fence资源:pcs resource enable fence_node1
  • fence某节点:pcs stonith fence node1
  • 查看fence设备(stonith)类型:pcs stonith list
  • 删除fence_node1资源:pcs stonith delete fence_node1
  • 开启/禁用stonith:pcs property set stonith-enabled=true/false
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值