大话高可用集群之概念篇

1.1 概念

高可用集群,英文原文为High Availability Cluster,简称HA Cluster,简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点(node)。

高可用集群的出现是为了使集群的整体服务尽可能可用,从而减少由计算机硬件和软件易错性所带来的损 失。如果某个节点失效,它的备援节点将在几 秒钟的时间内接管它的职责。因此,对于用户而言,集群永远不会停机。高可用集群软件的主要作用就是实现故障检查和业务切换的自动化。

只有两个节点的高可用集群又称为双机热备,即使用两台服务器互相备份。当一台服务器出现故障时,可由另一台服务器承担服务任务,从而在不需要人工干预的 情况下,自动保证系统能持续对外提供服务。双机热备只是高可用集群的一种,高可用集群系统更可以支持两个以上的节点,提供比双机热备更多、更高级的功能, 更能满足用户不断出现的需求变化。

  • 节点

运行ha软件的主机成为节点。在ha集群节点中有主次之分,分别称为:主节点/备份节点,.每个节点上都有自己的一组资源。一般情况下主几点提供应用服务,备份节点提供监控模式。

  • HA资源(resource)

资源是一个节点可以控制的实体,并且当节点发生故障时,这些资源能够被其它节点接管(failover资源转移),heartbeat中,可以当做资源的实体有:磁盘分区、文件系统、IP地址、应用程序服务、NFS文件系统等。

  • 事件(event)

也就是集群中可能发生的事情,例如节点系统故障、网络连通故障、网卡故障、应用程序故障等。这些事件都会导致节点的资源发生转移,HA的测试也是基于这些事件来进行的。

  • 动作(action)

事件发生时HA的响应方式,动作是由shell脚步控制的,例如,当某个节点发生故障后,备份节点将通过事先设定好的执行脚本进行服务的关闭或启动。进而接管故障节点的资源。

1.3 HA逻辑层

通常一个集群由3个层次组成:messagelayer(通信层)、CRm集群资源管理层,Resource agent资源代理层。




    		    大话高可用集群之概念篇

  • 通信层 :(Messaging Laye):

用来专门传输2个集群节点的信息事物,为了加快传输的利用率,使用UDP的方式进行通信。通信层传输中的集群事物包括:心跳信息,资源粘性比较信息(资源更倾向于那个节点),资源的转移信息等。至于为什么会有资源粘性,主要是为了当服务器A,B 2个节点的时候,节点A和几点B的性能可能不同,通过资源粘性的方法来决定资源更倾向于在那个节点上运行。当资源通过资源粘性转移到某个节点时,我们把这种情况成为failback。在heartbeat中主要分2种通信结构: 1.HBcomm 通信层 (节点之间的进程通信)通过PILS动态连接库加载。比如支持多播,单播,串口等通信方式。所有节点间通信PLUGIN模块放在lib/plugins/hbcomm/路径下。2.Unix Domain Socket (节点内通信)。在通信层中只负责信息的传递,并不对信息进行比较。假如在资源粘性中A主机节点的粘性为100,B节点的资源粘性为200.在通信层中只负责粘性数据的传递,并不对资源粘性100和200进行比较。(显然正常情况下资源粘性数字大的节点应该接管资源)。

  • 集群资源管理层:(Cluster Resource Manger Layer):

产生的集群事物进行收集,并且把收集的信息进行比较运算,然后决定资源运行在那个节点上。Crm需要在每个节点上面都运行,并且通过通信层通信。Crm通过dc来进行协调资源运行在那个节点上。Dc本身包括2个组件:集群策略引擎(Cluster policy engine),集群转移引擎(Cluster transition engine)。集群策略引擎负责对接受到的信息进行计算并且得出结果。集群转移引擎用通过策略引擎计算的结果指挥相关资源进行资源转移等操作。为了对每个节点的本地资源进行管理,crm通过lrm进行管理,lrm负责接受pe信息并且执行相关动作。

  • 集群代理层:(Resource agent Layer)

在CRM中的lrm中,lcrm是通过调用相关脚本来进行对资源进行操作的。脚本是有固定格式的,必须遵守LSB规则。在linux中/etc/init.d中的文件一般是遵循LSB规则的。在LSB脚本中必须传递start,stop,restart,status参数。我们通过参数返回的结果来判断资源是否正常运行。HA集群中还可以通过OCF格式的脚本进行对资源进行操作。在HA集群中我们把资源管理的脚本称做集群资源代理。

在HA集群中,每个层次是单独的。比如通信层的软件可以单独是一个软件,CRM层的软件可以是单独的软件。

1.3资源组RG(resource group )




    		    大话高可用集群之概念篇

图1.3.-1

在图1.3-1 lamp环境中我们把mysql,mount,httpd,ip设置为一个资源组。试想一下如果我们不设置资源组的时候,有可能出现资源转移时只转移某个单独的资源。例如主服务器的http服务down的时候,有可能备份服务器转移http服务资源,然而对于的挂载点,ip地址,数据库等资源并没有转移过来。造成lamp环境运行失败。如下图所示:




    		    大话高可用集群之概念篇

  • 多资源组实例图

  • 


    		    大话高可用集群之概念篇




    		    大话高可用集群之概念篇

1.4 资源约束

资源属性用来对资源进行约束,定义资源之间的倾向性。在图1.3-1中我们通过定义资源组的方式来保证lamp环境下的各个资源相互依赖。资源和节点之间的倾向性通过资源粘性来定义。资源与资源之间的关系通过资源约束来定义。通常有3种约束方法:排列约束、位置约束、顺序约束。位置约束:正值倾向于次,负数倾向于逃离次,例如在图1.3-1中档httpd服务down的时候,假如备份服务器的位置约束对于mysql,mount,ip等为正值的话则转移到备份服务器上。顺序约束:定义资源启动或关闭的顺序。例如在lamp中先启myql后启动httpd。先关闭httpd后关闭mysql。排列约束:用来定义资源是否可以运行在同一节点,正值可以在一起,负值不可以在一起。所有3重资源约束是通过正负整数值来决定的其中-inf表示 负无穷,inf表示正无穷。

1.5 脑裂与资源隔离:

在“双机热备”高可用(HA)系统中,当联系2个节点的“心跳线”断开时,本来为一整体、动作协调的HA系统,就分裂成为2个独立的个体。由于相互失去了 联系,都以为是对方出了故障,2个节点上的HA软件像“裂脑人”一样,“本能”地争抢“共享资源”、争起“应用服务”,就会发生严重后果:或者共享资源被 瓜分、2边“服务”都起不来了;或者2边“服务”都起来了,但同时读写“共享存储”,导致数据损坏(常见如数据库轮询着的联机日志出错)。

实际上脑裂正常情况下是无法见到的,现代集群都应该有保护机制来避免这种情况发生。例如RHCS引入的fence的概念。 具体情况是这样,例如2个节点集群,当心跳断开导致节点之间互相无法通信的时候,每个节点会尝试fence掉对方(确保对方释放掉文件系统资源)后再继续运行服务访问资源。这样,就可以确保只有一个节点可以访问资源而不会导致数据损坏。所以这个也是RHCS为什么必须有fence设备的原因。到底要不要fence,官方讲法是,如果你跑生产,要保证数据不受损坏,就必须有fence设备。

1)添加冗余的心跳线,例如双线条线。尽量减少“裂脑”发生机会。

2)通过资源隔离的方式。资源隔离的方式分2中级别:节点级别:STONITN设备。资源级别:fc san swith交换机可以实现资源级别的资源隔离。

本文出自 “虚心求教” 博客,请务必保留此出处http://nanwangting.blog.51cto.com/608135/1419498

更多相关文章
  • svchost.exe是什么进程?svchost.exe 是用来启动系统服务的,所以某个 svchost.exe 占用内存过大,可能就是它启动的那个服务占用内存过大,所以只要停止并禁用那个服务就行了.下面分享svchost.exe占用内存过大的解决办法 svchost.exe 是用来启动系统服务的, ...
  • 2015年3月18日)在加拿大温哥华开幕的Pwn2Own2015被称为史上最难黑客大赛,本届的挑战项目难度剧增,但却削减了奖金,以致于该赛事的常胜将军,著名黑客团队VUPEN也在看过比赛项目后宣布退出.   先说赛事的六大项目.Pwn2Own以Chrome.IE.Safari.Firefox等常见浏 ...
  • 本章实验测试环境说明如表13-1所示. 表13-1   测试环境 备 注 操作系统 Binwalk 2.0   文件系统提取工具 Ubuntu 12.04   调试器 IDA 6.1   利用代码解释器 Python 2.7     13.1 漏洞介绍 Linksys WRT54G是一款SOHO无线 ...
  • 最近在写一篇关于如何扩展 Visual Studio 编辑器的文章时,用到了 MEF,因此打算写一篇文章提一下这个技术点.本篇文章并不打算详细介绍 MEF,只是一个最简单的入门,相信您在阅读本篇文章后,可以迅速开发出一个可扩展的应用程序.   简 介 MEF(Managed Extensibilit ...
  • 在运行模拟器的时候.LogCat 输出很多Unexpected value from nativeGetEnabledTags: 0 提示,导致很多本来需要输出的信息被瞬间覆盖了,查询后得知是sdk的一个bug.解决方法:在 LogCat 左面有一个filter按钮,点开在by log messag ...
  • 上海警方3日披露,成功破获诈骗网络汽车租赁公司汽车系列案件,捣毁以韩某为首的诈骗团伙,抓获8名涉案犯罪嫌疑人,追缴12辆涉案车辆,挽回经济损失300余万元.警方披露,2014年12月18日,某租车公司工作人员带了一名青年男子周某到浦东警方报案.这名工作人员称,周某通过手机APP软件租赁过该公司1辆奔 ...
一周排行
  • 我们先来看一个瀑布图来确定一个页面性能问题是由哪些项造成的.chorome自带开发人员工具   图中每一行表示一个http请求,每一个请求都有一条时间线,用于标识这个请求所花费的时间.如果将鼠标放到某一条时间线上,可 ...
  • 名称 file - 确定文件类型   总览 file [ -bcnsvzL ] [ -f 命名文件 ] [ -m 幻数文件 ] file ...   描述 本手册页说明了3.27版本 file 命令的使用. File ...
  • Evernote中国区现在只有7名员工,他们除了马不停蹄的拓展市场外,还在做开放API的准备工作.Evernot中国区总经理谷懿近日在一线下沙龙中透露,Evernote将很快在国内开放API."时间点目前还 ...
  • 最近居然也痴迷起了HTML5来,虽然在目前的项目中很少用到HTML5(原因是我们得考虑客户使用的是IE6.7.8的浏览器兼容性问题).这里所写纯粹是个人兴趣.           一.什么是Canvas标签?Canv ...
  • 根据工信部网站日前公布的信息显示,设备型号为A1530的苹果国行iPhone5s手机已经在今年9月2日更换了入网许可证,新证中添加了对LTE FDD网络制式的支持,这意味着用户不久后将可以名正言顺用上联通FDD 4G ...
  • ------------------------------------------------------------------------- SED单行脚本快速参考(Unix 流编辑器) 2005年12月29日 ...
  •  Every couple of weeks somebody will come running to me: "Swizec, Swizec, I did everything right, but t ...
  • 一.基础知识 应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的.大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中.这样当该应用被卸载后,这些数据还保 ...
  •   1. Observer模式的本质问题在于其面向对象的设计.换句话说,正是因为面向对象造成了Observer的缺点.Observer是基类,这带来了非常强的耦合,强度仅次于友元.这种耦合不仅限制了成员函数的名字,参 ...
  •  GetSafeHwnd()和GetSafeHandle()的主要区别: 1.使用者不同: (1)窗体使用: GetSafeHwnd()用于获取窗体的安全句柄(即HWND),有了HWND我们就可以方便的对HWND ...