2.2 可用性
自顶向下网络设计(第3版)
可用性是指网络可供用户使用的时间,它通常是网络设计客户一个非常关键的目标。可用性指标可以用每年、每月、每周、每天或每小时的网络运行时间与所对应时间段的全部时间之比来表达。例如,一个可提供每周7天、每天24h服务的网络,网络在一周168h之内运行了165h,其可用性是98.21%。
网络设计客户在日常工作中并不使用可用性这个词,他们往往认为这个词的含义不止于此。总体来说,可用性是指网络可持续运行的时间。可用性通常与可靠性联系在一起,但具有更明确的含义(正常运行时间的百分比)。可靠性与许多方面有关,包括精确性、故障率、稳定性、以及在两次故障之间正常运行的总时间。
注释:
有时,网络工程师会将容量(Capacity)看作可用性的一部分。这种想法的依据是,即使网络在第1层(物理层)是正常的,但从用户的角度出发,如果没有足够的容量传送用户流量,那么它仍然是不可用的。
例如,异步传送模式(ATM)有一个连接许可控制功能,能够控制进入ATM网络的信元数量。如果连接所需要的容量和服务质量不能满足的话,则不允许建立这个连接。这也可以被认为是一种可用性问题。不过,本书将容量归为性能目标中的一项内容。可用性只被当作网络正常运行时间的百分比目标。
可用性还与冗余有关,但冗余并不是网络目标。冗余是实现网络高可用性目标的一种解决方案。冗余是指为网络增加相同的连接或是设备来避免网络停止运行。冗余网络拓扑结构对许多网络设计客户变得越来越重要,这些客户通常希望能够在一个大的故障或灾难之后仍能保证商业运行的连续性。第5章将会更详细地讨论冗余网络拓扑结构的设计。
可用性同时也和网络可恢复性(Resiliency)有关,这个术语在网络领域也越来越流行。可恢复性的意思是指一个网络所能够承受的压力的多少,以及这个网络能以多快的速度从安全破坏、自然或非自然灾害、人为错误以及严重的软硬件错误所引起的问题上修复过来。一个具备优良可恢复能力的网络通常也具有更好的可用性。
2.2.1 灾难恢复
许多大型公共机构都认识到在诸如洪水、火灾、飓风以及地震等自然灾害发生后,保证商业和技术正常运转的必要性。一些大型企业(尤其是服务提供商)还必须规划如何从卫星通信故障中恢复电路。卫星故障可能是由陨石风暴、太空碎片碰撞、太阳黑子爆发或系统失效引起的。不幸的是,一些公共机构还发现,有必要确定从人为灾害中恢复的计划,如爆炸、恐怖袭击、骚乱或人质扣押等。灾难恢复计划包括将数据备份保存到一个或多个不太可能受灾害影响的地方,以及如果灾难影响了主要技术方案,切换到备份技术方案的过程。
虽然本书并没有涉及灾难恢复计划的所有细节,但本书中的概念已经可以运用于灾难恢复计划中了。毫无疑问,自顶向下的方法正是我们所推崇的计划,它强调计划先于实现。计划过程的一个目标就是确定网络中的哪部分是关键的,应该进行备份。要明白哪些设备、网络链接、应用程序以及哪些人员是关键的,就要充分理解组织的商业目标。正如自顶向下网络设计一样,商业目标应该在选择技术和设备之前进行分析,这些技术和设备只是实现的一个部分。
注释:
不要低估充分的劳动力资源对于启动灾难修复计划的重要性。如果发生了灾难导致服务器和网络管理员被隔离这种严重的局面,你应该怎么做呢?这可能是一个在灾难到来之前提供从员工家里高速访问VPN以及在灾难袭击之前提供测试能力最合适的理由。
在灾难恢复计划方面的最重要的步骤之一就是测试。不仅技术必须进行测试,而且必须培训员工如何应付灾难的发生。如果人都不能生存,那么技术也就不能带来太多的帮助。此外,人们应该尝试使用灾难后冗余服务器或者冗余站点的配置进行工作。尽管员工会对过于频繁的紧急训练往往会产生反感情绪,但定期实践是一个当灾难来临时能实现商业继续运作的必要保障。培训要求员工要认真对待,并且应该涉及包括时间和强度在内的实战压力测试。
2.2.2 指定可用性要求
应鼓励你的客户精确地指定可用性要求。考虑一下99.70%正常运行时间与99.95%正常运行时间之间的区别。99.70%运行时间是指每周30min停机时间,这对许多客户来说是不可接受的。99.95%运行时间意味着每周5min停机时间,对某些类型的商业运行来说,这大概是可以接受的。可用性要求至少应指定到小数点的后两位数。
用正常运行时间百分比要求指定期限也是非常重要的。回到99.70%正常运行时间的例子,它相当于每周有30min的停机时间。如果在一周内的某个工作日中出现30min的停机时间就不会被客户接受。但每周六晚上停机30min进行定期维护是可以接受的。
客户不仅要用正常运行时间百分比要求来指定期限,还应具体到时间单位。可用性要求可以用每年、每月、每周、每日、每天或每小时的正常运行时间来表示。我们再次考虑正常运行时间百分比为99.70%的例子,这意味着每周30min的停机。这30min的停机时间可以是一次性的,如果停机不是发生在每周定期维护时间段内,这会引起较大麻烦;另外也可以是在一周时间内分布出现的。99.70%正常运行时间也意味着大约每小时网络停机10.70s。用户是否能够注意到10.70s的停机时间?当然某些用户会发现问题,不过对于一些应用来说,每小时10.70s停机是能够忍受的。可用性目标必须基于在网络设计第一个阶段就开始的分析商业目标过程中所得到的结论,那个阶段你就应该对客户的应用有所了解。
1.5个9的可用性
虽然这些例子引用了介于99.70%~99.95%的数字,但是很多公司需要更高的可用性,尤其是在关键的时间段里。一些客户可能坚持要求99.999%的网络正常运行时间,有时称之为5个9的可用性(Five Nines Availability)。有些客户的这种要求可能关系到对特别业务的处理过程或时间段。例如,有些要求可能涉及按月封存的财务记录,或者一个通过目录和网页订单进行节日礼物销售的公司假日旺季。另一方面,一些设计客户可能需要,或者认为他们需要一直保持网络的5个9的可用性。
5个9的可用性是很难达到的。你必须对网络设计客户解释要达到那样的要求,必须补充冗余的设备和链接,就像增加人员一样,而且还要必备极其可靠的硬件和软件。如果了解到所需的费用,有些客户或许就会降对网络时间的要求,但是对于某些用户来说,这个目标是恰当的。网络一旦不能正常运行,哪怕只有很小的一段时间,有些公司的收入或信誉也将受到严重损失,所以5个9的可用性又是一个合理的目标。
很多硬件设备制造商给他们的设备和操作系统规定了99.999%的正常运行时间,并且确实有用户达到这样的正常运行时间。这也许会使一些天真的网络设计客户以为一个复杂的网络系统不需要很多的额外设备和花费就能达到99.999%的正常运行时间。不过,在整个复杂的网络上实现这样高的要求比在局部网络实现起来困难多了。失效原因可能是信号的损耗,路由器和交换机中的软件故障,预想不到的带宽突然增加或用户的非法操作,以及一些配置问题,包括人为错误、停电、安全漏洞和网络应用软件故障等。
注释:
一些网络专家说80%~90%的网络故障由于人为错误,或者是本地管理员或者服务提供商雇员(或者名声败坏的违规操作员)犯的错误。避免并能从人为错误中恢复需要技能和好的处理方式。你需要聪明的人来不断地考虑可用性和精准的流程,而没有丝毫的懈怠。好的网络管理和故障处理扮演着一个重要的角色。网络管理工具应该提供关于故障的即时警告和足够的信息,让一名网络管理员进行快速修复。
如果网络一天24h,一年365天都在运行,那么运行时间是8760h。如果网络只有00.001%的时间可能出现问题,那么它只能允许大约每个小时有0.0876或者每年5min的时间出现问题。如果用户要求网络99.999%的可用性,你最好明确这不包括正常规定的维护时间,或者你需要很好地确认网络有能力支持在线升级。在线升级是指升级网络设备和服务的同时不能中断运行。大多数网络公司出售高档互连网络设备,包括用来在线升级网络的热插拔部件。
如果热插拔部件无法满足需求,可能需要增加额外的设备才能够不中断服务对网络进行维护。有些网络中的关键设备有着3倍的冗余,一台是在运行的,一台是热备用的立即可用,一台正在维修。有这样3倍的冗余,你能用备用的路由器升级或者重新配置网络。在它被升级之后,你就能把它作为热备份,然后取下原有的热备份设备进行升级。这样你就可以把主设备切换到热备份设备然后升级主用设备。
依据网络设计,在正常操作的时候你可以在冗余部件间实现负载分担。设计决策的关键在于你的用户是否接受由于某些部件失灵而导致性能的降低。如果所有的这些听起来过于复杂或者昂贵,那么也可以不必自己来做,把资源放在托管中心,这样可以通过多用户共享来减少冗余。
2.停机成本
总体来说,客户的可用性目标是为了保证关键任务应用的顺利运行,极少出现停机或没有停机时间。可以帮助你和你的客户了解可用性需求的一种方法就是理解停机成本。对于每个关键应用,要记录每停机一小时将给公司造成多大的损失(对于某些诸如订单处理这类的应用程序,说明每停机一分钟会损失多少资金将更具震撼力)。如果网络的运行外包给第三方网络管理公司承担,向他们解释停机成本将有助于这家公司理解应用程序商业使命的重要性。对停机成本的详细说明还有助于阐明是否需要支持服务中升级,或是否有必要提供3倍冗余措施。
3.平均无故障时间及平均修复时间
除了用正常运行时间百分比表达可用性外,你还可以用平均无故障时间(MTBF)和平均修复时间(MTTR)来定义可用性。当客户想要明确地说明正常运行时间和停机时间时,你可以使用MTBF和MTDR进行定义,而不是采用简单的正常运行时间百分比数值。
MTBF这个术语源自于计算机领域,非常适合表明一台计算机或计算机组件在出现故障之前能运行多长时间。如果在网络领域表达可用性要求,MTBF有时会用更冗长的惯用语加以说明,即使用平均业务中断时间(MTBSO)这一术语来指明网络是一项服务,而不是一个配件这一事实。同样MTTR也可以用平均业务恢复时间(MTTSR)来代替。本书采用了更简单,更为人所知的术语MTBF和MTTR。
对网络来说,典型的MTBF目标是4000h。换句话说,每4000h或166.67天之内网络出现的故障应不超过1次。典型的MTTR目标是1h。也就是说,网络故障应在1h内修复。在这种情况下,平均可用性目标是:
4000 / 4001 = 99.98%
对许多公司来说,99.98%网络可用性是一个典型值。
当采用MTBF和MTTR来指明可用性时,方程式如下。
可用性 = MTBF /(MTBF + MTTR)
使用这个可用性方程式可以让客户清楚地陈述他所能接受的网络故障频率和时间跨度。
请记住计算出的平均值。故障时间及恢复时间的变化可能会很大,这一点一定要考虑到。因此仅考虑平均数是不够的,尤其是当你依赖于不能被你牢牢控制的外部业务代理(设备制造商或承包方)来解决故障的时候。另外还要注意客户可能要求为网络的不同部分指定不同的MTBF和MTTR目标。例如,用于企业网核心的可用性目标要比仅影响一个用户的交换机端口的可用性目标严格得多。
尽管不是所有的客户都能指明具体的应用要求,但是除了将网络作为一个整体外,识别特定应用的可用性目标也是很必要的。应用可用性目标的变化幅度根据停机成本的不同会有很大变化。对于每一个具有较高停机成本的应用,你应以文档形式记录下可接受的MTBF和MTTR。
对于特定网络组件的MTBF值,你通常可以使用设备制造商提供的数据。大部分路由器、交换机和集线器生产厂家都可以提供相关产品的MTBF和MTTR数据。你也可以调查其他信息来源,如商业出版物等,以避免厂家公开的数据存在有可信度问题。设计者应该研究可变性数值以及平均数值,并尽量从设备和服务提供商那里得到有关MTBF、MTTR和可变性数值的书面承诺。