这一篇我们一起了解一下基于虚拟化的服务部署方案:
方案3:基于虚拟化的服务部署
1、部署方式
在使用分布式部署方案的过程中,会遇到一系列难以解决的问题。一种有趣的想法是,能不能把这些服务部署到虚拟机上。通过虚拟机管理软件来管理。表面上看,部署到虚拟机上,与部署到物理机上没有什么差别,并且还需要考虑性能损失的问题(虚拟机与同样配置的物理机,性能方面会有一定的损失)。
设计一个系统的时候,需要考虑的因素很多。比如在这个系统中,要考虑的因素有:性能、安全、可靠性、扩展难度、部署难度以及可维护性等。需要综合这些因素来设计这样一个系统(很多ERP系统选择java开发,基本上也是基于性能、可维护性、可移植性和软件设计综合考虑。程序设计语言的发展路线也是逐渐走这样综合考虑的趋势。)值得考虑的是,如果把服务部署到虚拟机中,带来的便利性是否胜过性能上的损失,以及性能上的损失是否是在可接受的范围内。在这种思路下,可以使用方案3:利用虚拟机架构的系统,见下图:
图中,KVM(Kernel Based Virtual Machine)表示运行于Linux平台上的虚拟机管理软件。在KVM上面,运行着三台虚拟机,分别部署着http、ftp和MySQL3个服务。采用这种方式的优点。
-安全:采用虚拟机的架构,除了保证物理服务器的安全之外,还需要保证虚拟机的安全。物理机与虚拟机,以及虚拟机与虚拟机之间,可以通过设置不同的网络、防火墙策略进行隔离,避免相互感染。
-可靠性:采用虚拟机架构的情况下,可靠性与分布式方案略有不同。分布式方案中需要添加物理机,在此方案中,只需要添加虚拟机。
-扩展:扩展的时候,首先是在资源空闲的物理机上建立虚拟机。当且仅当物理机资源不够时,才需要添加物理机资源。创建虚拟机的方式是将现有资源充分利用。
-部署:虚拟机的部署远比物理机的部署简单。添加一个新的虚拟机,最简单的办法是复制一个虚拟机磁盘模板。维护人员只需要通过虚拟机软件便可以部署虚拟机(可以免掉那些重复操作系统安装、软件配置的过程)。
-维护:把服务设于此虚拟机上之后,物理机的维护可以交给少量专业的机房管理员。整个系统的管理员可以专注于虚拟机的管理。
由此,可以看出,基于虚拟机的架构主要是把系统部署在虚拟机上。那么整个系统并不直接依赖于底层物理服务器,而是直接依赖于虚拟机。因此,整个系统可以分为如下图中3个层次。
图中可以看出,系统依赖于虚拟机,虚拟机依赖于底层硬件。整个系统分为了3层,每层都有相应的管理人员或工具进行管理和维护,职能更单一。网站管理员可以从繁琐的物理服务器管理中解脱出来,把精力放在网站功能及虚拟机管理上。
2、存在的问题
方案3已经能够解决很多问题了。但是当规模上去之后,也会面临一些问题。
如果采用人工管理方式,机器少的时候可以轻松搞定,但是,类似大型互联网应用往往有上千万台虚拟机,那时候采用人工管理方式就不合适了。此外,除了负责虚拟机创建之外,还需要处理虚拟机的网络、磁盘、内存等等的管理,人工来处理这些事务非常繁琐且容易出错。
总结:
如果觉得以上这些理论不容易理解,那么还是回到生活中:一个人想开一个超市,采购、运货、卖货、收银都由不同的人去完成,然后增加两个部门,一个是人事部门(对应维护人员),一个是培训部门(对应虚拟机管理软件)。
在平时,人事部门负责人员管理、招聘和医疗等事务(对应物理服务器的维护)。培训部门负责将人事部门招聘来的人培训成具备某种技能的员工(对应虚拟机管理软件的功能)。
当业务扩张的时候,首先是向培训部门要人,如果培训部门有人可以培训,则把这些人培训为所需要的员工。如果培训部门没有人可供培训,那么只能向人事部门要人。人事部门会寻找相应的人,并提供给培训部门。
这样的结构划分,感觉还是很不错的,但是还有一个疑问就是人事部门与培训部门又该如何运作,如何管理呢?
下一篇我们了解云计算的解决方案…