分类: IT业界
2011-12-13 15:59:30
了解系统冗余
要点概览
|
工业自动化要求高度的可靠性,这一要求也延伸至了需要运行自动化系统的计算硬件和软件。多年来,高可用性已经被设计至嵌入式控制器等低水平的系统组件之中。但是,作为日趋集成和智能化的基础架构的一部分,今天的自动化设备需要执行新的任务——例如,向后端数据库传递信息。
举例来说,汽车制造商可能需要记录气囊安装过程中使用的每个螺钉的扭矩值,并将该信息发送至公司的数据库。如果数据在传输过程中被损坏,从而导致系统出现故障,后果可能会非常严重。要了解制造流程未达到规格标准的原因,工厂可能不得不暂停生产线,请技术人员解决这一问题。对于某些流程,例如制药,数据损坏可能导致整批生产材料都只能被丢弃。
随着对自动化系统要求的提高以及系统复杂性的提升,公司可以退后一步,评估在计算基础架构的什么位置有效、高成本收益地配置冗余。
建立高可用性
要评估系统中的能够配置冗余的地方,您最好从高层次的软件环境开始。您可以考虑数据库和管理控制台等高层次的子系统,按重要性排序可以实现高可用性的投资位置。如果某个子系统需要持续的信息更新,则对该子系统而言,数据存储应该一直可用。相反,管理控制台为操作人员提供界面,而操作人员以较慢的速度交换信息,因而管理控制台不需要最高的可用性。
下一步是确定一个战略,为不同的子系统建立需要的可用性级别。如果该数据库必须高度可用而且由多个服务器节点提供支持,那么需求应该怎样在这些节点中分配——特别是如果其中一个节点出现了故障?多种选择可以帮助配置节点从而提供高可用性,包括软件和硬件解决方案等。
在软件领域,商用成品操作系统和数据库应用程序可能包括集群软件,该集群软件支持从一个发生故障的节点故障转移至集群中另一个节点。另外还有多种虚拟化产品也可提供故障转移功能,这些产品使组织可以快速地配置应用程序,并且自动启动为执行特定任务而预先配置的新虚拟实例。
虚拟化允许以统一的方式管理不同类型的软件堆栈,并且在原有和更新后的子系统必须共存的环境中也同样适用。在同构系统中,发生故障时,一个应用框架可以为新的服务器配置所需的服务。
在这些解决方案中,它们的性能可能相差很大。一个完全冗余的硬件集群解决方案可能仅需 1-2秒便可以实现故障转移,然而,一个应用程序可能需要30秒才能检测到问题并启动新的服务器。在设计阶段,确保所选的解决方案的响应能力可以满足要求,这一点是非常关键的,因为确保实现冗余的架构层一旦配置完毕,去除该层可能需要对系统进行完全重新的设计。
运行在集群子系统中的节点应遵循某些原则,例如:最大限度地减少状态信息和“优雅从容地”应对故障。在可能的情况下,服务中的状态性信息应该尽可能地减少、整合并存放在共享的存储中。对于无法完全转移到共享存储中的信息,您可以部署永久性存储并应用复制策略从而最大限度地降低节点故障的影响。
在运行数据库实例的系统发生故障时,最后一个事务可能只被写入了一半。在新的节点介入后,解决方案应该能够回滚该被部分写入的事务,以避免因为创建重复或者损坏的条目从而导致记录的有效性无法得到保证。损坏数据的影响可能是灾难性的。如果一个药物生产流程的历史记录被发现并不准确,制造商可能不得不召回价值数百万美元的整批产品。
主动/主动和主动/被动配置
选好集群软件之后,管理员必须为每个集群确定具体的配置。有两种基本的配置方法:主动/主动和主动/被动。
以一个数据库为例,主动/主动配置指的是主节点和备用节点在任何给定时间都运行该数据库。如果数据库负载突然激增,其它节点会承担增加的负载。虽然主动/主动配置有低故障转移延迟、易于扩展、负载平衡等很多优势,但是它需要节点经过设计可以同时运行。由于重新写入现有服务以满足这一要求通常并不可行,在很多情况下,主动/被动配置可能是更为适合的选择。
主动/被动集群配置可为系统中的每个工作节点提供一个完全冗余的节点,如果主动节点发生故障,冗余节点会上线开始运行。虽然主动/被动配置更容易实现,但是提供一组完全冗余的节点(和硬件)的成本可能较为高昂。
在确定具体集群适合主动/主动配置还是主动/被动配置时,管理员还必须了解专用节点和多用节点之间的差别。使用专用节点时,管理员必须确定为每个接口提供多少个冗余节点。在使用多用节点时,其它节点的单一共享资源池可以为任何接口提供冗余。在置备时,即使不清楚最终需要支持哪些接口也同样如此。
<图中文字>解释如下:
Redundancy through dedicated nodes 基于专用节点的冗余
Storage 存储
Authentication 身份验证
Console 控制台
Node 1 节点 1
Redundancy through muti-purposed nodes 基于多用途节点的冗余
Differences between dedicated and multi-purposed nodes for configuring active/passive or active/active clusters 用于配置主动/被动或主动/主动群集的专用节点和多用途节点的差别
评估需要的接口特性(interface behavior)
软件环境的另一关键因素是应用程序的接口特性。如果一个生产数据库被高负荷地使用,查询设备或者Web浏览器可能无法在首次尝试时与该数据库的前端建立联系。通过跨多个冗余节点隐藏重试流程的方式,构建一个保证第一次便得到响应的接口是可能的,但是为每个子系统接口都创建透明的故障转移功能可能会非常麻烦。人们常用的方式是,通过跨所有子系统的冗余节点实施内部重试策略,构建高度可用的外部接口。
在应用水平,一旦确定了希望的接口响应时间和冗余要求,您还需要在下面的存储层进行设计以获得高可用性。在冗余系统中,所有子系统都应访问共享的集中存储,以确保在一个存储阵列发生故障时,共享池中的其它资源可供使用。另外,还必须复制数据库并定期更新数据库副本,以确保系统发生故障时,数据可以快速恢复。现在,市场上有很多的商用和开源存储系统,这些系统可提供内置的复制、备份和还原功能。
配置硬件冗余
除了在软件级别为系统创建高可用性,组织还应确保支持这些系统的硬件不会发生单点故障。组织可以利用硬件冗余和动态修复来帮助防止故障。在服务器水平,也需要利用冗余来确保持续、可靠的计算和数据存储。
硬件冗余从选择服务器开始。刀片式服务器——其拥有一个机箱,里面有可作为单个计算机运行的多个服务器——可以提供内置的故障转移和冗余功能,从而实现最长的系统正常运行时间。服务器数量不断增长的组织应考虑采用刀片式服务器。除了比同等数量独立的机架式服务器更节省空间和能源外,因为刀片可以轻松滑入机箱,可以快速地增添处理能力或者更换故障单元。
刀片式系统机箱可以容纳多个服务器刀片和共享基础架构组件,而且其中每个组件都至少提供了两个或以上从而避免单点故障,这样就将冗余功能内置到了刀片基础架构中。另外,这些组件通过中间背板来实现最佳共享,中间背板被设为被动模式以确保高可用性,也就是说,中间背板不含任何主动逻辑,仅包含连接器和走线。冗余的硬件组件可能包括:
· 冗余且可热插拔的机箱制冷风扇
· 冗余机箱管理模块
· 标准N对1冗余热插拔电源
· 可选的冗余内存
· 带热插拔硬盘驱动器的冗余存储
· 电池支持的RAID缓存
· 冗余网络接口
· 冗余热插拔交换机模块
<图中文字>解释如下:
Redundant modules 冗余模块
Chasis management module B 机箱管理模块 B
Chasis management module A 机箱管理模块 A
Fan 风扇
Redundant and hot-plug chasis cooling fan 冗余和可热插拔的机箱制冷风扇
DIMM DIMM
Optional redundant RAM 可选的冗余内存
CPU 处理器
Southbridge 南桥
Hardware redundancy 硬件冗余
RAID HDD 1 RAID硬盘驱动器I
RAID HDD 2 RAID硬盘驱动器2
PCIe I/O PCIe I/O
RAID controller RAID控制器
with battery-backed cache 电池支持的缓存
Redundant storage with hot-plug hard drives and battery backed-up RAID cache 带热插拔硬盘驱动器和电池支持的RAID 缓存的冗余存储
Blade server module 刀片式服务器模块
PCIe I/O PCIe I/O
Ethernet NIC 1 以太网网卡1
PCIe I/O PCIe I/O
Ethernet NIC 2 以太网网卡2
Redundant network interfaces 冗余网络接口
Power supply 5 电源 5
Power supply 4 电源 4
Power supply 3 电源 3
Power supply 2 电源 2
Power supply 1 电源 1
Power supply 0 电源 0
N-1 redundant hot plug power supplies N对1冗余热插拔电源
Ethernet switch 以太网交换机
Redundant and hot-plug switch modules 冗余热插拔交换机模块
Ethernet switch 以太网交换机
Blade server architecture showing redundant elements for high availability 刀片式服务器架构展示了面向高可用性的冗余组件
服务器配置选择
管理员在计划刀片式服务器部署时,对于从电源冗余到机箱管理冗余的各种功能,应认真考虑这些功能的可用配置选择。设置冗余配置可能仅需要安装模块和接通系统电源,也可能需要使用管理界面来配置冗余选项,具体取决于设备的类型和冗余规则的设计。发生故障转移时,大多数设备一般都会发出警告IT管理的信息。
在任何服务器中,最为常见的故障点是硬盘驱动器。很多刀片式服务器中内置的镜像技术可创建工作系统卷的完全相同副本,因而可针对硬盘驱动器故障提供保护。如果驱动器发生故障,该副本可以取代原始卷。硬盘驱动器的热插拔连接能够让副本上线并替代发生故障的驱动器——恢复冗余状态——无需中断服务器运行。
提供备用电源和制冷装置
作为一个非常关键的组件,电源必须受到多个层次的保护。希望实现真正高可用性解决方案的组织应考虑从两家不同的电力公司购买电能。如果一家电力公司停电,另一家可以继续供电。除了电源冗余,组织一般需要部署多个不间断电源,以便在总电源线出现故障时提供应急电源。
每一刀片式服务器机箱中包含多个机箱电源,这种冗余可确保一个或多个机箱电源发生故障时系统工作不会发生中断。服务器供应商提供了多种冗余配置选项,例如,在为服务器刀片供电时,留出一个或两个供电单元作为备用。利用这种配置,任何一个或两个电源发生故障都不会导致整个机箱断电。
在很多情况下,管理员还可以配置管理界面,当电源逐个发生故障时,根据组织确定的优先顺序逐个关闭服务器刀片。这种配置可确保最关键的服务器一直正常工作,直到最后一个电源断电。如果因为停电导致系统不得不采用备用电池运行,则将机箱配置为关闭所有非必要的刀片可延长最关键刀片服务器的使用时间。
另外一个重要的问题是刀片式机箱制冷系统,该系统由多个风扇模块组成。因为风扇有活动零件,所以可能比没有活动零件的组件更容易发生故障。服务器组件过热可能导致数据损坏甚至服务器停止运行。为了防止发生故障,很多模块都采用每个模块使用两个风扇的设计。机箱的电源模块中可能也包含风扇,以便对机箱进行制冷。
出色设计的刀片式机箱将会提供多个可热插拔风扇,为平台提供超出所需的更多制冷能力。如果一个风扇发生故障,其它风扇可以继续对机箱进行制冷。在热插拔环境下,发生故障的风扇可以迅速被替换,因而不会导致服务器因为过热而停止工作的现象。
确保冗余
出色设计的刀片式服务器还可实现网络连接冗余,其中机箱 I/O 模块提供外部连接,多个内部端口用于连接至刀片。每个刀片一般安装两个以太网网卡(NIC)或嵌入式的板载网卡(network LAN on Motherboard,LOM)。
机箱还支持安装两个以太网交换机模块,以支持附加连接或网络冗余和容错。例如,通过将每个服务器刀片上的LOM1连接至交换机模块1,每个服务器刀片上的LOM 2连接至交换机模块2的同一端口,管理员可以实现故障转移保护。管理模块软件可以配置为,在NIC、LOM、电缆、内部端口或外部端口出现故障时进行故障转移。
刀片式服务器和其它类型的服务器的区别在于,NIC或LOM与交换机模块内部端口之间的连接是通过中间背板硬连接的。这一设计使NIC或LOM与交换机之间的链接可保持连接状态,除非NIC、LOM或交换机端口发生故障。即使集成交换机上的外部上行端口与外部网络之间的网络连接中断,改链接仍会保持连接状态。
确定向何处投资
为了避免可能导致重大损失的故障和停机,必须采用冗余功能,自动化制造和加工领域尤为如此。但是,如果在系统的每个部分都配置同样水平的冗余和可用性,大多数组织都会觉得成本太过高昂。随着基础架构的集成和智能化程度的日益提升,公司必须改变其系统的体系结构,以使可用性不依赖于单个处理器和电容器,而是数据、接口和应用程序都提供高可用性。
关键问题是选择在何处投资来配置冗余。通过审视整个系统,评估哪些子系统需要具有高可用性,并考虑软件环境和硬件设备,组织可以实现它们所需的高可用性并降低成本。