虚拟化环境下快速部署方法
技术领域
本发明涉及一种虚拟化环境下快速部署方法。
背景技术
术语解释:
虚拟化:虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟服务器:虚拟服务器(Virtual server)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。运用虚拟化,在一个平台上同时运行的多个计算机系统就叫虚拟服务器。
Xen:Xen是一个开源虚拟化产品。Xen使用一个叫做hypervisor的软件层来调节对真实硬件的访问,实现在一台单独的计算机上运行多个子操作系统(也就是多个虚拟机)。
节点服务器:在虚拟化平台中,用于提供虚拟化能力的服务器,是用来创建虚拟服务器的服务器。
管理服务器:在中小型虚拟化平台中,存在一台服务器提供管理功能,管理其他的节点服务器以及服务器上的虚拟机,并提供镜像发布和光盘发布的功能。
管理网络:用于连接管理服务器和节点服务器,主要功能进行虚拟服务器管理、节点服务器管理以及镜像发布的网络,该网络属于虚拟化平台的私有网络。
下面再介绍Xen及虚拟化技术背景
虚拟化:虚拟计算机的概念最早由IBM公司在上世纪六七十年代提出,并将其运用于VM/370系统中以共享昂贵的大型机系统(Main Frame)。之后的发展起起伏伏,一度由于分时操作系统的出现而处于停滞状态。上世纪九十年代随着JAVA虚拟机的推出,尤其是之后Vmware公司Vmware ESX server和Vmware workstation虚拟机的推出,使对虚拟机技术的研究再次成为处理器设计人员、软件设计人员、服务器设计人员和网络安全设计人员的热门研究课题。虚拟化技术通过在现有平台(机器)上添加一层薄的虚拟机监控程序(Virtual Machine Monitor,简称VMM)软件而实现对系统的虚拟化,如虚拟处理器,虚拟内存管理器(MMU)和虚拟I/O系统等。虚拟机监控程序又被称之为监管程序(Hypervisor)。从应用程序的角度看,程序运行在虚拟机上同运行在其对应的实体计算机上一样。虚拟机技术使得一台物理计算机可以生成多个不同的虚拟机分别运行多个不同或相同的操作系统。虚拟机技术通过将不同的应用运行在不同的虚拟机上,可以避免不同应用程序之间的互相干扰,例如一个应用的崩溃不会影响到其它的应用等。这种由虚拟机技术实现的各个应用之间的完全隔离在服务器领域具有尤其重要的意义,同时虚拟机技术也可以使得企业,高校或研究所 可以在不必购置大量物理计算机的情况下实现大规模的计算机网络以从事生产及研究,例如网络及网络应用研究,操作系统内核(Kernel)软件的开发和用户操作系统的开发等。
xen虚拟化简介:使一个物理平台同时运行多个客户机操作系统VMM抽象的虚拟机的指令集Instruction Set Architecture简称ISA)可以等同于它运行的物理机器,也可以作些微修改。当虚拟的指令集与物理的指令集相同时,该虚拟机可以运行没有任何修改的操作系统;而当两者不完全相同时,客户机的操作系统就必须在源代码级或二进制代码级作相应修改。根据是否需要修改客户机操作系统的源代码,虚拟化技术又可以分为(1)泛虚拟化(Paravirtualization)和(2)完全虚拟化(Full-virtualization)。完全虚拟化由于不需要修改客户机操作系统,因此具有很好的兼容性和同时支持异种操作系统或不同版本操作系统的能力。相反泛虚拟化技术则通常具有比完全虚拟化技术更好的性能。泛虚拟化技术在最早的IBM VM/370上就已经使用,但它的使用仅仅是为了支持传统的操作系统,因此被限制在很小的范围。美国华盛顿大学计算机科学与工程系的Steven D.Gribble领导的Denali项目和英国剑桥大学计算机实验室的Ian Pratt和KeirFraster领导的Xen项目组实现了X86/PC上的泛虚拟化,使泛虚拟化技术重新成为最热门的虚拟化技术之一。随着Intel
公司在2005年初推出基于处理器硬件的虚拟化技术(Intel
Virtualization Technology简称Intel
VT技术),支持未经修改的操作系统的完全虚拟化技术同泛虚拟化技术一样成为当今虚拟化领域中的两个主要研究方向。
XEN是一个基于开源(Open Source)代码的系统虚拟机,最初基于32位X86体系结构而设计开发,支持同时运行多至约100个虚拟机。XEN引入的管理接口(Hypercalls)和事件(Events)机制,以及预先定义的虚拟机和VMM之间的共享内存数据交换机制都使得新的客户机体系架构(XEN虚拟机架构)具有更高的总体性能,但同时也就注定了它必须修改客户机操作系统源代码。
Xen将客户机称之为虚拟域(Domain),其中0号虚拟域为服务域作为监控程序的扩展提供系统的管理服务。监控程序拥有部分硬件IO资源如定时器设备、中断设备PIC/Local APIC/IO APIC等,其他虚拟域也可以拥有部分的IO资源如硬盘网卡等。拥有物理设备的虚拟域称为隔离设备驱动域(Isolated Driver Domain)或简称设备驱动域(Driver Domain)。普通虚拟域只有虚拟设备而不拥有直接的硬件设备资源访问权。XEN项目也将Hypervisor称为XEN。
仿真设备:在硬件虚拟机中,为实现物理设备的共享,客户机的I/O访问(含内存映像I/O-Memory Mapped IO)必须被Xen捕获,由设备模型(Device Model)进行仿真。硬件虚拟化技术提供了对客户机I/O操作的捕获支持,而对于内存映像I/O,则通过页缺失(Page fault)被Xen捕获。但是Xen监控程序本身并没有驱动程序去直接访问这些设备,因此这些I/O访问的仿真最终由Xen交由虚拟域0完成。从客户机操作系统的角度看,仿真设备同真实的物理设备并没有区别。位于Dom0的设备模型(Device Model)向硬件虚拟机提供了一个虚拟的PC平台(虚拟设备)。每一个硬件虚拟机都可以看到一个完整的虚拟PC平台,包括键盘、鼠标、实时时钟、可编程定时器8254)、可编程中断控制器(8259)、CMOS、软盘、IDE硬盘、CDROM和VGA图形卡等。
NBD介绍:网络块设备(Network Block Device)提供一个透明操纵位于远程机器上的块设备(这里特指硬盘)的能力,能够象访问本地块设备一样访问远程块设备。注意:它和网络文件系统(如NFS)是不同的,文件系统通常是建立在块设备上的,也就是说NBD比网络文件系统更底层,因此可以在它上面建立任何文件系统,如ext2/exit3/reiserfs等。
虚拟化平台拓扑结构:系统平台分为3层,最接近用户的为业务层,负责与用户的交互,用户数据、财务等数据的处理展示,中间层为虚拟化管理层,也就是管理服务器所在的层次,主要处理虚拟服务器、物理服务器以及镜像分发等事物,最底层为虚拟化层,是节点服务器所在的层次,主要提供物理的虚拟的资源。
定制虚拟化镜像:部署虚拟服务器是以虚拟化镜像为磁盘进行启动部署的,虚拟化镜像中承载着操作系统以及之上的应用和应用数据。在定制虚拟服务器的虚拟化镜像是已经在镜像中的操作系统中做了一些通用的配置,如启动的时候都会检测光驱中是否有指定名称的可运行脚本,如果有则运行该脚本。
在提供虚拟化服务时,需要考虑到用户对虚拟服务器的需求的快速满足,需要提供快速对裸物理资源按照用户的需求进行配置。此处的裸物理资源指的是没有安装操作系统的虚拟机,对于虚拟机是一个物理资源的集合。通过手工完成一个虚拟服务器的资源收集、操作系统部署以及基本系统配置,需要一个运维人员投入2个小时以上的时间来完成,不仅用户需要等待的周期较长且增加人力成本。
部署虚拟服务器是以虚拟化镜像为磁盘进行启动部署的,虚拟化镜像中承载着操作系统以及之上的应用和应用数据。在定制虚拟服务器的虚拟化镜像是已经在镜像中的操作系统中做了一些通用的配置,如启动的时候都会检测光驱中是否有指定名称的可运行脚本,如果有则运行该脚本。现在的通用方法是通过制作定制的虚拟镜像,虚拟服务器通过定制的虚拟镜像提供模板应用,但是对于用户名密码等信息,需要使用默认的,对于网络等信息需要通过管理员登录手动配置,或者通过DHCP服务器进行分配。
目前对于虚拟化的快速开通提供的系统密码是默认密码,这样在开通虚拟服务器后到用户登录修改密码之间,虚拟服务器存在管理盲区。也有由系统管理员在虚拟服务器启动后直接登录,更改密码,然后通过业务平台将密码发送给用户,这样大大增加了业务响应速度和人力成本。
通常使用的方法是在linux系统提供ssh登录方式,这是一种在资源调度系统(资源调度系统采用虚拟化平台拓扑结构,位于每一个独立的虚拟化数据中心管理系统上面,可以对全国所有数据中心资源进行调配调度的系统。)提供密码的方式,而windows使用远程桌面,也是在资源调度系统提供密码。这样的方式缺乏安全性的保证。
发明内容
本发明的目的是提供一种虚拟化环境下快速部署方法,它能够在虚拟化环境下实现对虚拟机的快速开通、快速配置、安全可靠的快速交付。
本发明采用的技术解决方案为:
一种虚拟化环境下快速部署方法,其特征在于包括以下步骤:
(1)在物理服务器中保留空闲的操作系统的镜像副本;
(2)资源调度系统找到可用的资源的管理服务器,并将虚拟服务器开通所必备的系统信息发送给该管理服务器,该管理服务器根据得到的系统信息以及操作系统的种类,选择初始化脚本并创建配置文件,然后将配置文件以及初始化脚本创建的光盘镜像文件放到指定的目录,管理服务器通过网络块设备的服务机制nbd将该光盘镜像文件通过管理网络映射到节点服务器的设备空间中;
(3)管理服务器通过向节点服务器的系统虚拟机发送指令创建虚拟机,将定制的所述操作系统的镜像副本虚拟化为虚拟服务器的磁盘,将nbd映射到节点服务器的设备模拟为虚拟服务器的光驱,同时发起虚拟服务器启动指令;
(4)虚拟服务器启动以后,首先在系统定制启动脚本中寻找光驱上的指定名称的启动脚本程序,然后以光驱上的配置文件为参数运行启动脚本;
(5)与此同时,资源调度系统根据用户提供的公钥对用户名密码进行加密,加密后的密文提交到前台用户自服务平台,用户将密文通过已有的私钥进行解密,然后使用通过解密信息获取明文信息进行登录。
本发明的优点在于:
1.实现了对于虚拟服务器的用户名、密码的自动化部署,传统方法提供的是一个默认的用户名密码,这种方式存在用户登录虚拟服务器前的安全真空期。或者通过运维人员修改用户名密码,这样会增加系统维护的人力成本。
2.实现了对于网络ip地址、dns地址、网关地址。在传统方法中实现功能通过DHCP服务来完成。但是通过dhcp服务配置需要在网络中增加dhcp服务,由于资源调度系统需要管理全国数十个虚拟数据中心,因而也需要管理数十个dhcp服务,增加了管理复杂度。
3.用户密码交付方式,传统方式通过明文来完成对虚拟服务器信息发布到前端用户自服务平台,或者通过有业务平台创建密钥对来进行密钥的分配。本发明方法通过用户生成密钥对进行分配,用户密钥的管理更加安全可靠。
具体实施方式
本发明涉及一种虚拟化环境下快速部署方法,包括以下步骤:
(1)在物理服务器中保留空闲的操作系统的镜像副本;
(2)资源调度系统找到可用的资源的管理服务器,并将虚拟服务器开通所必备的系统信息发送给该管理服务器,该管理服务器根据得到的系统信息以及操作系统的种类,选择初始化脚本并创建配置文件,然后将配置文件以及初始化脚本创建的iso文件(光盘镜像文件)放到指定的目录,管理服务器通过nbd服务机制(网络块设备的服务机制)将该iso文件通过管理网络映射到节点服务器的设备空间中;
(3)管理服务器通过向节点服务器的系统虚拟机发送指令创建虚拟机,将定制的所述操作系统的镜像副本虚拟化为虚拟服务器的磁盘,将nbd映射到节点服务器的设备模拟为虚拟服务器的光驱,同时发起虚拟服务器启动指令;
(4)虚拟服务器启动以后,首先在系统定制启动脚本中寻找光驱上的指定名称的启动脚本程序,然后以光驱上的配置文件为参数运行启动脚本;
(5)与此同时,资源调度系统根据用户提供的公钥对用户名密码进行加密,加密后的密文 提交到前台用户自服务平台,用户将密文通过已有的私钥进行解密,然后使用通过解密信息获取明文信息进行登录。
本发明通过预拷贝的方法,在物理服务器中保留空闲的操作系统镜像副本,可以有效节省虚拟化镜像倒数的时间。资源调度系统通过对自有资源进行调度,找到有可用的资源的管理服务器,并将虚拟服务器开通所必备的系统信息(如用户名、密码、主机名、ip地址、DNS服务地址等等)发送给该管理服务器,该管理服务器根据得到的系统信息以及操作系统的种类,选择初始化脚本并创建配置文件。然后将配置文件以及初始化脚本创建iso文件放到指定的目录,管理服务器通过nbd服务机制将iso通过管理网络映射到节点服务器的设备空间中。
管理服务器通过向节点服务器的xen发送指令创建虚拟机,将定制操作系统镜像虚拟化为虚拟服务器的磁盘,将nbd映射到节点服务器的设备模拟为虚拟服务器的光驱。虚拟服务器启动以后,首先会在系统定制启动脚本中寻找光驱上的指定名称的启动脚本程序,并以光驱上的配置文件为参数运行启动脚本。这个启动脚本是针对操作系统版本所定制的,可以根据配置文件完成对系统的自动化配置。
与此同时,资源调度系统会根据用户提供的公钥将用户名密码等信息提交到前台用户自服务平台,用户可以再将密文通过已有的私钥进行解密,然后使用通过解密信息获取明文用户名、密码、ip、dns、网关等信息。如果用户使用的是windows系列的操作系统,可以通过密码登录远程桌面,如果给用户提供的是Linux系列操作系统,用户可以使用自己的私有密钥进行登录,这种情况下,由于定制系统只保留了密钥的登录接口,所以相当于用户的系统帐户信息对于运营商也是未知的,增强了安全性。
在节点操作系统相对空闲的时候,从管理服务器导入已用的虚拟化镜像以补充节点服务器上的操作系统镜像副本,以便下次使用。如果在部署虚拟服务器时节点服务器上没有虚拟镜像副本,则需要当即导入一个新的副本。虽然也能自动化部署,但是这样会增加虚拟服务器部署的时间。
举例说明:
管理服务器操作系统CentOS5.2
节点服务器操作系统Sles 10 sp1
虚拟服务器操作系统CentOS5.2
虚拟服务器自动化配置信息:用户名、密码、公钥、ip地址、网关、DNS。
用到的工具:
Mkisofs 制作镜像工具(第三方工具)
Nbdserver 启动nbd服务工具(第三方工具)
Nbdclient 连接nbd服务的工具(第三方工具)
Qprovision.sh 系统启动自动化配置脚本(自定义脚本程序)
Congfig 提供配置信息文件。
准备:定制虚拟化镜像,定制内容需要包含在系统启动时检查光驱的存在状态,如果存在则将其挂在到/mnt/cdrom目录下。预拷贝机制下,完成虚拟化镜像到节点服务器的导入。
步骤1:用户下载密钥生成器,生成密钥对,保存密钥对。提交虚拟服务器请求到业务平台,同时上传密钥对中的公有密钥。
步骤2:业务平台根据资源调配策略,选择合适的管理服务器,并将公有密钥、ip地址、用户名、密码、网关、DNS地址发送给管理服务器。
步骤3:管理系统收到配置信息后,根据ip地址、用户名、密码、网关、DNS地址生成配置文件Congfig,然后将文件Config、Qprovision.sh和公有密钥文件用mkisofs工具生成iso文件。然后以该iso文件为参数启动nbdserver,提供nbd服务。同时发起虚拟机启动指令。
步骤4:节点服务器接收到虚拟机启动指令,根据虚拟机配置文件中的配置信息,启动nbdclient连接相应的nbd服务,此时在节点服务器上产生/dev/nbdx设备(x为1-32的整数)。然后xen根据虚拟服务器配置文件启动虚拟机,并将前面生成的/dev/nbdx映射为虚拟服务器的光驱,前面提到的定制的虚拟化镜像映射为虚拟服务器的磁盘。虚拟服务器的操作系统启动后,自动挂载光驱,执行QProvision.sh程序,该程序根据Config完成虚拟服务器操作系统的配置。
步骤5:虚拟服务器向管理服务器发送启动完毕的报告,管理服务器报告给资源调度系统,资源调度系统将虚拟服务器的私有信息使用用户提供的公有密钥加密。
步骤6:用户获取加密的虚拟服务器系统信息,用私有密钥解密,然后可以根据解密后的信息,登录虚拟服务器。至此完成一次用户的请求。
整个过程在运营商的角度完全自动化,无需运维人员参与,且整个过程不超过5分钟。