网络负载解决方案太多了?

我们讨论过是否应该将每个服务器都配置为虚拟化服务器,本周我们又开始了一个类似的讨论话题,即是否能让所有的解决方案适用于所有的系统。

根据我的经验,在设计关键性的应用项目时,将最佳的工具搭配起来组成的解决方案就是最好的。比如在数据库迁移或灾难恢复时使用DNS CNAME 记录,配合使用数据库聚集和日志复制。数据库和DNS项目在关键应用中都属于重要的组成部分,但是在整个项目工作中,还有其它很多解决方案可以实现相同的结果。

对于虚拟机来说,额外的选择空间很大。虚拟机可以将硬件从操作系统中脱离出来,实现硬件更高的利用率。比如通过VMware HA实现虚拟化,这款产品提供了一系列方案确保虚拟机系统保持可用性。当某个虚拟系统出现问题时vCenter Server将在另一个ESX(i)主机上重启一个虚拟机。VMware HA的其它功能还包括监视访客虚拟机状态,比如是否需要访客重启系统(如Windows蓝屏死机)。 关于可用性的另一个功能是 VMware fault tolerant (FT)虚拟机。FT虚拟机通过在两台ESX(i)主机上同时运行的方式,增加网络、处理器和内存资源的可用性。这种配置下,虽然存储系统还是独立的,但是一般来说,磁盘存储系统会有另外的机制实现更高的可用性,比如多路径配置,RAID技术,存储复制技术等。

而在操作系统方面,也有很多种选择可以实现与物理虚拟机类似的功能。这些解决方案包括上面提到的DNS和数据库那种小把戏,还有在Windows服务器上建立Windows Cluster Service服务,增加系统和程序的可用性等方案。

所有这些技术都非常好,足以让我们实现一套优秀的解决方案了。但是问题来了,我们到底需要多少层级的可用性?当系统出现问题需要排错时,问题就更多了。每个可用性解决方案都有他们自己的排错方案和技巧。另外,多套可用性方案叠加还会增加管理的复杂度。

问题在于,很多这种提高可用性的解决方案在应用到工作流时,可能只是应用到了其中的一两种功能。正确选择可用性解决方案的原则是事先明确的定义商业需求,并以文档形式制定出解决方案策略,规定哪些方案将应用到需要提高可用性的工作中。