单点故障(SPOF)全面解析:成因、评估与冗余设计指南
在信息技术领域,系统设计涉及确定架构、接口、模块和数据以满足特定需求的过程。这是提高产品/服务开发效率、实现卓越用户体验的关键过程。
假设你有个应用每天服务数百万用户。服务端需要卓越工程处理如此大量请求。即使数据库出问题或硬件故障,服务器请求绝不能失败。
然而,如果后端或前端设计不当,一个简单错误可能关闭整个应用——从服务器到全网络。此类错误主要来源之一是单点故障(SPOF)。
本概述文章解释为何SPOF是IT专业人员最头疼的问题、常见来源及如何缓解此类故障。从基本问题入手。
什么是单点故障?
定义:单点故障是指系统中任何部分,若其失效会导致整个系统停止运行。简单说,一处损坏,全盘皆崩。
SPOF源于错误设计和不良实施技术。在任何系统中均不可取,无论软件应用、硬件模块、制造系统、业务实践。
例如,你运行的网站仅托管在特定位置的单台服务器上,则该服务器就是单点故障。服务器故障时访客无法访问网站。这一单点可使网站相关所有活动戛然而止。若业务存在此风险,须采取措施缓解。
解决方案是什么?
降低SPOF潜在风险最有效方法是增加冗余。涉及安装冗余硬件组件和软件应用。
例如,可用独立磁盘冗余阵列(RAID)存储目录服务器数据库,或在不同主机部署多个重复的目录服务器实例。
冗余可在不同层级添加。以独立出租车司机为例。低层级:备有工具和备件修车。中层级:借朋友出租车干活。高层级:拥有另一辆车和足够组件在多重故障时完全替换故障部件。
看计算中冗余的简单例子。
1.) 简单设置中可能存在多个单点故障。
图1
2.) 部分单点故障可通过添加重复硬件组件避免。
图2
3.) 零SPOF可通过构建全冗余系统实现,但此设置比图1简单设置昂贵得多。
图3 | 零SPOF
系统层面可部署负载均衡器确保服务器集群高可用。每台服务器可有多硬盘、电源、其他模块。添加额外服务器在活跃服务器故障时接管负载可实现更高冗余。
数据中心本身支持业务逻辑等许多操作。因此若其特性无法在别处复制,它本身就是业务的潜在SPOF。
站点(最高)层级可在不同环境复制整个数据中心,主服务器无响应时访问。此类冗余通常是IT灾难恢复或弹性计划的重点。
为实现无SPOF,大型网络——包括互联网和ARPANET——使用分组交换:将数据路由传输为分组的数字网络技术。利用两主机间多路径并最优利用信道容量。
任两主机间任一节点故障时,数据通过替代节点传输。分组交换也最小化传输延迟、增强通信鲁棒性。
三种广泛用于防止单点故障的网络协议:
- 中间系统到中间系统(IS-IS):通过确定数据最佳路径在计算机网络中高效移动信息。
- 开放最短路径优先(OSPF):在属于单一自治系统的路由器间分发路由信息。用最短路径优先算法(Dijkstra算法)传输数据。
- 最短路径桥接(SPB):简化网络开发配置同时启用多路径路由。
评估SPOF
SPOF常见于硬件、软件、第三方服务/提供商三处。人也是大多数组织中的单点故障,但常被忽视。业务中人可因错误、欺诈、不诚实、知识缺乏、经验有限成为SPOF。
检测到SPOF后,下一步按修复难度分类。可分三类:
- 简单:可在合理时间和成本内修复。
- 中等:无法直接补救;但可开发可靠变通方案。
- 困难:故障棘手且修补极其昂贵。
此外,SPOF可按发生概率(低/中/高风险)和业务影响(低/中/高影响)分类。
预防单点故障
因众多关键任务流程依赖网络连接,数据中心停机不可容忍。仍超30%数据中心年均经历停机。约34%企业称一小时停机成本超100万美元。
无论因数据中心停机造成何种损失,现实是高达80%停机可预防。网络中任何工具均可能成为SPOF隐患,但多数停机由恶意软件和其他网络威胁引起。
现代威胁防护工具(含负载均衡器、入侵防御系统、Web应用防火墙、高级威胁防护解决方案)在电源故障、网络接口控制器故障、或过滤互联网流量时均面临风险。
这些工具既易受暴力攻击等常规威胁,也易受实现XML外部实体或跨站请求伪造等复杂威胁。因无法全时保护网络,必须采取冗余安全措施。
有多种方法实现Web应用防火墙架构以最小化广泛攻击的有效性和频率。多层Web应用防火墙例如按操作将不同应用模块分离到多个层级。
因每层运行在独立系统上,无SPOF。同理,正确实施多个负载均衡器可减少网络内单点故障。
不要把所有鸡蛋放在一个篮子里
虽许多公司提供自有版本云备份,但不建议仅依赖单一备份保护业务数据。即使亚马逊、微软、谷歌等科技巨头的云服务每年也多次故障。
若你经营公司,构建冗余时需考虑所有可能场景。别假设任何人能提供100%正常运行时间,随时准备好Plan B应对意外。
深度研究
系统集成中的SPOF
英国利物浦约翰摩尔斯大学研究者强调将单个系统集成形成大型复杂异构系统集成时面临的重大挑战。
许多现代方法倾向于集中于一个小的特定脆弱区域。有些高度理论化或因协作组件众多而不可扩展。研究描述单点故障如何严重影响协作系统、导致企业重大财务损失。
基于软件冗余消除SPOF
基于软件的冗余通常被视为增强可靠性的有效廉价方式。三模块冗余(TMR)的冗余执行颇流行,但留下无防护的SPOF。
该研究提出整体方法——组合冗余,利用冗余执行结合编码处理,将系统安全关键组件针对软错误加固,同时消除SPOF导致的脆弱性。可轻松集成到现有项目中。
树路由中最小化SPOF
树路由(TR)利用父子链路传输分组。源目标节点属不同树分支时这些链路需更多跳数。靠近协调器节点可能传输更多分组,导致更高能耗和拥塞,可能产生SPOF问题。
台湾国立高雄应用科技大学研究团队开发了缓解SPOF树路由算法,通过最短路径传输分组避免拥塞。该算法降低平均跳数、最小化端到端延迟、提高吞吐量、延长树节点寿命。
工业技术