【IT168 方案】当前已经有很多组织将服务器虚拟化技术引入到生产中,这么做是有道理的,特别是在当前经济并不景气的情况下,因为服务器虚拟化技术可以在服务器硬件,机架空间,电力消耗和制冷方面为组织节省开支。
但为了实现服务器虚拟化,许多组织发现他们必须采购新的服务器,因为最新的系统管理程序(hypervisor)要依赖于处理器支持虚拟化的64位硬件,在某种程度上,采购新服务器也有道理,因为它可以减少电力消耗和制冷需求,并可以减少数据中心的后续成本。
问题是很多组织都认为物理服务器的合并率要达到10:1才满意,你可以通过合理布局虚拟机的部署位置来提高物理服务器整合率,甚至可以超出10:1的比例,但要虚拟机和宿主主机同时达到高性能,难度是相当大的,说到底就是,既要提高物理资源的利用率,又要确保所有虚拟系统都保持非常好的运行状态。
因此,现在应该仔细研究你在使用的虚拟服务产品,并应该开发一些资源分配规则,你也应该深入了解服务器虚拟平台的功能,否则在布局虚拟机时总是很保守,首先从现有服务和应用程序分类开始。
从现有服务和应用程序分类着手
改变虚拟机布局的非常好的方法是从服务器工作负载分类开始,尽量将分类最小化,然后通过对资源的需求进行分组。例如,Web服务器和email服务器主要需要网络资源,数据库服务器主要需要存储,中间件服务器主要需要处理能力,这些都是生产中需要用到的系统,另外你可能还需要测试系统,培训系统和开发系统。
网络服务器通常有三种可能的放置位置:
局域网内
安全区域内——通常是非军事区(DMZ),对于大型组织,往往不止一个DMZ
企业外围网络
当工作负载被虚拟化后,服务器位置变得模糊起来,物理宿主主机上的虚拟机可能一部分在这个区域,另一部分又在另一个区域,一切都是通过宿主服务器上的虚拟网络分隔开的,尽管如此,当你安置虚拟服务器时,务必要记住服务器的位置。
如果你规划得好,完全可以100%虚拟化你的工作负载,虚拟化技术发展到今天,虚拟基础设施几乎可以承担任何工作负载,据VMware公司2007年6月进行了一项调查显示,大部分接受调查的用户都在他们的虚拟化引擎中运行了高级工作负载,如图1所示。
▲图1 VMware用户常见的虚拟工作负载
更多的组织在虚拟机中运行SQL Server,Exchange Server和其它复杂的工作负载,与物理服务器相比,其性能远远超出了预期。因此,如果你说你不能虚拟化某个应用,那么你可能不好找理由,例如,你决定继续在老的32位系统上运行一些应用,因为你还没有准备好,这可能是唯一的借口。我们应该认真思考虚拟化的好处,比如可以在任何硬件系统上载入工作负载,此外,非常易于部署和保护,只需要将磁盘文件拷贝到另一个位置即可。
如果你仍然决定在数据中心保留32位服务器,那为什么不将它们也作为宿主系统呢?虽然微软的Hyper-V和思杰的XenServer的确只能运行在64位系统上,但还有微软的Virtual Server,Sun的xVM VirtualBox或VMware Server可用,这些产品都能运行在32位系统上,可以让旧服务器成为宿主主机,发挥其最大作用。
这样你所有的服务器,不管是32位还是64位,全部都是宿主主机了,你的所有服务都虚拟化了,但有一点务必记住,运行在32位硬件上的系统管理程序是不支持64位硬件的。同时也请记住,所有现代操作系统和应用程序厂商都在转向64位平台,意味着32位硬件的存在时间即将结束。将时间和精力花在这些老旧资源的配置上,与最后得到的结果相比,只不过是在浪费时间。
开发虚拟资源分配规则
当你把数据中心各种服务器工作负载分好类后,接下来就应该思考如何将它们分配给宿主主机,如果准备将20个虚拟机分配一台宿主服务器,那么这20个虚拟机之间不应该存在频繁的资源竞争。
为了优化虚拟机布局,你必须研究工作负载,确定它们需要的过程和资源,以及何时需要它们。例如,如果你的网络中运行了Windows服务,你可以预计它们的运转情况,如图2所示。
▲图2 比较不同工作负载时段的服务器资源需求
从上图我们可以看出:
域控制器在峰值时需要网络和处理器资源,如清晨或午饭后;
文件和打印服务器在非峰值期间需要处理器和网络资源,如上午11点左右或中午;
Web服务器主要集中在网络资源,并需要一个稳定的资源流;
SQL Server和Exchange Server全天需要稳定的资源,主要集中在磁盘和处理器资源;
企业应用程序通常有调度资源的需求,例如,工资单应用程序通常是两个月或两周运行一次。
工作负载不是每时每刻都很繁忙,实际上,有些工作负载处于空转状态,白白消耗了资源,但没有任何人在使用,因此要找出这种工作负载,如果可以永久停掉就清除出去,如果可以定时运行就安排为定时运行。
因为服务器工作负载在不同时间需要不同的资源,因此应该仔细配置工作负载,让它们不要同时争用相同的物理资源 - CPU、内存、网络或存储。你应该在同一宿主服务器上配置不同的虚拟工作负载,应尽量避免配置相同的工作负载。这意味着可以在同一台宿主服务器上运行一个域控制器,一个网络基础设施服务器,一个文件服务器,一或多个Web服务器,甚至加上一个企业应用程序,关键是要保证在不同的时间工作负载需要不同的资源。
▲图3 给宿主主机分配不同的工作负载
与系统管理程序网络层一起工作
系统管理程序让你在每个宿主服务器上可以提供多个虚拟网络,实际上可以提供的网络类型有三种:公共,私有和仅主机。虚拟机可以以各种方式使用这些不同的网络。
每个为最终用户提供服务的虚拟机必须使用一个公共网络接口,因此这些虚拟机必须至少有一个连接,连接到你在宿主服务器上创建的公共虚拟网络接口。
公共网络也允许驻留在不同宿主服务器上的虚拟机相互通信,在每个宿主服务器上创建大量的公共网络为服务提供冗余是个不错的主意。
仅主机虚拟网络适配器用于支持虚拟机内部和虚拟机到主机的通信,如果你需要更新一个虚拟机,你可以通过仅主机通信通道来更新,避免给公共网络接口带来额外的流量,仅主机通信直接在宿主主机和虚拟机间完成,使用的是宿主主机的内部通信通道。
虚拟私有网络适配器也可以用于减少公共网络接口上的流量,当你需要完全隔离虚拟机之间的通信时,将虚拟机连上虚拟私有网络适配器即可。它允许虚拟机内部通信,但不支持和其它设备间的通信,包括和宿主服务器的通信,你可能想使用私有网络支持外围网络系统上的管理通信,以保护它们不受其它类型的通信影响。
作为一种非常好的做法,你应该为每种网络类型准备每个宿主主机,然后将各种不同的虚拟机组件连接到适当的虚拟网络接口卡上。此外,你可以使用这些网络来实现同一宿主主机上虚拟机之间的相互隔离。