Chinaunix首页 | 论坛 | 博客
  • 博客访问: 664324
  • 博文数量: 52
  • 博客积分: 7065
  • 博客等级: 少将
  • 技术积分: 2361
  • 用 户 组: 普通用户
  • 注册时间: 2004-10-03 16:24
文章分类

全部博文(52)

文章存档

2021年(8)

2019年(2)

2018年(14)

2011年(1)

2010年(3)

2009年(4)

2008年(20)

分类: LINUX

2008-11-13 13:12:58

  下面针对高可用性集群,介绍一下它的工作原理。  在微软的MSCS(Microsoft Cluster Server)术语中,所有的应用程序、数据文件、磁盘、网络IP地址等都被称为
资源,一些资源可以组成一个资源组,一个资源组存在于一个节点上,但同时只能在一个节点上,它是MSCS可以进行故障切换(FailOver)的最小单元。  在MSCS中,所有的资源都处于资源监视器的监视之下,资源监视器通过资 源动态链接库文件与资源进行通信,这些资源动态链接库会侦测对应资源的状态,并通知资源监视器,之后,监视器再把信息提供给集群服务(Cluster Service),缺省情况下,集群服务会启动一个资源监视器来监视节点中的全部资源。MSCS用依赖性来定义不同资源彼此之间的关系,MSCS会根据资源间的相互依赖关系来决定把这些资源变为在线或者是离线的顺序。举一个WEB服务器文件共享的例子,文件共享的资源需要硬盘驱动器来存储数据,把这些有关系的资源一起放在MSCS组中,要实现共享,就必须先把硬盘准备好。同时,为了完成文件共享,我们还需要准备好网络名称以及IP地址。

 
  从上图可以看出,文件共享资源依赖于硬盘资源,网络名称资源依赖于IP地址资源,而对应的WEB服务刚依赖于文件共享和网络名称。
  资源的存在可以分为五种状态
  1、Offline,资源不能被别的资源或者客户机使用
  2、Offline Pending,资源正处于Offline的过程中
  3、Online,资源处于可用的状态
  4、Online Pending,资源正处于Online的过程中
  5、Failed,资源出现了MSCS无法解决的问题
  前面已经提到,MSCS可以从一个节点故障切换到另一个节点的最小单元是资源组。被定义好的相关的资源放在同一个组中,并建立对应的依赖关系。以下图为例,如果节点A中的资源组1要移到节点B上的话,资源组1中的资源(资源A,资源B,资源C)也必须从节点A移到节点B才行。


  在MSCS的资源中,有一个非常重要的资源,Quorum,它是一个可以被两个节点访问的物理硬盘,用来保存集群的信息。这些信息是用来维护集群的完整性以及使节点保持同步,特别是当节点不能与另一个节点通信的时候。Quorum盘在某一时刻只能被一个节点所拥有,并用来决定由哪个节点来拥有集群的所有资源。Quorum必须位于共享的磁盘子系统中,一般都是使用外接的磁盘柜。一般情况下,不建议把应用
程序和数据保存到包含Quorum的硬盘上。
故障切换(Failover)是指把出现故障的节点上的资源重新定位到另一个可用的节点上。负责监视资源的资源监视器一旦发现资源出现故障,它就会通知集群服务,集群服务会根据事前定义好的策略触发对应的事件。虽然发现的是个别资源的故障,但是,集群还是会把整个资源组进行故障切换。

  故障切换会在三种不同的情况下发生:人工(一般是因为管理员的请求),自动,或者在特定的时间(由集群管理软件设定)。自动故障切换又包含了三个阶段:1、故障发现。2、资源重新定位。3、重新启动应用程序(一般是故障切换过程中最耗费时间的)。当达到资源组的故障切换阀值时,自动的故障切换才会发生,阀值是可以设定的,一般由管理员来设定。
故障恢复(Failback)是一种故障切换的特例,是指发生故障切换之后,把部分或者全部资源组移回它们首选的节点的过程。首选的节点,就是指集群中指定的运行资源组的道选的节点,如果是多个节点的高可用性方案,就会有多个首选的节点。当首选的节点出现故障后,对应的资源组就切换到另外的可用节点上,当出现故障的节点恢复正常后,资源组可以自动的切换回首选节点。如果没有定义首选节点,资源组就不会自动切换回来。
  要检查资源是不是可用,资源监视器会向对应的动态链接库发送状态信息的请求,一般会有两种级别的检查,LooksAlive和IsAlive。LooksAlive级别的检查相对比较简单,每隔一段时间(相对比较短的时间,缺省是5秒),资源监视器会进行一次LooksAlive级别的检查,如果资源没有响应,监视器会向集群服务报告。IsAlive级别的检查是非常完整的检查,它会彻底检查资源是不是工作正常,IsAlive检查的时间间隔比LooksAlive要长,缺省是1分钟。
结合上面提到的各个要素,高可用性就是通过下面的过程来实现的:
  首先,资源监视器根据设定的时间间隔对资源进行LookAlive和IsAlive两种级别的检查,一旦发现某一个资源不可用,就会试图重新启动该资源。根据阀值的设定,如果在某一时间段内,资源不可用的情况达到了设定的阀值时,就会发生故障切换。经过故障切换的过程,对应的资源组在另外一个节点上重新启动了,继续为客户机提供服务,对客户来说,工作没有影响,这就完成了一次故障切换。当出现故障的节点恢复正常以后,如果事先对该资源组设定了首选节点,就会把该资源组移回该首选节点。
高性能计算技术
  HPC: 并行计算工作原理
  要实现并行计算,您需要:
  1.        支持并行运算的硬件架构;
  2.        支持并行计算的应用程序;
  3.        使应用能够并行执行的软件工具,如编译器,API等等。
下面我们就这三个方面分别介绍它们的分类和作用。
一、并行计算硬件架构
  1、 计算方式的分类
  在这里我们使用历史"悠久"的Flynn分类法将计算方式分为以下四种:
  •        SISD(单指令流单数据流):传统的计算机只有一块CPU,因此准许一条指令流顺序执行。目前许多大型主机有一块以上的CPU,但各CPU执行的指令流互不相关,因此它们仍被看作是SISD机器,不过是很多运行在不同数据空间上的SISD的组合。很多HP,DEC和SUN的工作站属于这种类型。并行计算机不应采用这种计算方式。
  •        SIMD(单指令流多数据流):单个指令流对于多个数据流进行操作。这种方式可以形象化为多台计算机在中央调度处理器的协调下处理各自的数据。从逻辑上看,此时指令全部来自于中央调度器,尽管它们可以执行在不同的硬件设备(CPU)上。
  •        MISD(多指令流单数据流):多个指令流共同操作同一条数据流。到目前为止尚未发明这样的系统。
  •        MIMD(多指令流多数据流):这种系统并行的在不同数据上执行不同的指令流,这种类型与上面提到的多处理器SISD系统的本质区别在于不同处理器处理的数据是彼此相关的,它们实际上是在并行执行同一工作的不同部分。因此MIMD系统可以将一个主任务分解为众多子任务并行执行以缩短工作时间。这是目前大部分协同计算系统所采用的计算方式。

  2、 并行计算的相关架构
  为了使计算机系统能够实现并行处理,一系列的计算机架构相关的技术被开发出来。下面我们介绍一下其中的几种主要技术。
  ■ 处理器阵列(Array Processors):
  使用多个处理器组成阵列,在运行时由中央处理器广播指令流,各个其它处理器(又称处理元,processing element)执行指令流来处理本地内存中的数据。这种处理技术是被广泛采用的分布式内存技术的基础。


  ■ 共享内存(Shared Memory):

  处理器(PE)通过某种连接机制连接到一块巨大的共享内存上,使得任何处理器都能够访问任何一段内存。这种技术的优点是在并行环境中可以简化操作系统、编译器和应用程序的设计,缺点是当处理器数目增加时性能会迅速下降而成本会迅速上升。著名的Cray T90超级计算机使用的就是这种技术,目前很多的RISC工作站也使用这种技术。这种技术在很多新的并行计算实现上也被部分借鉴。

 ■ 分布式内存(Distributed Memory):
  每个处理器(PE)只访问自己的本地内存,处理器之间通过某种连接机制进行通讯,从而进行协同工作,成为一台并行计算机。这种技术的优点是可以很容易地组合很多标准计算机硬件成为一台超级计算机,与其它技术相比具有很高的性能价格比和可扩展性。缺点是应用程序中必须包含明确的信息传递调用以利用并行架构,而且编译器、调试器、并行化工具和性能监测工具的设计也会非常复杂。使用这种技术时,连接机制的选择至关重要。带宽和时延会直接影响整个系统的性能。这种技术在新兴的Linux HPC中广为采用。


 ■ 虚拟共享内存(Virtual Shared memory):
 这种技术将分布式内存虚拟为统一的内存空间,从而获得分布式内存和共享内存技术的所有优点。但是由于过多的内存访问调度,在目前的技术水平上性能非常差。目前的实际应用中不会采取这种技术。

阅读(2417) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~