安全基础知识:虚拟服务器管理之道(一)
在正确实施和管理的前提之下,虚拟化意味着成本的节约,这里有服务器硬件、支持和管理等诸方面的节约,还有更简易的服务器部署和进一步减少的能源消耗。为了让这些利益变成现实,这个结构的虚拟化层的管理,必须要独立于应用程序或物理服务器进行。所幸的是,如果你正确地管理,这并非难事。
当然,服务器的配置和备份在虚拟世界中更加容易了。不过,监视,特别是对服务器的底层物理资源的检查,却变得更加重要了。你不得不在物理服务器中对虚拟应用程序的种类和数目进行平衡,并且要考虑资源的 佳利用问题。
出错的后果是很严重的,这可能是将运行在一个物理服务器上的某些或全部的应用程序变成一种乱七八糟的东西。
成功地管理虚拟化的服务器意味着虚拟化将一个新的层次引进了服务器软件栈中。你不是通过管理底层的物理服务器或虚拟机或虚拟机上的应用程序来管理虚拟化层。
与之相反,对虚拟化的监视和管理必须独立于操作系统、应用程序或(物理)服务器。(注意:这里假使你正使用Xen或Vmware等系统管理程序。还有一些虚拟化产品,如Virtuozzo,它是在操作系统的顶层实现虚拟化。这好像与我们这儿讨论的情况不太一样,不过其基本的原则是一样的。)
第二,你必须记住,虽然虚拟机对运行在其上的应用程序而言看起来是独立的,但它们能够也确实会通过物理服务器及其可用的应用程序进行交互。所有的应用程序和运行在物理服务器上的虚拟机(从一个更少的范围上讲)可能运行起来看似独立,而这正是虚拟化的魅力的一部分。但是实际上,它们都利用物理服务器中同样的资源池。成功管理虚拟化服务器的一个重要部分就是要保障所有的虚拟机在需要资源时能够拥有资源。
第三点来自于前两点。虽然管理虚拟服务器在许多方面类似于管理物理服务器,但它们并非同一件事,其相似程度也是有限的。
好消息
虽然我们提出了这么多的告诫,用户们还是同意:在涉及到管理服务器时,虚拟化是一个不错的选择。
Radiator Express Warehouse 的CTO Mike Carvallho 说,“虚拟服务器管理起来容易多了,”。这家公司在美国和加拿大拥有200家连锁商店。Carvallho管理着九个运行着Vmware的Dell服务器,这些服务器被分为两个地点,支持55个虚拟服务器。
不仅装备、性能管理和恢复更容易,而且需要管理的设备也更少了。Carvalho 说,“你会立即失去的一种东西是所有的硬件,对其管理简直是一场噩梦。”相对于其它方面,物理服务器一般来自于不同的厂商,这使得补丁管理和管理上的改变更复杂,并且意味着要为较的服务器为断地提供备用零部件。
在转换在一个虚拟化的环境中后,许多公司都限制了其物理服务器的数量和种类,而且还经常同时升级到一种更新的技术。通过限制系统中物理服务器的种类,这对于数据中心保持其硬件的同步更加容易。
恰当管理的虚拟化的结果是低成本的、更有效率的运营方式。AET的系统、网络和服务经理Chris Stucker 说,“ 终都会归结为成本,”Stucker说,他的服务器的支持成本已经极大的降低了。“这些服务器有许多是较老的服务器,我们对基于这方面的支持支付佣金。”
他不能提供节约所带来的具体统计数字。
在典型的一天中,AET要在其三个刀片服务器上运行45到55个虚拟服务器,这些刀片服务器要支持公司总部以及在美国和加拿大的三个制造工厂。
但是,这种美好的场景仅在虚拟化的服务器被恰当管理时才是现实的。我们应当看到,还有一些使管理虚拟服务器误入歧途地方。
非线性—在2+2=5时(或2,或 10,或…)
物理服务器和虚拟服务器的区别之一就在于非线性。在虚拟化的世界中,二加二有时等于三,或六。
Enomaly的 Enomalism产品(这是Xen的虚拟化平台的一个工具)的首席开发人员Derek Anderson说,“没有什么是真正线性的,你得到的是不可思议的重叠。”
不同的应用程序需要不同数量的资源。数据库使用大量的RAM和处理器周期,而Web服务器却需要大量的磁盘访问,等等。
对资源的有效分配部分依赖于负载的时间选择。Anderson提供了下面的这个例子,他说这来自于一个真实的案例研究,涉及到一个全球性的金融服务公司。
一个在运营期间运行着虚拟服务器来支持英国和日本用户的物理服务器可能会无懈可击。运行着虚拟服务器以支持纽约和弗罗里达用户的同样一台服务器就可能产生问题,因为其时区的问题。在日本和英国的例子中,加裁配置文件有被取消的可能。而在第二种情况中,其加裁配置文件就会产生冲突。
因此,每一个虚拟化的服务器都需要一个物理服务器资源的一部分。为了更好地发挥其效率,虚拟化服务器的资源需要应该补充同样物理服务器上其它虚拟服务器的这些资源需要。一般来说,你需要在不同的物理服务器上向应用程序分配相似的资源需求。
物理服务器是争用发生的地方。多数时间你只是通过每个虚拟机运行一个应用程序,因为这样管理起来更加简单。
可以把这看作是将许多不同大小的块(虚拟机或应用程序堆栈)置入一系列同样大小的物理服务器中。如果你尽力将同样大小的所有块都放入到一个物理服务器中,如此一来你需要的物理服务器要比下面一种情况所需要的更多:不管多大的块都混合起来,用以充分利用物理服务器的空间。
管理人员应当通过补充的需求来寻找应用程序。这可能会成为一个问题,因为某个在数据中心服务器环境中的人会有一种自然的趋向,他们会将同样的虚拟化应用程序放到同样的服务器中。在传统的服务器世界中,用一台或多台服务器专门从事电子邮件,另外一组服务器专门从事Web,另外的服务器专门从事数据库等等,这是很普通的事情。
但在虚拟世界中这样做是绝对错误的事情。
这意味着将两个需要大量内存或存储器或任意一种共同资源的应用程序放置到同样一台服务器上。
在两个应用程序都不执行大量工作时,这可能会发生作用,不过随着负载逐渐加重,你就会碰到资源争用和性能降低的问题。
平衡资源说来容易做来难,因为你不可能简单地让两个虚拟化的应用程序各自使用一个物理服务器资源的50%,并将其装载到同样的物理服务器上,期待其正常地运行。
即使两个看起来完全适合的两个应用程序也会发生严重的冲突。一个正常情况下对内存需求很少的应用程序也会偶尔地要求极大的RAM。如果这个应用程序被装载到这样一个物理服务器上:有一个经常需要大量内存的应用程序,那么你不只会遇到一个问题,而是一个可能很严重的中断。
关键是你不能绝对地预测两个应用程序是否会在同一个物理服务器上同样地很好地实现虚拟化。唯一确定的方法是测试其组合。Radiator Express 的Carvalho 说,“你必须要看出什么运行良好,什么不能很好地运行。”
“我不会采用一个其特性并未完全测试的应用程序,也不会期望所有的特性会在首次测试中全部体现出来。”
好消息是虚拟化使得在一个测试系统上运行虚拟化的服务器变得很容易,在应用程序组合正常运行后再进行迁移。
其测试过程与测试一台物理服务器用以支持单个应用程序有很多相同点。也就是说,你运行测试负载直到你确信它正常工作,并能够表现出虚拟化服务器的性能,而且确认这个性能水平是可以接受的。
采用虚拟化的服务器,你可以在一台物理服务器上运行虚拟机和应用程序的特定组合,并且用来自第三方的或虚拟化供应商所提供的监视工具来监视其运行结果。这并不是用微软的Iometer等软件实现的,因为它仍然需要通过操作系统而运行。记住,在VMware 和 Xen等产品中,操作系统也在虚拟机上运行。你需要某种东西能够检查管理程序层直到底层硬件。在这两种情况中,你使用一整套测试数据,这可能来自你自己的企业。
在实施时又会存在一个主要的不同点。你并不是将整个的操作系统和应用程序单独安装在新服务器上,你只是克隆整个的堆栈,这个过程通常仅需几分钟。
一旦服务器运行后,这种对交互的关注仍然适用。Anderson引用了在同样物理平台上的一个DBMS和一个Web服务器的例子。如果数据库将其所有的数据表保存在内存中,Anderson说,它对磁盘密集型的应用程序的(如一个Web服务器)影响会极小。不过当一个数据库变得足够大,以至于DBMS(数据库管理系统)必须开始将其记录到虚拟内存中(虚拟内存当然是磁盘的一部分),就会对Web服务器产生极大的影响,而且应用程序的性能也会突然性地大打折扣。