容错之错

日期: 2008-04-14 作者:宋家雨 来源:TechTarget中国

  1980年,当Bill Fost先生苦思冥想在为新公司取个什么名字的时候,无意间看到了飞机外层层叠叠的云层,由此“Stratus”诞生了。但是Bill Fost没有想到,1990当他们注册北京办事处的时候,竟然可以使用“美国容错计算机公司”,这种用技术术语命名公司的现象,此后再也没有出现过。不知道国内有多少用户知道 “美国容错计算机公司”,进而了解容错技术,但是相信,这几年数量有限与很多技术领先型公司相类似,“酒香不怕巷子深”是其风格,市场上的低调在一定程度上制约了发展。


  容错的含义比较宽泛,这种不确定性容易引发歧义,增加理解上的难度。从概念上来说,容错是指服务器对于错误的容纳能力,是应用过程中对于服务器稳定性追求的一个目标。为了这样一个目标,有几种技术上的实现方法,目前国内谈论最多的是三种:服务器群集技术、双机冗余服务器方案和单机容错技术。


  实际上,服务器群集和双机冗余的技术比较类似,双机冗余是最简单的集群,是其一个特例,也可以把服务器集群技术视为双机冗余的延伸,可以理解为一种多机容错的方案。在一般的讨论之中,集群技术是为了解决计算性能不足的问题,通过多台服务器的集群计算,为高性能计算领域应用提供所需要的高性能。采用集群技术,通过多台服务器之间的负载均衡,可以解决服务器单点故障所引发的系统不稳定,提高系统的可靠性,因此集群具有更好的容错能力,但是在实际的应用中,集群技术多用于高性能计算。


  单机容错技术以Stratus公司的ftServer、惠普公司的NonStop服务器和NEC公司的Express5800/ft为代表。这种技术具有比双机冗余方案更高的容错能力。据记者查阅有关技术资料,双机冗余系统的可靠性可以达到99.9%,也就是3个9的能力,而Stratus公司的方案,其可靠性可以达到5个9。 在记者的采访中,惠普公司企业服务器产品经理陈武胜表示,其NonStop服务器作为目前惠普公司最高档的服务器,其可靠性可以达到7个9的水平。在记者看来,双机冗余与单机容错有很多的差异,绝不是3个9和5个9的区别。为了了解这些区别,记者分别采访了有关软硬件厂商,并结合实际的应用案例,帮助读者了解有关容错服务器的技术。


  产品技术篇之一


  “没有错误”的容错服务器技术


  单机容错技术是我们为了区别双机冗余技术对Stratus等容错服务器的称谓,但是在我的采访中,有关服务器厂商都不愿意采用这个称谓,他们更愿意采用容错服务器,因为单机只是一个表现形式,并不能准确表达其技术的特征。IDC资询师将这种技术称之为“没有错误”的容错服务器技术。


  容错与同步技术


  美国容错公司技术顾问高峰在接受记者采访时表示,容错服务器的技术并不难理解,计算机自诞生之日起,其系统结构并没有发生任何改变,仍然是冯诺依曼教授所提出的由运算器(CA)、控制器(CC)、存储器M和输入/输出装置所组成,而容错服务器的思路就是把所有这些部件全部采用冗余硬件设计。两个部件共运行同一个任务,以此来提高系统的运行可靠性。


  这种思路和方法在其他服务器产品中也有采用,据富士通公司首席技术官周一平介绍,富士通PRIMEQUEST服务器就采用了这种方法,该服务器采用英特尔安腾2处理器,富士通把很多大型机和Unix小型机的技术进行了迁移。例如把处理器、内存和PCI总线进行冗余设计,使系统具有高的可靠性。


  高峰表示,这种冗余硬件的设计并不难理解,但是最为困难的是如何保证计算和数据在硬件中的同步,这是Stratus核心的专利技术。在Stratus容错服务器中,它被称为同步(Lockstep)技术,在惠普的NonStop服务器中被称为锁步技术。


  安腾还是x86


  容错服务器另外一个需要关注的焦点是处理器。据陈武胜介绍,目前惠普的NonStop服务器分为两个系列:NonStop S和Integrity NonStop,其产品的差别在于所采用处理器芯片不同,NonStop S所采用的是MIPS芯片,是收购原美国天腾公司的产品,而Integrity NonStop所采用的是英特尔安腾2处理器。


  陈武胜表示,除了处理器的差别之外,新的Integrity NonStop具有很多新的设计,例如采用3部件的冗余设计,此外系统总线也有很大改进,因此其可靠性才能够达到7个9的水平。他指出,目前安腾2芯片已经内置了Lockstep同步技术,在芯片级提供了系统容错设计的能力。而此前处理器芯片不具备这样的能力,就需要通过外部结构设计来解决同步的问题。据了解,Integrity NonStop可以进一步分为NS1000、NS14000和NS16000,分为入门级、中高端和最高端服务器产品,其中最高端的NS16000服务器,其每个服务器的节点采用2~16个安腾2处理器。这些处理器节点通过惠普公司独特的ServerNet进行连接,可以提供多达4080个处理器计算能力。


  在Stratus公司的产品中,更加强调容错的能力。据高峰介绍,ftServer已经是该公司第四代产品系列,此前先后经历过Motorola M68000、Intel I860芯片、HP PARISC等不同处理器,以及VOS专有操作系统等阶段。目前第四代产品采用基于x86结构的Intel 处理器,其W系列最高的6600可以实现基于容错的4路双核处理器的计算。高峰表示,Stratus将会在今年发布基于8路的容错服务器产品。


  高峰表示,容错服务器选择哪种处理器的关键还是要根据应用的需求。安腾处理器采用了全新的64位计算架构,需要配合主机级的NonStop操作系统。与之相比,x86架构应用比较普遍,用户软件无须要进行二次开发。Stratus公司之所以采用Linux、Windows等通用的平台代替专用的VOS操作系统,就是为了降低容错服务器的应用成本。


  “无解”的软件故障


  容错服务器通过硬件部件的冗余设计,以及同步技术的保证,可以有效解决因为硬件原因所造成的系统故障,但是并不能解决软件故障。


  高峰表示,虽然在理论上存在着两个相同部件同时损坏的情况,但是随着硬件水平的提高,这种概率是比较低的。高峰表示,容错硬件的设计一方面可以防止硬件的单点故障,同时也可以防止硬件所造成的计算错误,并对此做出校正。从技术的角度来看,所有软件在硬件看来就是0和1,但是在某些情况下,硬件会产生不稳定,造成非0非1的中间状态,就会产生计算的错误,这种错误并不一定导致系统宕机,其错误不易被察觉。


  在容错服务器中,由于采用冗余部件同时运行同一应用任务,这样当两个系统产生不一样计算结果的时候,系统就会察觉,并通过技术手段对于计算错误进行校验,从而提高应用的准确性。但是如果是软件本身的问题,无论是操作系统还是应用软件,那么容错服务器没有办法对于这种错误进行修整。因为对于容错服务器而言,硬件所能够辨别的就是0和1,至于0和1所蕴含的软件逻辑,硬件无从辨别。高峰表示,软件的问题只能够通过软件的方法加以解决。有些用户对此存在一些误解,认为容错服务器不会宕机,实际上容错服务器只能够解决硬件的故障。


  关于容错服务器应用,记者也采访了NEC技术经理黄后生,他表示,选择容错服务器的意义在于为关键业务应用提供可靠的硬件平台。黄后生表示,用户为追求系统可靠性,往往会选择小型机,但这会增加成本,同时也对企业的技术人员提出了比较高的要求。但是选择容错服务器没有这样的要求,可以使用他们比较熟悉的Windows平台或者Linux平台。


  黄后生表示,目前NEC的Express5800/ft服务器在原理上与Stratus非常类似,两家公司在技术上有着战略合作,共同开发有关容错服务器的相关技术。目前NEC是Stratus公司的投资股东,持有Stratus公司部分股票。在全球服务器市场上,NEC位列前5强,具有丰富应用和推广的经验,以及雄厚的市场推广能力。在技术支持和服务方面,NEC已经建立了非常好的渠道,这些优势都有助于容错服务器在中国的应用和推广。


  产品技术篇之二


  基于“心跳”的双机冗余服务器方案


  相对于容错服务器,双机冗余服务器解决方案比较简单,目前服务器厂商都可以提供。它所采用的是两台配置完全一样的服务器系统,当一台机器出现故障的时候,另外一台机器接替其工作,保证系统的稳定工作。


  双机热备的两种模式


  双机热备有两种实现模式,一种是比较标准的,两台服务器通过一个共享的存储设备(磁盘阵列或存储区域网SAN),并且安装双机软件,实现双机热备,称为共享方式。另一种方式是通过纯软件的方式,一般称为纯软件方式或镜像方式(Mirror)。


  基于存储共享的双机热备是最标准的方案。对于这种方式,采用两台或者多台服务器,使用共享存储设备,两台服务器之间可以采用互备、主从、并行等不同的工作方式。在工作过程中,两台服务器将以一个虚拟的IP地址对外提供服务,依工作方式的不同,其服务请求将发送给其中一台服务器承担。当一台服务器出现故障时,另一台服务器根据心跳侦测的情况做出判断,并进行切换,接管服务。对于用户而言,这一过程是全自动的。这种模式好处在于两台服务器所使用数据相同,但是也有用户担心,共享存储设备会成为系统单一故障点。为此,存储厂商也针对存储设备推出了双冗余的方案。


  纯软件双机冗余方案是一个更加经济的方案,其没有集中式存储设备,其数据保存在服务器各自的硬盘上,通过支持镜像的双机软件,将数据实时复制到另一台服务器上。纯软件方案其数据同步运行在两台服务器上,如果一台服务器出现故障,可以及时切换到另一台服务器上。采用纯软件方式避免了磁盘阵列的单点故障;节约投资,不需购买昂贵的磁盘阵列;不受距离的限制;可以灵活地部署服务器。


  软件水平是关键


  无论采用哪一个厂商的双机冗余服务器解决方案,所采用的双机或集群软件是其中的关键,软件定了,方案的容错水平也就定了。


  目前市场上在Windows平台下比较常见的双机软件有DataWare、Lander Cluster和LifeKeeper;在Linux平台下有DataWare、ROSE HA、PCL HA、 LifeKeeper和Lander Cluster等。此外,在SCO Unix和Sun Solaris平台下常用的软件有Lander Cluster和PCL HA。


  为了对这些软件的性能有所了解,记者采访了DataWare的生产厂商,来自台湾的ProWere公司,其在北京的办事处豪威科技首席代表白广凌和蔡雪涛工程师介绍了有关情况。白广凌表示这些软件在功能上都差不多,如自动侦测功能。它在两台服务器之间提供异常情况互相监控,如果其中一台主机发生故障,则故障机制立刻执行,如果不能在故障主机解决,所有资源将自动切换到另一台主机。双机软件一般提供两种模式:Active / Standby 模式和Active / Active 模式,前者一台作业主机承担所有的工作负载,另一台主机处于备援状态;而后者则是两台主机共同分担工作负载,如果其中一台主机故障,另一台主机将自动承担所有的工作负载。


  蔡雪涛指出,双机软件的关键在于切换,最为忌讳的情况就是误切换。如果双机都认为对方发生了故障,就会产生两台主机相互争夺资源的情况,就将导致严重的后果。蔡雪涛表示,双机冗余服务器解决方案不能够替代数据备份,以纯软件方式为例,如果数据有错误,那么其另一台机器上的镜像肯定也是错误的,因此双机冗余服务器解决方案不能解决类似的错误。采用数据集中存储的方式,无论是NAS还是SAN,两台服务器所使用的是同一个数据。但是存储设备存在单一故障的风险,为此,ProWere推出了针对NAS存储的双冗余解决方案。


  蔡雪涛表示,不同的双机软件在细节上还是有一些差异,最主要的是故障侦测的机制。两台服务器之间一般通过“心跳”线进行侦测,“心跳”线的连接有串口、SCSI和网络连接三种方式。在一般情况下,应该至少采用两种连接方式,以增加侦测的准确性。


  目前双机应用的范围比较广泛,无论在银行、电信、政府、电力、石油、新闻出版、生产制造等行业,凡涉及关键业务应用的领域,双机冗余都是一个重要的解决方案。但是双机冗余服务器方案同样不能够解决软件的故障。蔡雪涛指出,以常见的数据库故障为例,有些时候数据库莫名其妙打不开了,在这种情况下,只有重新安装数据库,没有其他好的办法。蔡雪涛提醒用户,双机冗余不能够替代备份,数据备份和灾难恢复系统是应对故障最好的办法。


  案例应用篇


  电力SIS系统的选择


  厂级监控信息系统(SIS系统)是目前电厂信息化建设的重要系统。据北京京能热电股份有限公司(京能热电)副总工程师李东介绍,SIS位于电厂管理信息(MIS)系统与各种分散控制(DCS)系统之上,以经济运行和提高发电企业整体效益为目的,采用先进、适用、有效的专业计算方法,实现整个电厂范围内的信息共享,对厂级生产过程进行实时信息监控和调度,提高机组运行的可靠性。


  SIS系统为管理层决策提供了真实、可靠的实时运行数据。与此同时,与职工息息相关的绩效考核等工作,也需要SIS系统提供支持。据了解,京能热电从去年下半年开始实施SIS系统,其首要的任务就是选择硬件支撑平台。李东表示,SIS系统涉及大量复杂过程的实时信息数据操作,因此硬件平台应该选用高性能、高可用性、升级便捷和维护方便的企业级数据库服务器,同时应该兼顾开放式的体系结构和分布式系统设计。


  经过对现有硬件平台的分析比较,京能热电最终选择了Stratus ftServer W 系列 3300 服务器。据李东介绍,该服务器采用部件级冗余的工业标准容错服务器,其可靠性设计达到99.999%以上,其中电源、CPU、内存、I/O控制组件均采用冗余配置。通过该服务器的CPU/MEM集成锁步(Lock-Step)技术,其冗余部件在同一时钟周期做同样的指令,动态数据得到保护。


  与双机冗余服务器方案进行比较,京能热电方面认为,容错服务器具有更高的可靠性和系统可用性,在此,李东特别提到了I/O部件的冗余,他们也配对工作,能够在发生故障时进行接管,切换时间在毫秒级。切换过程不需要使用任何软件和编写脚本程序。


  从配置来看,该服务器采用双路Intel Xeon 3.2GHz 处理器,二级缓存为1MB,其内存配置为2GB DDR。该服务器采用Windows Server 2003简体中文企业版操作系统,配置相应的服务器管理软件,在硬盘方面采用工业标准热插拔内置硬盘,并作RAID 1保护,实际数据容量大于300GB,最大可达到480GB。该服务器集成一对双口10/100/1000自适应RJ45以太网卡,四个网口可两两配对,互为冗余,每对网口可配置成同一IP地址,随时进行故障切换。据了解,该服务器所有部件均可以模块化方式进行热插拔,即CPU、内存、电源、风扇、硬盘、网卡、所有I/O设备、甚至主机板出现故障时,均可不停机进行更换,能把硬件故障导致的平均非计划停机时间控制在每年5分钟之内。


  李东表示,之所以选用Stratus公司的ftServer系列产品,有一个非常重要的原因,即目前国内市场上所采用的SIS系统软件基本上基于Windows平台,因此基于x86平台的ftServer就成为当然之选。如果是选用惠普公司的Integrity NonStop服务器,其应用软件运行在NonStop OS之上,有别于Windows操作系统,将涉及到应用软件的修改。李东也就双机冗余方案进行了对比,经过他们测算,如果采用双机冗余方案,需要购买两套操作系统、两套数据库产品,那么其总体的投资与容错服务器方案相当,而系统的可用性方面,容错服务器显然更具有优势。对此, Stratus公司高峰表示,目前国内的采购,软件和硬件大多分开招标,这非常不利于用户计算总体成本,对于容错服务器产品销售也有一定的影响。


  李东表示,目前国内行业用户对于软件的正版化问题已经足够重视,这非常有利于容错服务器的应用推广,从他们的应用实践看,容错服务器是一个不错的选择。


  编看编想


  微软最应该使用容错服务器


  在产品的表达上有很多的遗憾,例如视讯会议的厂商,后悔把他们的产品称为会议,因为这种产品并不是仅仅解决一个开会的问题。对此,Polycom中国区总经理李刚表示,如果当初把“视讯会议”译为“视频通信”,那么他们现在的工作会好做许多。类似的还有VoIP,谈论VoIP产品,一定要说明你是什么VoIP。因为VoIP有很多种,小到电话卡,大到IP Centrix,有IP PBX,也有纯IP的VoIP解决方案,这种概念的不确定性,增加了事物的复杂性,给应用推广带来了难题。


  对于容错服务器而言,我想Stratus公司的创始人Bill Fost先生也一定在后悔把他们的产品称为容错服务器,在这个世界上有一种双机冗余服务器解决方案也可以称为容错服务器。不知道Bill Fost是否知道中国有一个李逵,还有一个人叫李鬼,如果单纯从外表看,相信Bill Fost一定分不清,哪个是李逵?哪个是李鬼?我想,对于大多数用户而言,一定也说不清楚容错服务器和双机冗余有多大的区别。


  如果我是Bill Fost,我就会把服务器送给微软,让他们开发人员用容错服务器检验软件,很简单,如果服务器宕机了,没有什么说不清楚的,一定是软件的错误。其实这一点,比尔·盖茨自己也十分清楚,没有没有错误的软件,在软件工程开发中有一个关门的时间,时间一过,任凭有天大的问题也不可进行修改了,要修改可以,发补丁包好了。不如此,无法保证软件的进度。但是软件厂商之所以敢把有问题的软件投放市场,还在于他们有一个挡箭牌,即重启一下机器,问题就会神秘消失了,谁敢说一定是软件的问题?但是,使用容错服务器,这几乎是板上钉钉的事情!


  话可以这么说,但我毕竟是一个编辑,不能太偏颇。实际上,双机冗余也是一个不错的选择!相对那些非关键的业务,但也是比较重要的业务而言,双机冗余有自己的适用范围。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐

  • 惠普宣布NonStop服务器全面进军x86架构

    惠普日前宣布计划将NonStop服务器容错技术移植到x86架构当中,这不仅会降低NonStop产品线的价格标签,还将帮助惠普进一步远离英特尔对安腾平台造成的负面影响。

  • 服务器容错技术深度解析

    服务器容错技术分三种:服务器集群、双机热备份和单机容错技术,并由低到高的级别递进,即单机容错技术级别最高。本文重点解析单机和双机(冗余)容错技术。

  • 关键业务中断的反思:有容错还要灾备吗?

    有没有更好的方法应对业务系统故障?采用容错系统将是一个非常好的办法。但为了进一步保障业务不中断,灾备也是必不可少的。

  • 如何创建和操作服务器群集

    服务器群集可以减少单点故障数量,并且实现了群集化资源的高可用性。本文简要介绍了群集创建和群集操作中的节点行为。