如何避免虚拟基础设施单点故障
墨菲法则提到如果某事可能会出错,那么这件事一定会出错。可能没有比服务器虚拟化更严格遵守该法则的领域了。数据中心只有物理服务器时,服务器故障通常只影响一个工作负载。而虚拟主机运行多个工作负载,这意味着可能导致很多应用会出现故障。
使用服务器虚拟化的大多数企业利用诸如故障切换集群或者复制技术作为应对hypervisor级故障的方式。然而这类技术在保护虚拟负载方面还有很长的一段路要走,因为集群往往不够。即使构建了虚拟主机高可用集群仍然可能出现故障。如果某些虚拟基础设施成为单点故障,那么故障可能会发生。
尽管消除所有能够想到的单点故障是有可能的,但这需要雄厚的资金支持。在大多数情况下,企业必须识别潜在的风险,然后评估风险转换为实际问题的可能性。企业可能要花钱应对最大的风险。
这也引发了一个问题,那就是存在的潜在单点故障是什么。真正的故障风险可能变化多端,这取决于使用哪家厂商的产品以及虚拟基础设施是如何部署的。某些风险与硬件相关,某些与软件相关。
与硬件相关的发生故障可能会影响整个虚拟基础设施的所有硬件。以电源管理为例,很多虚拟主机配置了冗余的电源模块,当一个电源模块发生故障,第二个电源模块能够在线接管,这样就不会影响主机服务器,即便这样,管理员必须考虑电源一旦出现故障带来的的后果。
虚拟主机通常连接到UPS,在电力故障时能够使用发电机发电。然而,如果在主电源发生故障时,所有的服务器连接到同一个发电机,那么该发电机也可能成为潜在的单点故障。
这时就要进行风险评估。在备用的发电机出现故障影响整个虚拟基础设施前,很多事情都会出错,此时必须中断电源。不必将备用发电机出现故障放在心上,因为备用发电机成为单点故障的可能性非常小。
正如前文所说,尽管消除所有可能的单点故障是有可能的,但代价非常大。可以想象一下为各种各样的服务器配置单独的备用发电机的场景。,即使是这样也不一定会消除潜在的单点故障。如果这些备用发电机的燃料都来自于同一个地方,而燃料恰好被水污染了,那么发电机燃料将会成为单点故障。需要注意的是,很多事情可能会在发生其他故障之前出现问题。
在集群环境中,共享存储成为单点故障更为常见。集群存储通常配置了冗余的磁盘,当冗余未达到要求时,阵列、交换机、线缆可能会出现故障。
在软件端,如果未采用冗余方式部署,那么基础设施服务器可能成为单点故障。例如,假定企业打算部署System Center Virtual Machine Manager(SCVMM)作为管理Hyper-V的工具。SCVMM可能会成为单点故障,除非被部署在高可用性虚拟机上。同样地,SCVMM依赖的SQL Server数据库也可能成为单点故障,除非数据库也是冗余的。其他潜在的单点故障可能包括DNS服务器、域控制器、DHCP服务器、备份服务器或者互联网网关。
对大多数企业来说,消除所有可能的单点故障是不可能的,更好的策略是识别出单点故障,然后针对单点故障的风险等级进行评估。