将非虚拟机IaaS模式引入您的私有云将成为基础设施走向新高度——混合服务云——的关键策略
大多数虚拟化软件都会借助管理程序将一整台服务器划分为若干套虚拟机,每一套都运行着属于自己的底层OS、中间件及应用程序副本。当IaaS以这类虚拟化模式为基础时,需要由云计算主管为每套虚拟机分配镜像与资源。由于虚拟机之间彼此独立,因此任何一款能够运行于本地硬件上的应用程序都能在虚拟机中正常工作。这正是基于虚拟化的IaaS的强大之处。
但是基于虚拟机的IaaS也存在一些局限。由于云应用的特定开发方式,我们找不到合理的理由将其编写得适合虚拟机托管,因为它们并不依赖于虚拟化技术。面向服务架构(简称SOA)、多任务以及多线程原则虽然能够编写运行在OS之下的云组件,但并不要求该OS或中间件能够复制并为彼此所用。
那么我们该如何为特定云软件创建云平台的同时提供IaaS?答案是打造容器、虚拟环境或所谓“监狱”。在这篇文章中,我们将使用“虚拟环境”这一术语进行描述,或简称为VE。
利用虚拟环境创建基于OS的IaaS云
VE是指主机OS当中用于隔离客户机OS及应用程序的分区,旨在允许二者运行在多租户环境之下。不同主机中运行于多任务支持下的线程或程序,客户机虚拟环境受到彼此保护,当然其效果还达不到基于管理程序的虚拟化环境。相对几乎支持任何OS或中间件的基于管理程序的虚拟化环境,VE希望所有客户机 OS都能与主机OS保持一致。虽然这样能有效降低管理开销,但同时也限制了灵活性、用户还必须精心挑选合适的IaaS平台以确保全部现有及未来可能出现的应用程序之间保持良好的兼容性。
目前最流行的VE托管软件平台有Linux平台上的OpenVZ与VServer、BSD Unix平台上的FreeBSD Jail、Solaris平台(包括Open Solaris)上的 Container/Zone以及由微软Windows Azure所支持的VM Role。甲骨文与Joyent都针对container/zone平台提供了定制化的商业版本。Joyent的SmartOS将硬件虚拟化(即Xen) 与Solaris Zone支持结合了起来,并将其作为大规模数据模式Solaris ZFS的基础。
基于VE的IaaS模式有哪些问题
基于VE的云模式似乎很有角逐终极云策略的潜力,至少在IaaS与混合型云服务方面是如此。不过这些云模式也会提升管理复杂性与云安全处理障碍,并且令与状态相关的应用需要不断更新。
基于VE的IaaS模式确实存在一些不足之处,但还不至于使其丧失竞争资格
管理复杂性。在基于VE的IaaS模式当中,即使只使用一套独立的OS,云管理仍然可能变得更为复杂。没有任何一套针对IaaS的OS级非虚拟机策略能够替代云控制功能,除非所有云VE都能够按现有管理程序(例如由开源云供应商们带来的Eucalyptus、OpenStack、Nebula 等)的模式运转。由于越来越多的用户开始创建基于虚拟机的IaaS云,我们将很难理清头绪、同时操作如此规模的综合性环境。换言之,对现有VE IaaS设置进行分析并评估对其它操作带来的影响几乎无法实现。
安全问题。 IaaS成功运作的前提在于应用程序始终被托管于有效的虚拟服务器当中,而这一点在VE模式中并不能得到保证。虚拟机就像夜间航行的船只,彼此之间只进行最低程序的交互活动。而在另一方面,VE则一直在应用之间以通信方式交流资源使用及性能信息。如此一来,VE很可能面临跨应用程序的云安全问题。重要的是我们要预先了解这些安全问题,并确保它们不会对未来的服务计划产生影响。
状态化应用程序。失效模式在任何托管服务当中都非常值得关注。基于VE的云承受主机OS失效的风险,一旦出现状况所有客户机OS也将无法运行。由于基于虚拟机的IaaS模式拥有管理程序,能够将功能与逻辑关系降至最低限度,因此其遭受故障的可能性也更低。举例来说,Windows Azure虚拟机角色的应用程序数据在角色失效时无法保持连续性;但虚拟机应用程序则可以依据RESTful无状态原则避免数据丢失。
基于VE的IaaS模式确实存在一些不足之处,但还不至于使其丧失竞争资格。而其优势也是显而易见的——通过多服务模式促进IaaS、平台即服务与软件即服务三者的共存及协同演变——这将有助于企业顺利解决运营过程中面临的技术挑战。