B S架构 服务器虚拟化,基于KVM的B/S架构虚拟化管理系统
云计算的提出为信息技术学术界和产业界的发展提供了一个全新的思路。虚拟化作为云计算Iaas层的关键技术,近年来也得到了迅速发展。20世纪60年代,IBM就开始研究虚拟化技术,使得大型机的资源能得被多用户使用。经过几十年的发展,虚拟化技术已经日渐成熟,诞生了如VMware,virtual PC,Xen和KVM(kernel based virtualmachine)等一批成熟的虚拟化产品。与其他虚拟化
云计算的提出为信息技术学术界和产业界的发展提供了一个全新的思路。虚拟化作为云计算Iaas层的关键技术,近年来也得到了迅速发展。20世纪60年代,IBM就开始研究虚拟化技术,使得大型机的资源能得被多用户使用。经过几十年的发展,虚拟化技术已经日渐成熟,诞生了如VMware,virtual PC,Xen和KVM(kernel based virtualmachine)等一批成熟的虚拟化产品。与其他虚拟化产品相比,KvM的最大优势是完全开源。KVM是基于内核的完全虚拟化,在与其他虚拟化产品效率对比中表现出色,但是其管理系统仍然只有C/S架构的,C/S架构本身的缺点造成了系统资源的浪费。而且用户进行管理工作之前,需要预先安装管理软件;而且不同的管理软件对操作系统和硬件资源还有不同的要求。相比起来,B/S模式的管理系统就灵活很多,只要有浏览器的终端都可以用来进行管理工作,提高了管理效率,节省了客户端资源占用。
本文实现了一个基于KVM虚拟化产品的B/S架构的虚拟化管理系统。通过调用KVM的libvirt开发接口,利用J2EE技术,系统管理员可在任何地方通过浏览器登陆系统,进行虚拟机和虚拟存储的管理工作。最后通过实际测试表明B/S架构的优越性。
1.系统组成部分
基于KVM的虚拟化管理系统,主要包括客户端、web服务器、虚拟化服务器集群和共享存储服务器4个模块。其中客户端是具有浏览器的上网设备,操作系统可以是Linux、windows甚至嵌入式操作系统;web服务器上安装web容器tomcat,操作系统采用“nux或windows,将完成管理工作的J2EE工程放在web容器里;虚拟化服务器集群上统一安装Linux操作系统,KVlⅥ虚拟化软件和lib—virt接口,并与web服务器建立ssh无密码连接;共享存储服务器是一个磁盘阵列,安装freenas后通过IP网络向虚拟化集群提供数据存储服务。
用户通过jsp页面登陆后进行相关操作,操作参数传递给web服务器,web服务器与管理目标服务器建立ssh连接,通过调用libvirt接口进行虚拟化集群的管理工作,并将操作结果通过jsp页面呈现给用户。用户还可以通过调用spice插件,用图形界面的方式查看虚拟机的工作情况。整个系统结构如图1所示。
图1 系统架构
1.1 KVM(Kernel based virtual machine)
KVM即基于内核的虚拟化,依赖于“Linux内核,其性能优越,接近单机操作系统。由于其优越的性能和开源性,得到业界的一致认可并在近年来取得很大的发展。KVM使用软件模拟的方式实现完全虚拟化,通过将客户操作系统的I/0指令提交给宿主操作系统(即Linux操作系统)上的QEMU,QEMU将操作指令转换为对宿主机的I/0操作这种方式来实现虚拟化,然后宿主操作系统调用驱动程序访问硬件。通过这种方式对硬件进行了模拟,实现起来比较简洁,而且效率较高|。
1.2 SPICE(simple procotol for independent computing environment)
spice是一个开源的远程桌面协议,可以用于在服务器、远程计算机和瘦客户端等设备上部署虚拟桌面,与微软的Remote Desktop Protocol相似,支持windows和Linux操作系统。
spice包括两部分:spice server和spice client。通过在虚拟机里安装spice Server进行相应的配置后,就可以在客户端通过spice client插件远程链接该虚拟机,以图形界面形式进行操作。
1.3 Libvirt接口
Libvirt是一套开源的、用C语言开发的支持虚拟化函数库编程接口,用一种单一方式管理不同的虚拟化提供方式和管理工具,适用于主流虚拟化工具包括Xen、KVM和vmware等,支持与Java、python、C/C++等开发语言的绑定。Linux下常用的虚拟化管理工具Virt-manager和virt—install都是基于libvirt开发。
1.4 Freenas
Freenas是一款免费的NAS(网络附加存储)服务器软件,它能将普通PC或服务器的硬盘资源变成网络存储服务器。该软件基于FreeBSD,Samba及PHP,支持FTP/NFS/RSYNC/CIFS/AFP/UNISON/SSH协议及web界面的设定工具。Freems还可以被安装在移动存储设备中,使用方便灵活,在组建网络存储服务器方面应用广泛。
2.J2EE工程架构
系统实现的核心是完成管理工作并和用户交互的J2EE工程。J2EE工程架构如图2所示。
图2 J2EE工程架构
客户层实现用户和系统的交互,用户通过Web浏览器登录系统,并通过页面提交操作参数。浏览器负责用户请求接收和服务器返回信息的显示。
struts控制器负责接收和处理用户请求,并将相应请求转发到业务逻辑层,然后从业务逻辑层接收结果并返回给客户层进行显示。
业务逻辑层是J2EE工程的核心,负责接收stmts传递的用户请求,调用底层libvirt API完成相应的操作,并将处理结果经Web层展现给用户。
将管理虚拟化的J2EE工程放在中心服务器(即web服务器)的tomcat容器里,这台web服务器应该与虚拟化集群在同一局域网中以保证连接速度。用户通过前台jsp页面登陆管理系统,web服务器接收到用户的请求参数后,与管理目标服务器通过ssh建立连接,用户即可进行相关的管理操作。在web服务器接收到用户管理操作参数后,将参数转换为libvirt接口认可的xml格式文件的参数,然后发送给管理目标服务器,目标服务器接收到参数后调用Libvirt接口,执行相关操作。具体实现过程如下:
用户提交请求参数:用户登录成功后,可以进行如下四方面管理:用户管理、存储磁盘、虚拟机管理和集群管理。通过用户管理可以修改用户登录密码,定期修改密码可以增强安全性;通过存储管理可以添加或删除资源池,查看、删除或者新建虚拟磁盘;通过虚拟机管理,可以查
看和修改虚拟机信息,并通过spice查看虚拟机图形界面;集群管理可以查看集群中的物理机信息,并可以将虚拟机迁移到另一台物理机上。用户操作通过表单形式提交给Web服务器。
Web服务器转换请求参数并发送给目标服务器:web服务器通过servIet接收到用户请求参数,转换为字符串,然后将参数组合为ml格式的libvirt配置文件,然后与目标服务器建立ssh连接,通过配置文件将需要进行的操作传递给目标服务器。
目标服务器进行相关管理操作并向web服务器返回结果:目标服务器收到配置文件参数后,调用libvirt接口将操作参数传人,进行相应的操作。然后将操作结果返回给Web服务器。
Web服务器将操作结果返回给用户:web服务器接收到返回结果后,进行相应的封装后传递给前台页面,显示给用户。如果用户的请求是图形界面查看虚拟机,则Web服务器将虚拟机的参数传递给客户端后,客户端与目标服务器直接建立连接。
3.系统设计功能
用户登录后可以进行如下四方面管理工作:用户管理、存储管理、虚拟机管理和集群管理。系统功能框图如图3所示。
图3 系统功能结构
3.1用户管理
用户名和密码通过加密后写在配置文件里,用户提交登录请求后web服务器读取配置文件并进行登录验证,验证通过即可进行权限内的相关管理操作。用户可以定期修改密码,以增强安全性。超级用户可以对用户进行管理,包括添加、删除用户,为用户分配权限等,但是超级用户本身不能对虚拟化集群直接进行管理。通过这种权限分离的方式提高系统的安全性。
3.2虚拟存储管理
创建虚拟磁盘之前需要先创建资源池,然后在资源池中创建虚拟磁盘。虚拟磁盘就是提供给虚拟机用的存储空间,是位于共享存储之上的虚拟逻辑磁盘空间。用户登录之后,存储管理界面提供的管理操作包括:新建和删除资源池,新建和删除虚拟磁盘。新建和删除虚拟磁盘的时候,将虚拟磁盘名作为参数传递给web服务器,创建虚拟磁盘时提交表单包括磁盘名称和磁盘大小。表单提交给servlet进行处理。
3.3虚拟机管理
创建虚拟机之后,KVM会给每个虚拟机分配一个UUD(universally unique identifier),用于唯一标识该虚拟机。KVM每次启动的时候,都会为每个虚拟机分配一个ID。通过UUID或者ID都可以唯一找到该虚拟机。虚拟机管理进行的操作包括:新建和删除虚拟机,查看和修改虚拟机配置信息,启动、挂起和关闭虚拟机,导出虚拟机模板,从模板创建虚拟机,显示虚拟机界面(spice)。本系统将虚拟机的ID作为参数进行传递。首先用户将操作指令和虚拟机ID传递给web服务器,web服务器封装后传递给目标服务器,然后接受目标服务器执行后的返回结果,再传递给用户显示。
在调用spice通过图形界面方式查看虚拟机中,首先检测spice插件是否正确安装,如果没有正确安装,提示用户下载并安装。如果正确安装,在拦截到查看指令后,从网页启动spice插件。并将虚拟机参数传递给spice,输入密码即可查看虚拟机的界面。
3.4 集嚣管理
集群管理包括物理主机管理和集群调度。物理机管理包括向虚拟化集群添加和删除物理机,通过SNMP(simplenetwork management protocol)协议收集物理机信息,维护活动物理机列表;集群调度采用虚拟机迁移来实现,采用中心任务调度算法,根据管理节点服务器(即Web服务器)通过SNⅧ协议收集到的主机状态信息,在物理机负载过高时,将其上的部分虚拟机迁移到其他物理机上,也可以将负载量很小的物理机上的虚拟机迁移到其他主机上,然后关闭该物理机以节省电能。
更多推荐
所有评论(0)