HA Cluster高可用集群分以下几个步骤来说:
点我-->HA Cluster基础概念
点我-->heartbeat实现HA
点我-->corosync详解
点我-->pacemaker详解
点我-->DRBD详解
点我-->heartbeat基于crm进行资源管理
点我-->Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群
点我-->Heartbeat+MySQL+NFS 实现高可用(HA)的MySQL集群
本文说的为第一节:HA Cluster基础概念
一、HA Cluster=High availability Cluster即高可用集群。
简单的说,集群就是一组计算机,他们作为一个整体向用户提供一组网络资源。其中单个的计算机就是集群中的节点(node)。
只有两个节点的高可用集群又称为双机热备,即使用两台服务器互相备份。当一台服务器出现故障时,可由另一台服务器承担服务任务,从而在不需要人工干预的 情况下,自动保证系统能持续对外提供服务。双机热备只是高可用集群的一种,高可用集群系统更可以支持两个以上的节点,提供比双机热备更多、更高级的功能,更能满足用户不断出现的需求变化。
二、高可用集群的衡量标准
HA(High Available), 高可用性群集是通过系统的可靠性(reliability)和可维护性(maintainability)来度量的。工程上,通常用平均无故障时间(MTTF)来度量系统的可靠性,用平均维修时间(MTTR)来度量系统的可维护性。于是可用性被定义为:HA=MTTF/(MTTF+MTTR)*100%
具体HA衡量标准:
99% 一年宕机时间不超过4天
99.9% 一年宕机时间不超过10小时
99.99% 一年宕机时间不超过1小时
99.999% 一年宕机时间不超过6分钟
三、高可用集群的层次结构
高可用集群可分为三个层次结构,分别为:messaging & membership 层,Cluster resource manager层,local resource manager(LRM)与 resource agent层组成,下面我们来具体说说:
核心组件的具体说明:
1.ccm组件(Cluster Consensus Menbership Service):作用,承上启下,监听底层接受的心跳信息,当监听不到心跳信息的时候就重新计算整个集群的票数和收敛状态信息,并将结果转递给上层,让上层做出决定采取怎样的措施,ccm还能够生成一个各节点状态的拓扑结构概览图,以本节点做为视角,保证该节点在特殊情况下能够采取对应的动作。
2.crmd组件(Cluster Resource Manager,集群资源管理器,也就是pacemaker):实现资源的分配,资源分配的每个动作都要通过crm来实现,是核心组建,每个节点上的crm都维护一个cib用来定义资源特定的属性,哪些资源定义在同一个节点上。
3.cib组件(集群信息基库,Cluster Infonation Base):是XML格式的配置文件,在内存中的一个XML格式的集群资源的配置文件,主要保存在文件中,工作的时候常驻在内存中并且需要通知给其它节点,只有DC上的cib才能进行修改,其他节点上的cib都是拷贝DC上。配置cib文件的方法有,基于命令行配置和基于前台的图形界面配置。
4.lrmd组件(Local Resource Manager,本地资源管理器):用来获取本地某个资源的状态,并且实现本地资源的管理,如当检测到对方没有心跳信息时,来启动本地的服务进程等。
5.pengine组件:
PE(Policy Engine):策略引擎,来定义资源转移的一整套转移方式,但只是做策略者,并不亲自来参加资源转移的过程,而是让TE来执行自己的策略。
TE(Transition Engine): 就是来执行PE做出的策略的并且只有DC上才运行PE和TE。
6.stonithd组件
STONITH(Shoot The Other Node in the Head,”爆头“), 这种方式直接操作电源开关,当一个节点发生故障时,另 一个节点如果能侦测到,就会通过网络发出命令,控制故障节点的电源开关,通过暂时断电,而又上电的方式使故障节点被重启动, 这种方式需要硬件支持。
STONITH应用案例(主从服务器),主服务器在某一端时间由于服务繁忙,没时间响应心跳信息,如果这个时候备用服务器一下子把服务资源抢过去,但是这个时候主服务器还没有宕掉,这样就会导致资源抢占,就这样用户在主从服务器上都能访问,如果仅仅是读操作还没事,要是有写的操作,那就会导致文件系统崩溃,这样一切都玩了,所以在资源抢占的时候,可以采用一定的隔离方法来实现,就是备用服务器抢占资源的时候,直接把主服务器给STONITH,就是我们常说的”爆头 ”。
四、高可用集群的分类
1.双机热备(Active/Passive)
2.多节点热备(N+1)
3.多节点共享存储(N-TO-N)
4.共享存储热备 (Split Site)
五、高可用集群软件
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的高可用)
总结:我们经常在技术博客中看到,heartbeat+pacemaker实现mysql高可用,或corosync+pacemaker实现mysql高可用等,有的博友会问了,我们到底用什么好呢?经过上面的说明大家应该有所了解!
六、共享存储
说到集群, 我们不得不说到,共享存储,因为不管理是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