CentOS6.3下DRBD+Heartbeat+NFS配置笔记
Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享
Heartbeat+DRBD+NFS环境布署
CentOS6.3下Heartbeat+drbd的安装和配置
一、高可用集群的定义
高可用集群,英语原文为HighAvailabilityCluster,简称HACluster,简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网路资源。这种单个的计算机系统就是集群的节点(node)。
高可用集群的出现是为了使集群的整体服务尽可能可用,进而降低由计算机硬件和软件易错性所带来的损失。假如某个节点失效,它的备援节点将在几秒钟的时间内接管它的职责。因而,对于用户而言,集群永远不会停机。
高可用集群软件的主要作用就是实现故障检测和业务切换的手动化。只有两个节点的高可用集群又称为双机热备,即使用两台服务器相互备份。当一台服务器出现故障时,可由另一台服务器承当服务任务,因而在不须要人工干预的情况下,手动保证系统能持续对外提供服务。双机热备只是高可用集群的一种,高可用集群系统更可以支持两个以上的节点,提供比双机热备更多、更中级的功能,更能满足用户不断出现的需求变化。
二、高可用集群的评判标准
HA(HighAvailable),高可用性群集是通过系统的可靠性(reliability)和可维护性(maintainability)来测度的。工程上,一般用平均无故障时间(MTTF)来测度系统的可靠性,用平均修理时间(MTTR)来测度系统的可维护性。于是可用性被定义为:HA=MTTF/(MTTF+MTTR)*100%
具体HA评判标准:
99%一年宕机时间不超过4天
99.9%一年宕机时间不超过10小时
99.99%一年宕机时间不超过1小时
99.999%一年宕机时间不超过6分钟
三、高可用集群的层次结构
说明:高可用集群可分为三个层次结构,分别由白色部份的Messaging与Membership层,红色部份的ClusterResourceManager(CRM)层,红色部份的LocalResourceManager(LRM)与ResourceAgent(RA)组成,下边我们就来具体说明(如上图),
1.坐落最底层的是信息和成员关系层(MessagingandMembership),Messaging主要用于节点之间传递脉搏信息,亦称为脉搏层。节点之间传递脉搏信息可以通过广播,组播,时隙等形式。成员关系(Membership)层,这层最重要的作用是主节点(DC)通过ClusterConsensusMenbershipService(CCM或则CCS)这些服务由Messaging层提供的信息,来形成一个完整的成员关系。这层主要实现承上启下的作用,承上,将上层形成的信息生产成员关系图传递给下层以通知各个节点的工作状态;启下,将下层对于隔离某一设备给以具体施行。
2.集群资源管理层(ClusterResourceManager),真正实现集群服务的层。在该层中每位节点都运行一个集群资源管理器(CRM,clusterResourceManager),它能为实现高可用提供核心组件,包括资源定义,属性等。在每一个节点上CRM都维护有一个CIB(集群信息库XML文档)和LRM(本地资源管理器)组件。对于CIB,只有工作在DC(主节点)上的文档是可以更改的,其他CIB都是复制DC上的那种文档而至的。对于LRM,是执行CRM传递过来的在本地执行某个资源的执行和停止的具体执行人。当某个节点发生故障以后,是由DC通过PE(策略引擎)和TE(施行引擎)来决定是否抢劫资源。
3.资源代理层(ResourceAgents),集群资源代理(才能管理本节点上的属于集群资源的某一资源的启动,停止和状态信息的脚本),资源代理分为:LSB(/etc/init.d/*),OCF(比LSB更专业,愈发通用),Legacyheartbeat(v1版本的资源管理)。
核心组件的具体说明(如上图):
m组件(ClusterConsensusMenbershipService):作用,承上启下,窃听底层接受的脉搏信息,当窃听不到脉搏信息的时侯就重新估算整个集群的票数和收敛状态信息,并将结果催办给下层linux启动盘制作工具,让下层作出决定采取如何的举措,ccm还能否生成一个各节点状态的拓扑结构概览图,以本节点做为视角,保证该节点在特殊情况下才能采取对应的动作。
2.crmd组件(ClusterResourceManager,集群资源管理器,也就是pacemaker):实现资源的分配,资源分配的每位动作都要通过crm来实现,是核心成立,每位节点上的crm都维护一个cib拿来定义资源特定的属性,什么资源定义在同一个节点上。
3.cib组件(集群信息基库,ClusterInfonationBase):是XML格式的配置文件,在显存中的一个XML格式的集群资源的配置文件,主要保存在文件中,工作的时侯常驻在显存中而且须要通知给其它节点,只有DC上的cib能够进行更改,其他节点上的cib都是拷贝DC上。配置cib文件的方式有,基于命令行配置和基于前台的图形界面配置。
4.lrmd组件(LocalResourceManager,本地资源管理器):拿来获取本地某个资源的状态,而且实现本地资源的管理,如当测量到对方没有脉搏信息时,来启动本地的服务进程等。
5.pengine组件:
PE(PolicyEngine):策略引擎,来定义资源转移的一整套转移方法,但只是做策略者,并不亲自来出席资源转移的过程,而是让TE来执行自己的策略。
TE(TransitionEngine):就是来执行PE作出的策略的而且只有DC上才运行PE和TE。
6.stonithd组件
STONITH(ShootTheOtherNodeintheHead,”爆头“),这些方法直接操作电源开关linux集群高可用,当一个节点发生故障时,另一个节点假如能探测到,都会通过网路发出命令,控制故障节点的电源开关,通过暂时断电,而又上电的形式使故障节点被重启动,这些方法须要硬件支持。
STONITH应用案例(主从服务器),主服务器在某一端时间因为服务忙碌,没时间响应脉搏信息,假如这个时侯备用服务器一下子把服务资源抢过去,而且这个时侯主服务器还没有宕掉,这样才会造成资源占据,就这样用户在主从服务器上都能访问,假如仅仅是读操作还没事,要是有写的操作,那都会造成文件系统崩溃,这样一切都玩了,所以在资源占据的时侯,可以采用一定的隔离方式来实现,就是备用服务器占领资源的时侯,直接把主服务器给STONITH,就是我们常说的”爆头”。
接出来请看第2页精彩内容:
四、高可用集群的分类
1.双机热备(Active/Passive)
官方说明:Two-nodeActive/PassiveclustersusingPacemakerandDRBDareacost-effectivesolutionformanyHighAvailabilitysituations.
2.多节点热备(N+1)
官方说明:Bysupportingmanynodes,Pacemakercandramaticallyreducehardwarecostsbyallowingseveralactive/passiveclusterstobecombinedandshareacommonbackupnode.
3.多节点共享储存(N-TO-N)
官方说明:Whensharedstorageisavailable,everynodecanpotentiallybeusedforfailover.Pacemakercanevenrunmultiplecopiesofservicestospreadouttheworkload.
4.共享储存热备(SplitSite)
官方说明:Pacemaker1.2willincludeenhancementstosimplifythecreationofsplit-siteclusters.
五、高可用集群软件
MessagingandMembershipLayer(信息与关系层):
heartbeat(v1,v2,v3),heartbeatv3拆分heartbeatpacemakercluster-glue
corosync
cman
keepalived
ultramokey
ClusterResourceManagerLayer(资源管理层,简称:CRM):
haresource,crm(heartbeatv1/v2)
pacemaker(heartbeatv3/corosync)
rgmanager(cman)
常用组合:
heartbeatv2+haresource(或crm)(说明:通常常用于CentOS5.X)
heartbeatv3+pacemaker(说明:通常常用于CentOS6.X)
corosync+pacemaker(说明:现今最常用的组合)
cman+rgmanager(说明:红帽集群套件中的组件,还包括gfs2,clvm)
keepalived+lvs(说明:常用于lvs的高可用)
总结:我们常常在技术博客中见到,heartbeat+pacemaker实现mysql高可用,或corosync+pacemaker实现mysql高可用等,有的博友会问了,我们究竟用哪些好呢?经过前面的说明你们应当有所了解!
六、共享储存
说到集群,我们不得不说到,共享储存,由于不管理是Web高可用也,Mysql高可用也好,她们的数据都是共享的就一份,所有必须置于共享储存中,主节点能访问,从节点也能访问。下边我们就简单说一下共享储存。
1.DAS:(Directattachedstorage)直接附加储存
说明:设备直接联接到主机总线上的,距离有限,并且还要重新挂载,之间有数据传输有延时
RAID阵列
SCSI阵列
2.NAS:(networkattachedstorage)网路附加储存
说明:文件级别的共享
NFS
FTP
CIFS
3.SAN:(storageareanetwork)储存区域网路
说明:块级别的,模拟的scsi合同
FC光网路(交换机的光插口超贵,一个差不多2万,假如使用这个,代价太高)
IPSAN(iscsi)存取快,块级别,廉价
七、集群文件系统与集群LVM(集群逻辑卷管理cLVM)
集群文件系统:gfs2、ocfs2
集群LVM:cLVM
注:通常用于高可用双主模型中(如右图)
八、高可用集群的工作原理
说明:这儿主要以主/从节点的高可拿来说明工作原理。
主服务器和从服务器构建双机热备,基本上都是共享一个储存,以mysql为例。一般情况下,数据库文件挂载在主数据库服务器上,用户联接到主服务器上进行数据库操作。当主服务器出现故障时,从服务器都会手动挂载数据库文件,并接替主服务器的工作。用户在未通知的情况下,通过从数据库联接到数据库文件进行操作。等主服务器的故障修补然后,又可以重新提供服务;
这么,从服务器是怎样晓得主服务器死掉了呢,这就要使用一定的测量机制,如心跳检查,也就是说每一个节点就会定期向其他节点通知自己的脉搏信息,尤其是主服务器,倘若从服务器在几个脉搏周期内(可自行设置脉搏周期)还没有检查到的话,就觉得主服务器宕掉了,而这期间在通告脉搏信息其实不能使用tcp传输的,假如使用tcp检查,还要经过三次握手,等手握完了,不定经过几个脉搏周期了,所以在测量脉搏信息的时侯采用的是udp的端口694来进行传递信息的,假如主服务器在某一端时间因为服务忙碌,没时间响应脉搏信息,这个时侯从服务器要是把主服务资源抢过去(共享数据文件),然而这个时侯主服务器还没有宕掉,这样才会造成资源占据,就这样用户在主从上都能访问,假如仅仅是读操作还没事,要是有写的操作,那都会造成文件系统崩溃,这样一切都玩了,所以在资源占据的时侯,可以采用一定的隔离方式来实现,就是从服务器占领资源的时侯,直接把主服务器给“STONITH”,就是我们常说的“爆头”;
这么,我们又用哪些方法来测量脉搏信息呢?就是通过脉搏线来测量。运行在从服务器上的Heartbeat可以通过以太网联接检查主服务器的运行状态,一旦其难以测量到主服务器的“心跳”则手动接管主服务器的资源。一般情况下,主、从服务器间的脉搏联接是一个独立的化学联接,这个联接可以是串行电缆、一个由“交叉线”实现的以太网联接。Heartbeat甚至可同时通过多个化学联接检查主服务器的工作状态,而其只要能通过其中一个连接收到主服务器处于活动状态的信息,还会觉得主服务器处于正常状态。从实践经验的角度来说,建议为Heartbeat配置多条独立的化学连,以防止Heartbeat通讯线路本身存在单点故障。
里面的原理中我们谈到了“隔离方式”,下边我们来说一说linux 删除文件,隔离方式有两种linux集群高可用,一种是节点隔离,另一种是资源隔离。节点隔离就是我们常说的STONITH(ShootTheOtherNodeIntheHead,也称“爆头”),意思就是直接切断电源;常用的方式是所有节点都接在一个电源交换机上,假如有故障,就直接造成该节点的电流不稳定,或断电,让有故障的节点重启或关掉。(如右图),而资源隔离,就是fencing直接把某种资源查获过来。
下边我们再来说一说“心路线”的类型,一种是串行线缆,另一种就是我们常听到的以太网线(交叉的双绞线),它们各有优劣点,串行线缆,被觉得是比以太网联接安全性稍好些的联接形式,由于hacker未能通过串行联接运行例如telnet、ssh或rsh类的程序,因而可以增加其通过已绑架的服务器再度侵入备份服务器的概率。但串行电缆受限于可用宽度,因而主、备服务器的距离必须十分短。以太网线联接,使用此方法可以去除串行电缆的在宽度方面限制,但是可以通过此联接在主从服务器之间同步文件系统,因而降低了对正常通讯联接带宽的占用。(如右图)
参考文档: