您的位置:首页 > 其它

HA技术简介

2013-11-19 17:43 225 查看
一、什么是HA?
HA(High Availability,简称HA),就是高可用性集群通过一组计算机系统提供透明的冗余处理能力,从而实现提供不间断的响应服务。其中每一台提供服务的计算机称为节点(Node)。当一个节点不可用或者不能处理客户的请求时,响应该请求的服务会及时转移到另外的可用节点来处理,而这些对于客户端是透明的,客户也不会去关心使用的资源具体是怎么提供的,集群系统会自动完成。

二、衡量标准
计算机系统的可用性(availability)是通过系统的可靠性(reliability)和可维护性(maintainability)来度量的。工程上通常用平均无故障时间(MTTF)来度量系统的可靠性,用平均维修时间(MTTR)来度量系统的可维护性。于是可用性被定义为:MTTF/(MTTF+MTTR)*100%
99% 一年宕机时间不超过90h
99.9% 一年宕机时间不超过10h
99.99% 一年宕机时间不超过1h
99.999% 一年宕机时间不超过6min
其实在一般企业应用中能达到99.9%或99%基本能满足公司业务的开展,而且2个9或3个9在实现中需要的成本及其难度相对5个9要小很多很多,在一般的企业级应用中能做到3个9基本就够了,当然能做到5个9那是最好,但是有些时候在追求极致的同时也会产生过犹不及情况(当然不是人人都是乔布斯,个人谬论不当之处请别较真~~)。

三、HA的架构层次



在上图中我们将HA大致分为3个层次,心跳传递层、资源管理、资源服务代理,那么它们是怎么工作的呢?我是这样来理解的:
从上图中我们可以清晰的看到左右两个节点(node),左节点与右节点的不同之处在于左节点多了一个策略引擎(Policy Engine,简称PE),所以可以看出左节点是主节点(A节点),右节点是备节点(P节点),A、P节点将底层的心跳信息相互传递并汇报给各自的CRM(集群资源管理器),CRM通过心跳信息来判断彼此节点的存活状态并相互通告。
1、PE是怎么启动本节点的资源的呢?
PE通过最终决策将需要启动的资源告知给 CRM,CRM通过本节点的LRM来执行资源代理,从而达到启动本节点的资源。在A、P节点中的LRM是不能彼此通讯的。
2、如果当A节点故障了,服务怎么转移到P节点?
从上图中我们可以很明显看出DC(Designated Coordinator)位于左节点,如果A节点故障了或服务关闭了(节点心跳信息传递服务),PE会回收在当前节点上运行的集群资源,P节点就会提升为主节点并启动本节点的PE模块,再启用定义的集群资源,同时自己由P节点转变为A节点并获得DC的权力。

四、常用的HA开源软件
1、heartbeat
2、corosync(openais)
3、RHCS(Red Hat Cluster Suite): cman
4、keepalived

五、相关概念
1、CRM(Cluster Resource Manager)集群资源管理,
1.1、资源管理器:
heartbeat v1: haresources
heartbeat v2: crm
heartbeat v3: pacemaker
corosync: pacemaker
cman: rgmanager
RHEL 6.4:cman, corosync

1.2、资源类型:
primitive(native):基本资源,原始资源
group:资源组
clone:克隆资源(可同时运行在多个节点上),要先定义为primitive后才能进行clone
master/slave:主从资源,如drdb

1.3、资源约束:
location:资源对节点的偏好
colocation:资源运行在同一个节点上的可能性
order: 资源采取动作的次序
资源粘性表示资源是否倾向于留在当前节点,如果为正整数,表示倾向,负数则会离开,-inf表示正无穷,inf表示正无穷

2、RA(Resource Agent)资源代理:
Lsb:linux表中库,一般位于/etc/rc.d/init.d/目录下的支持start|stop|status等参数的服务脚本都是lsb
ocf:Open cluster Framework,开放集群架构
heartbeat:heartbaet V1版本
stonith:专为配置stonith设备而用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: