扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:林凡 来源:IBMDW 2007年8月26日
关键字: 集群
前面讲的是对于集群几类主流的归类方法。可是当你考虑将你的集群作成什么样的系统,让它具备什么功能,能够满足什么需求的时候,这些归类方法却不是那么重要。在使用或者构造一个集群之前,首先根据应用的需求,要重点分析以下的几个主要问题,这些问题并非互相独立,而是彼此互相影响的综合因素。
可用性支持
即我们通常所说的HA(High Availability)。集群通过冗余的处理器、存储器、磁盘、I/O设备、网络及操作系统映像等等,提供一种保持成本有效的高可用性。为了挖掘这些多余资源的潜力,需要使用一些技术来平滑可用性。
从关键性事务/任务计算的角度看,例如商用服务器或者重要的数据服务器,集群是一组可以作为单一系统管理的独立服务器配置,它能够共享名字空间,并且设计成可以容忍结点失效以及支持用户透明访问的计算资源,其重点不是性能而是高可用性。
对于HA在不同的应用领域有不同的作法。在OLTP(联机事务处理)中,通常使用联机热备份的方式来解决容错问题。这是冗余的一种体现,概念上也非常简单:在主系统中的软硬件失效时,重要的应用程序和正在处理的任务可以转移到"从"服务器上,这样可以避免故障并保证服务器整体可用性。该过程也叫做failover(故障屏蔽),虽然会暂时降低服务器的性能,但充分保证了关键任务的正常。这种冗余技术与完全覆盖错误部件的组件级冗余技术不同,它采用的是面向集群的系统级冗余,而组件级冗余为了保证连续服务,往往采用电气手段进行硬件上的替换操作。
系统级容错的难点在与进程与事务迁移,要保证在线事务也能够实时容错,在处理联机事务的这一层次上,就有必要进行进程或者事务迁移的工作。在数据库层、OS层或者是中间件层,都有不同的厂商针对性的产品来实现。仅我所知的Oracle的数据库产品,IBM的操作系统和中间件产品或者是其他第三方的组件,都有对HA不同程度的实现。
在设计健壮、高可用性的系统时,以下3项要同时考虑:可靠性、可用性及可维护性(简称RAS)。其中可用性标准最令人感兴趣,它结合了可靠性和可维护性两个概念:
系统的可靠性可表示为发生故障的平均时间MTTF(Mean Time to Failure),即在系统(或系统的一个部件)发生故障前正常运行的平均时间。可维护性指标为直到修复的平均时间MTTR(Mean Time to Repair),即用于修复系统和在修复后将它恢复到工作状态所用的平均时间。系统的可用性定义为:
可用性=MTTF / (MTTF+MTTR)
提高系统的可用性基本上有两种方法:增加MTTF或减少MTTR。增加MTTF要求增加系统的可靠性。计算机工业界千方百计的制造可靠性系统,如今工作站的MTTF范围从几百小时到几千小时。然而,再进一步提高MTTF非常难且花费很大。
集群可以通过减少系统的MTTR以获得可用性,多结点集群的MTTF低于一个工作站,因此集群可靠性低,比工作站发生故障的可能性要大。然而,如果能迅速处理这些故障就可提高更高的可用性。高可用就是能够使集群发生故障是能够快速、平滑切换,保证系统连续运行的一种技术。
单一系统映像
SSI是集群系统必备的能力。并不是指在一个SMP或者一个工作站中,仅有唯一的一份系统映像驻留在内存,而是指从使用者的感觉上看,是一个独立的单一的计算机系统。那么,这也就牵涉到使用者是谁,使用目的和需求是什么,从哪一个层面上去使用该系统等问题。SSI的基本特征大致有:
我们不难发现,上述的两点关于HA和SSI的简单叙述其实隐含着一些线索,将这两个看似不相干的特性联系在一起。如果没有一定的SSI能力,集群也就不称之为集群了。即使是最简单的联机热备份系统,不管是在正常状态还是进行故障接管的时候,所体现的系统"外形"(即从外部用户看来),既是单一的系统(虽然有两台机器),又能提供透明的平滑的服务。没有在OS或者更高层实现SSI的资源统一,是无法做到这种的高可用能力的。可以说,SSI是集群技术的基石,不仅为高可用的需要所服务,也为进一步的性能提高工作,因此,在设计集群的时候,首先要先进行的就是SSI的考虑。
作业管理
作业管理主要涉及任务派发、负载均衡和并行处理等功能。与传统工作站或PC结点不高的利用率相比,集群要达到系统的高利用率,作业管理软件必须提供这些功能功能。那么,在作业管理具体实现中,下面这些概念就显得非常重要了:什么是资源,什么是作业,作业有几种,如何衡量负载(Load),作业的运行包含哪些状态,每个状态又包含那些元素,等等等等,这一切都需要在集群系统中定义并加以体现。作业管理系统设计的好坏,直接关系到集群性能的高低。设计优良的作业管理和调度系统,其可扩展性要好于设计一般的集群,其影响性能的作用远远高于其他几类因素。我们将在随后的篇章里详细分析。
高效通讯
为集群,特别是松耦合的工作站集群建立一个高效的通信子系统比为MPP这样的紧耦合系统建立高效通信子系统更有挑战性。
追求高效往往和集群的可扩展性相抵触。想要高可扩展的集群系统,就要使用一些低效率的商品化网络,更通用的硬件平台,流行的操作系统。在保障了集群的可扩充能力的同时,不可避免的降低了优化性能的可能,采用Open Source的操作系统或许可以解决一些问题。
理想的集群模型
和OSI标准互联参考模型一样,理想的集群只在概念中存在,因为有太多的制约因素左右,实现起来就不太可能了。但不妨把这种理想结构作为研究集群的一种理论基础,有助于对现有集群的分析,和设计时的借鉴。
从图上我们可以看出,理想的集群支持各类的结点,可用的有工作站、PC、SMP服务器、甚至超级计算机,结点的操作系统是多用户、多任务和多线程的系统。结点彼此可以是同构甚至是异构的。
结点间由一个或多个高速商品化网络互连。这些网络使用标准的通信协议,传输速度应该比目前使用在以太网上的TCP/IP高两个数量级。商品化网络不但沟通了集群节点,完成必要的通信功能。而且也为实现SAN(存储区域网络)、一致的分布式I/O、一致的内存访问以及其他集群硬件资源的统一访问打下基础。其实,网络仅仅是物理的实现,关于资源的控制却还需借助操作系统来进行。
每个结点的网络接口电路与结点的标准I/O总线(如PCI)相连,所有的驱动模块都是可热拔插,可动态加载的。当处理机或操作系统改变时,只需修改驱动软件并重新加载,不必修改网络或网络接口,也不必重新启动系统。
在结点工作平台上有一组与工作平台相独立的软件子系统,成为集群操作系统,提供操作系统的最基本的核心功能。操作系统之上是特殊的扩展或者中间件层,用于为HA和SSI提供必要的支持。
中间件层之上便是提供高可用性服务的可用性子系统。还有一个单一系统映像层能提供单一的用户入口点、单一的文件层次结构、单一的控制点以及高效的作业管理系统。可以通过编译器或运行时间库技术帮助实现单一存储器,但集群不一定需要支持单一进程空间。
最上层便是集群的管理、控制和应用扩展实现层,用户的入口,管理员的控制,作业的调度都在这一层具体实现。具体可以通过SSI提供的标准API或者动态运行库实现。此外,其他一些扩展子系统也在该层实现,比如分布式的OLTP(联机事务处理)数据库。
在了解了集群的分布式体系结构、概念、可扩展性以及分类方式和几大要素后,相信大家对集群的基本理念已经有了一个初步的认识。集群的相关技术是一个非常复杂的体系,其中任何一点都可以足以讨论出几本书来。但我的初衷并非如此,这三篇文章仅作抛砖引玉,为随后的个案分析作一点铺垫。以后的内容将重点集中在几类主流的集群上,希望通过今后的深入分析,使大家能够更深入了解集群在现实中如何实现和应用。
林凡,现于厦门大学从事Linux相关的科研工作。于集群技术由很大的兴趣,希望能与志同道合的朋友一起交流。您可以通过电子邮件 iamafan@21cn.com和他联系。 |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。