高可用集群系统
一.HA 基本
HA (High Avaliable)高可用性集群,是保证业务连续性的有效解决方法,一般有2个或2个以上的节点,且分为活动节点及备用节点。当活动节点出现问题时,导致正在运行的业务不能正常运行时,备用节点此时就会监测到,并且立即接管,保证任务正常运行。
高可用集群,英文原文为High Availability Cluster,简称HACluster,简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点(node)。
高可用集群的出现是为了使集群的整体服务尽可能可用,从而减少由计算机硬件和软件易错性所带来的损失。如果某个节点失效,它的备援节点将在几秒钟的时间内接管它的职责。因此,对于用户而言,集群永远不会停机。
实现HA的三种方式:
(1)主从式
正常情况下,工作都由主节点承担,只有当主节点发生故障时,服务器会自动切换到从节点,从节点才会启动服务,平时不会启动服务;主服务器上必须有集群ip(vip),服务,公用存储。一旦主服务器发生故障,这三样都会自动切换到从节点上。
从节点只有发生故障时才会用,因此比较浪费。
(2)对称式
这种方式一般包括2个节点和一个或多个服务,针对于两个不同的服务器,没有绝对的主,也没有绝对的从。
两个节点互相检测对方的状态,当一个节点发生故障时,该节点上的服务会切换到另外一个节点上去。这样就可以保证服务的正常运行。
(3)集群式
这种方式通常包含多个节点和多个服务,每个节点都可能运行或不运行服务,每台服务器都监视着几个指定的服务,当其中的一个节点发生故障时,会自动切换到这组服务器中的一个节点上去。
二、高可用集群的衡量标准
HA(High Available), 高可用性群集是通过系统的可靠性(reliability)和可维护性(maintainability)来度量的。工程上,通常用平均无故障时间(MTTF)来度量系统的可靠性,用平均维修时间(MTTR)来度量系统的可维护性。于是可用性被定义为:HA=MTTF/(MTTF+MTTR)*100%
具体HA衡量标准:
99% 一年宕机时间不超过4天
99.9% 一年宕机时间不超过10小时
99.99% 一年宕机时间不超过1小时
99.999% 一年宕机时间不超过6分钟
三.高可用集群的分类
1.双机热备
高可用集群软件的主要作用就是实现故障检查和业务切换的自动化。只有两个节点的高可用集群又称为双机热备,即使用两台服务器互相备份。当一台服务器出现故障时,可由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续对外提供服务。双机热备只是高可用集群的一种,高可用集群系统更可以支持两个以上的节点,提供比双机热备更多、更高级的功能,更能满足用户不断出现的需求变化。
2.多节点热备(N+1)
官方说明:By supporting many nodes, Pacemaker can dramatically reduce hardware costs by allowing several active/passive clusters to be combined and share a common backup node.
3.多节点共享存储(N-TO-N)
官方说明:When shared storage is available, every node can potentially be used for failover. Pacemaker can even run multiple copies of services to spread out the workload.
4.共享存储热备 (Split Site)
官方说明:Pacemaker 1.2 will include enhancements to simplify the creation of split-site clusters.
四.高可用集群软件
Messaging and Membership Layer(信息与关系层):
heartbeat (v1,v2,v3),heartbeat v3 分拆 heartbeat pacemaker cluster-glue
corosync
Cman
keepalived
ultramokey
·
Cluster Resource Manager Layer(资源管理层,简称:CRM):
haresource,crm (heartbeat v1/v2)
pacemaker (heartbeat v3/corosync)
rgmanager (cman)
·
常用组合:
·
heartbeat v2+haresource(或crm) (说明:一般常用于CentOS 5.X)
heartbeat v3+pacemaker (说明:一般常用于CentOS 6.X)
corosync+pacemaker (说明:现在最常用的组合)
cman + rgmanager (说明:红帽集群套件中的组件,还包括gfs2,clvm)
keepalived+lvs (说明:常用于lvs的高可用)
五.共享存储
说到集群, 我们不得不说到,共享存储,因为不管理是Web高可用也,Mysql高可用也好,他们的数据都是共享的就一份,所有必须放在共享存储中,主节点能访问,从节点也能访问。下面我们就简单说一下共享存储。
1.DAS:(Direct attached storage)直接附加存储
说明:设备直接连接到主机总线上的,距离有限,而且还要重新挂载,之间有数据传输有延时
RAID 阵列、SCSI 阵列
2.NAS:(network attached storage)网络附加存储
说明:文件级别的共享
NFS、FTP、CIFS
3.SAN:(storage area network)存储区域网络
说明:块级别的,模拟的scsi协议
FC光网络(交换机的光接口超贵,一个差不多2万,如果使用这个,代价太高)、
IPSAN(iscsi)存取快,块级别,廉价
六.集群文件系统与集群LVM(集群逻辑卷管理cLVM)
集群文件系统:gfs2、ocfs2
集群LVM:cLVM
七.高可用集群的工作原理
说明:这里主要以主/从节点的高可用来说明工作原理。
主服务器和从服务器建立双机热备,基本上都是共享一个存储,以mysql为例。通常情况下,数据库文件挂载在主数据库服务器上,用户连接到主服务器上进行数据库操作。当主服务器出现故障时,从服务器就会自动挂载数据库文件,并接替主服务器的工作。用户在未通知的情况下,通过从数据库连接到数据库文件进行操作。等主服务器的故障修复之后,又可以重新提供服务;
那么,从服务器是如何知道主服务器挂掉了呢,这就要使用一定的检测机制,如心跳检测,也就是说每一个节点都会定期向其他节点通知自己的心跳信息,尤其是主服务器,如果从服务器在几个心跳周期内(可自行设置心跳周期)还没有检测到的话,就认为主服务器宕掉了,而这期间在通告心跳信息当然不能使用tcp传输的,如果使用tcp检测,还要经过三次握手,等手握完了,不定经过几个心跳周期了,所以在检测心跳信息的时候采用的是udp的端口694来进行传递信息的,如果主服务器在某一端时间由于服务繁忙,没时间响应心跳信息,这个时候从服务器要是把主服务资源抢过去(共享数据文件),但是这个时候主服务器还没有宕掉,这样就会导致资源抢占,就这样用户在主从上都能访问,如果仅仅是读操作还没事,要是有写的操作,那就会导致文件系统崩溃,这样一切都玩了,所以在资源抢占的时候,可以采用一定的隔离方法来实现,就是从服务器抢占资源的时候,直接把主服务器给“STONITH”,就是我们常说的“爆头”;
那么,我们又用什么方式来检测心跳信息呢?就是通过心跳线来检测。运行在从服务器上的Heartbeat可以通过以太网连接检测主服务器的运行状态,一旦其无法检测到主服务器的“心跳”则自动接管主服务器的资源。通常情况下,主、从服务器间的心跳连接是一个独立的物理连接,这个连接可以是串行线缆、一个由“交叉线”实现的以太网连接。Heartbeat甚至可同时通过多个物理连接检测主服务器的工作状态,而其只要能通过其中一个连接收到主服务器处于活动状态的信息,就会认为主服务器处于正常状态。从实践经验的角度来说,建议为Heartbeat配置多条独立的物理连,以避免Heartbeat通信线路本身存在单点故障。
上面的原理中我们提到了“隔离方法”,下面我们来说一说,隔离方法有两种,一种是节点隔离,另一种是资源隔离。节点隔离就是我们常说的STONITH(Shoot The Other Node In the Head ,俗称“爆头”),意思就是直接切断电源;常用的方法是所有节点都接在一个电源交换机上,如果有故障,就直接导致该节点的电压不稳定,或断电,让有故障的节点重启或关闭。(如下图),而资源隔离,就是 fencing 直接把某种资源截获过来。
下面我们再来说一说“心路线”的类型,一种是串行电缆,另一种就是我们常看到的以太网线(交叉的双绞线),它们各有优缺点,串行电缆,被认为是比以太网连接安全性稍好些的连接方式,因为hacker无法通过串行连接运行诸如telnet、ssh或rsh类的程序,从而可以降低其通过已劫持的服务器再次侵入备份服务器的几率。但串行线缆受限于可用长度,因此主、备服务器的距离必须非常短。以太网线连接,使用此方式可以消除串行线缆的在长度方面限制,并且可以通过此连接在主从服务器之间同步文件系统,从而减少了对正常通信连接带宽的占用。(如下图)
本文部分内容来自http://freeloda.blog.51cto.com