HA高可用集群核心总结-创新互联
高可用集群(High Availability Cluster),即HA集群,是一种以减少服务中断时间为目的的服务器集群技术,其主要作用在于实现故障检查和业务切换的自动化,进而减少由于计算机硬件或软件发生故障所造成的损失
。
在HA集群中,如果某个节点发生故障失效(如宕机等),其他备援节点立即在短时间内接管并执行故障节点的任务,进而保证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)。
- 信息传递层
该层也称为心跳层,是传递集群信息的一种机制,通过监听UDP 694号端口,可以通过单播、组播、广播等方式实时快速传递信息,传递的内容为HA集群的集群事务,如心跳信息、资源事务信息等。另外,该层只负责传递信息,不负责信息的计算和比较
。
- 成员关系层
这层最重要的作用是主节点(DC)通过Cluster Consensus Menbership Service(CCM或者CCS)这种服务来产生一个完整的成员关系。这层主要实现承上启下的作用
,承上是指将下层产生的信息生产成员关系图传递给上层,用于汇报各个节点的工作状态;启下是指对上层发出隔离某一设备的命令进行具体实施。
该层主要为那些不具有高可用服务提供高可用性,它需要借助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来决定是否抢夺资源。
资源代理层,简单的说就是能够对集群资源进行管理的脚本,如资源的start,stop、restart和查询状态信息等操作的脚本,该脚本由LRM本地资源管理器负责运行。
当前,集群资源代理主要分为如下几种:
- Legacy heartbeat(heatbeat v1版本的资源管理)。
- LSB(Linux Standard Base),主要是/etc/init.d/*目录下的脚本,如start/stop/restart/status;
- OCF(Open Cluster Famework),
比LSB更专业,更加通用
,除了上面的四种操作,还包含monitor、validate-all等集群操作。 - STONITH:实现节点隔离。
在介绍HA集群工作原理之前,先介绍下心跳线和隔离方法,以便更容易对HA集群工作原理的进行了解。
5.1 心跳线心跳线也主要分为串行电缆和以太网线。串行电缆
被认为是比以太网连接安全性稍好的连接方式,因为hacker无法通过串行连接运行诸如telnet、ssh或rsh类的程序,从而可以降低其通过已劫持的服务器再次侵入备份服务器的几率。但串行线缆受限于可用长度,因此主、备服务器的距离必须非常短。以太网线连接
,可以消除串行线缆的在长度方面限制,并且可以通过此连接在主/从服务器之间同步文件系统,从而减少了对正常通信连接带宽的占用。
隔离方法主要有两种,一种是节点隔离,另一种是资源隔离。节点隔离
就是我们常说的STONITH(Shoot The Other Node In the Head ,俗称“爆头”),意思就是直接切断电源。常用的方法是将所有节点都接在一个电源交换机上,如果某一个节点发生故障,就直接导致该节点的电压不稳定或断电,让有故障的节点重启或关闭。而资源隔离
就是通过fencing方式直接把某种资源截获过来。
以主/从MySQL服务器为例,主服务器和从服务器建立双机热备,基本上都是共享一个存储。通常情况下,数据库文件挂载在主数据库服务器上,用户连接到主服务器上进行数据库操作。当主服务器出现故障时,从服务器就会自动挂载数据库文件,并接替主服务器的工作。用户在未接到通知的情况下,可以通过从数据库连接到数据库文件进行操作,等到主服务器的故障修复之后,又可以重新提供服务。
那么,从服务器是如何知道主服务器挂掉了呢?这就需要使用心跳检测机制
,也就是让每一个节点都会定期向其他节点通知自己的心跳信息,尤其是主服务器,如果从服务器在几个心跳周期内(可自行设置心跳周期)还没有检测到心跳信息的话,就认为主服务器宕掉了,而这期间在通知心跳信息时通常采用udp协议
来进行传递信息。
另外,如果主服务器在某一段时间内由于服务繁忙,没时间响应心跳信息,这个时候从服务器如果把主服务器的资源抢过去(共享数据文件),但是这个时候主服务器还没有宕掉,这样就会导致资源抢占,这样的话,用户在主服务器和从服务器上都能访问,如果仅仅是读操作不受影响,但如果包含写操作就会导致文件系统崩溃,因此,在资源抢占
的时候,可以采用一定的隔离方法
来实现,即当从服务器抢占资源的时候,直接把主服务器给“STONITH
掉”,即常说的“爆头
”现象。
- heartbeat (v1,v2,v3),heartbeat v3分拆 heartbeat、pacemaker、cluster-glue
- corosync
- cman
- keepalived
- ultramokey
- haresource,crm (heartbeat v1/v2)
- pacemaker (heartbeat v3/corosync)
- rgmanager (cman)
- 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操作是指通过服务器、存储本身的硬件管理接口或者外部电源管理设备,对服务器或存储直接发出硬件管理指令,将对应的服务器或存储进行重启、关机或者与网络断开连接。
当意外原因导致主机异常或者宕机时,备机会首先调用Fence设备,然后通过Fence设备将异常主机重启或者从网络隔离,当Fence操作成功执行后,返回信息给备机,备机在接到Fence成功的信息后,开始接管主机的服务和资源。这样通过Fence设备,将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上。另外,原来那个被Fence重启后的主节点在重启完成后是否继续成为主节点,这个通常需要根据具体的业务场景进行合理设置。
7.3 Fence设备的类型RHCS的Fence设备可以分为两种:内部Fence和外部Fence。常用的内部Fence设备
有IBMRSAII卡,HP的iLO卡,还有IPMI的设备等,外部Fence设备
有UPS、SANSWITCH、NETWORKSWITCH等。
- 开启某节点的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
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网页名称:HA高可用集群核心总结-创新互联
网址分享:http://hbruida.cn/article/dhpdoj.html