虽然基础设施即服务(IaaS)常被称为虚拟数据中心的前身,但是并不是所有的IaaS平台都是构建于虚拟机基础之上的。在你的私有云计算中使用非虚拟机的IaaS模型可能是将其带入一个新水平的一项重要战略——即一个融合IaaS、SaaS以及PaaS的混合服务云计算。
大多数虚拟化软件使用一个管理程序来对服务器进行虚拟机分配,每个虚拟机运行它们自己的底层操作系统、中间件以及应用程序的副本。
当IaaS以这一虚拟化模型为基础时,一个云计算管理者把图像和资源分配至每个虚拟机。因为每个虚拟机都是相互独立的,所以任何可以在本机硬件上运行的应用程序都可以在虚拟机上运行。这是基于虚拟化IaaS的优势。
但是基于虚拟机的IaaS也有着其局限性。随着特定云计算应用程序的开发,已经没有什么理由能够支持虚拟机托管的做法了,因为它们不依赖于虚拟化。面向服务架构(SOA)、多任务以及多线程原理都可以应用于编写运行于一个操作系统而无须操作系统或中间件互相复制的云计算组件。
在提供IaaS的同时,你应当如何创建一个运行特定云计算软件的云计算平台呢?答案是创建容器、虚拟环境或者所谓的”Jails”。鉴于本文的初衷,我们将使用术语“虚拟环境”或其简称VE。
使用虚拟环境构建基于操作系统的IaaS云计算
VE是托管操作系统的分区,该操作系统分隔客户操作系统和应用程序,并允许它们在一个多租户环境中正常运行。与在主机内多任务支持下运行的一般线程或应用程序不同,虽然还达不到在基于管理程序虚拟化中的程度,但是客户VE是互相保护的。
与支持近乎全部操作系统或中间件基于管理程序的虚拟化不同,VE希望所有的客户操作系统都与主机运行的操作系统相同。虽然这降低了成本开销,但也限制了灵活性,这就成为了你仔细选择正确IaaS平台以确保与现有和未来应用程序全方位兼容性的关键。
最流行的VE托管软件平台是支持Linux操作系统的OpenVZ和VServer、BSD Unix操作系统的FreeBSD Jail、Solaris(包括Open Solaris)的Container/Zone以及微软公司Windows Azure支持的虚拟机 Role。Oracle公司和Joyent公司都提供了一个Container/Zone平台的定制商用版。Joyent公司的SmartOS融合了对硬件虚拟化(Xen)和Solaris Zone的支持;该公司将其产品构建于大型数据模型Solaris ZFS基础之上。
基于虚拟环境IaaS模型所面临的难题
人们很容易把基于虚拟化环境的云计算模型当作是最终的云计算战略,至少是IaaS和混合模型云计算服务的。但是,至少这些云计算模型中有一些带来了管理复杂性、云计算安全的关注以及对应用程序状态不断更新的抱怨等问题。
管理复杂性虽然基于虚拟化环境IaaS模型中使用了单一的操作系统,但是其云计算管理可能更为复杂。目前而言,IaaS中还没有一种操作系统级的非虚拟机战略可以取代云计算控制的功能,除非所有的云计算VE都在一台机器上,而这是极不可能的。你仍然需要整合一个可以模仿管理程序的云计算控制软件,例如Eucalyptus、OpenStack、Nebula以及其它开源云计算供应商所提供的云计算控制产品。
因为,大多数用户都构建基于虚拟机的IaaS云计算,所以可能很难找到关于如何执行这一整合任务的详细信息。所以,只能研究现有基于VE IaaS设置的示例,并评估这一变革是否会影响其它操作。
安全性问题。IaaS的一个主要假设就是应用程序是由高效托管虚拟服务器的主机进行托管的,但是它并不总是出现在VE模型中。虚拟机在夜晚提供;他们互相之间有一个很小的互动。
在另一方面,VE引入了应用程序之间对资源使用和性能的通信。但是,这也为VE带来了极易发生的跨应用程序云计算安全问题。事先了解这些安全问题并确保它们不会影响未来的服务机会是非常重要的。
状态不断变化的应用程序。故障模式是如何托管服务中的重中之重。基于VE的云计算所面临的托管操作系统故障风险,可能会导致所有客户操作系统受到影响。
因为,基于虚拟机 IaaS模型中的管理程序有最小的应用功能和最少的逻辑功能,所以发生故障的风险也较低。例如,当角色发生故障时,其相应具有该Windows Azure虚拟机角色的应用程序也不会继续保留下去;虚拟机应用程序应当遵循RESTful的无状态原则,以避免数据丢失。
基于VE的IaaS模型确实有一些缺点,但还没有到完全被否定的严重程度。促进与融合IaaS、PaaS以及SaaSd多服务模型的共存和共同发展,这个好处已足够帮助企业应对它们所面临的挑战了。