在考虑虚拟化环境时,时代特色造就了一种新趋势,即将极为丰富的资源赋予一套单独的物理服务器、并以此为基础支持海量虚拟机系统。然而需要注意的是,硬件故障这一古老难题目前仍无法彻底扼制,将大量业务系统交给同一套设备负责往往令停机事件的影响范围急剧扩张、最终彻底粉碎我们那乐观但却不切实际的理论规划。
我们并不是说为一台物理服务器配备128GB、256GB甚至是1TB的内存,16到48个CPU核心以及一系列10G接口有何不妥。这样级别的强大服务器能够很轻松地同时运行几十套甚至上百套(取决于具体工作负载)虚拟机系统。在它的帮助下,我们完全可以把2004年需要三台1U物理服务器机架才能搞定的处理任务交给如今的一台1U服务器,而这确确实实是一场了不起的计算资源革命。但与此同时,这样的趋势也相当危险。由于系统密度的不断走高,服务器一旦在特定情况下发生故障,那么其产生的严重后果远大于九年前一台1U服务器所带来的影响。然而出于某种原因,这类风险一直没能在虚拟化设施创建工作中受到足够重视。
事实上,很多小型或中型企业都完全可以在一台现代服务器上运行所有业务任务并实施服务器操作。只要业务虚拟机的总数量在四十到五十之间,那么单服务器支持是完全可行的。大多数企业会额外添加一台服务器用于负载平衡及故障转移,因此我们相当于是在四块CPU、任意数量的内存以及四套供电设置下运行整个业务体系。这无异于回到了大型机时代,只不过基础设施拥有RAS(即可靠性、可用性及可维护性)特性。内部系统故障、电源问题、系统升级等状况都可能导致服务器无法运作,如此一来我们将不得不重新使用单一设备来满足几十套虚拟机系统的资源需求。
从积极的方面来看,这种情况并不多见;但从消极的角度分析,这种情况一旦出现很可能造成灾难性的后果。最近一段时间,我发现很多技术团队都喜欢把尽可能多的虚拟机系统塞进尽可能少的物理服务器当中,然后心满意足地“打完收工”。其实更理想的解决方案在于降低单台服务器中的资源分配,并将更多物理系统加入到整体设施当中。
诚然,授权许可成本算是造成这种现状的重要原因。由于很多虚拟化框架许可都会按CPU及内存数量来计费,因此部署八套低配置服务器所带来的许可成本要远高于部署四套高配置服务器。然而极力压榨物理平台资源的做法必然导致我们失去了处理停机及物理服务器故障的能力。我们不会利用RAID 1来部署主线存储机制,但很多双服务器方案其实在本质上并无不同,都是在尽量压缩设备数量。
我们经常听到厂商宣扬现代服务器硬件拥有如何可观的可靠性及资源弹性,冗余系统如何普及到从供电装置到虚拟机管理程序的方方面面,我们又可以如何通过减少设备数量、提高设备配置来降低许可费用、能源消耗以及冷却成本。但无论大家的基础设施硬件“弹性”有多强,故障都是必定会出现的,这只是时间问题。
最典型的例子就是文件系统会在特定LUN锁定服务器中的I/O子系统时出现故障,这时其它物理服务器中的虚拟服务器也可能会受到影响。这些受影响的服务器可能至少需要重启或者从备份中恢复丢失或受损的虚拟机系统。一旦其它某些设备也出现状况,管理人员面临的压力会更大,因为整套部署设施都面临着极大危险。然而随着服务器数量的增加,危险系数也将随之分散,并令压力逐步减轻。
大家千万不要认为这是我故意捏造出来的极端情况——就在几周之前,我就真正面对过这样的情况。幸运的是整个集群拥有八台服务器,修复问题的同时我还不得不为三台服务器进行了备份。不必将几十套虚拟机的损失一一分类有效降低了找出故障根本原因需要投入的资源。
如果大家发现自己更偏向于使用少数大型设备而非多台小型设备,请务必记得,有时候少未必就好。尽管较低服务器数量能够更轻松地支持起虚拟化负载,但却很可能给未来的修复及升级工作带来潜在困扰。由于数量有限,我们将不得不费尽心思来收拾残局。就我个人而言,无论何时都坚持认为八台小设备比三台大设备更合适,因为在这帮小家伙的帮助下,我的每个夜晚都能过得更踏实、更安心。