基于虚拟化技术的云服务平台的构建与管理

2016-11-02 23:36何国民王代君
电脑知识与技术 2016年23期
关键词:私有云虚拟化技术云计算

何国民 王代君

摘要:本文主要采用云计算虚拟化技术在开放式操作系统Linux下,就虚拟化平台基础服务端、虚拟化连接管理中间件和Web管理平台这三个主要组成部分的设计和配置,设计和构建一个针对高校实验室私有云服务平台,能动态分配实验室计算资源,高效率满足实验教学、开发、测试、管理等不同需求。

关键词:云计算;虚拟化技术;Linux;私有云

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)23-0199-02

云计算是计算机科学和互联网技术发展的产物,也是引领未来信息产业创新的关键战略性技术和手段。它将带来工作方式和商业模式的根本性改变,对我国发展高新技术产业具有重要的战略意义。

虚拟化技术是实现云计算的关键技术,它是一种调配计算资源的方法,它将不同层面——硬件、软件、数据、网络、存储——隔离开来。它的运行完全像一台物理服务器一样,并在同一台物理服务器上运行多台虚拟机,可以节省硬件、存储空间以及能耗。近年来,云计算技术发展如火如荼,国外的亚马逊AWS云计算服务平台、微软的Microsoft Azure云以及Google的Cloud Platform引领着云计算技术的先锋和浪潮。国内的各个互联网企业也纷纷推出各自的云服务,如阿里巴巴的阿里云,新浪的SAE平台,百度的BAE平台等。在计算机业界,云计算可以说是现阶段最热门的技术之一。整个社会已经进入到了互联网+时代。

本文是基于Linux内核虚拟化技术和Libvirt开源管理中间件以及Python语言开发,实现了在实验室机房环境中搭建私有云计算服务平台,从而实现服务器的硬件虚拟化,提供多台虚拟机给不同用户以运行不同的服务,给实验教学、资源的共享等带来了极为方便的应用场景。

1 虚拟化云服务器平台的主要功能设计

云服务平台的虚拟化环境构建采用基于Linux内核的QEMU-KVM虚拟化技术,服务平台的Web管理端使用Python编程语言和Django框架来开发,对于实验室云计算服务平台环境的搭建,主要完成以下的功能:

1)创建虚拟机,在创建时分配虚拟机的CPU、内存、磁盘、网络配置。

2)虚拟机的启动与关闭。在虚拟机系统出错无法正常关机的时候,能够对虚拟机的进行强制关闭。

3)虚拟机克隆,通过虚拟机克隆,能够快速的复制创建多个一样的虚拟机,方便部署各种软件环境。

4)远程连接虚拟机,通过远程桌面显示虚拟机,能够如本地主机一样正常地用键盘和鼠标操作虚拟机,从而实现真正的“云计算”模式。

5)主机与虚拟机的资源占用监控,能实时显示虚拟机占用的物理主机的CPU、内存、磁盘等资源信息,并显示物理主机的总使用量。

2 采用libvirt虚拟化管理中间套件关键技术,实现云计算平台虚拟机管理

libvirt为编程人员提供了一组较为稳定的接口,有了libvirt管理中间套件,令在云服务管理平台开发中,实现物理宿主机与虚拟客户机、虚拟客户机相互之间的通信变得更加容易。并且它也集成了为远程连接客户机管理提供的加密和认证等安全服务。有了libvirt做为中间套件,对于上层用户空间的管理工具来说,底层的KVM是完全隔绝的,因为libvirt提供了多数KVM底层调用,封装了统一的、稳定的API给上层管理程序。

libvirt的管理功能可以分为以下几个主要部分:

1)远程节点的管理。物理节点上运行libvirtd这个deamon,就能够令远程的管理工具连接上此节点进行管理。

2)域的管理。包括对节点上的域的各个生命周期的管理。如虚拟机的启动与关闭。

3)存储的管理。主机运行libvirtd这个deamon,用libvirt的接口就可以对多种不同的存储进行管理,如建立各种格式的虚拟机镜像管理。

4)网络的管理。主机运行libvirtd这个守护进程,用libvirt的接口就能够对逻辑网络接口或物理网络接口进行管理。如分配虚拟网络接口给客户机等。

实际上,libvirt 本身并不是一种工具, libvirt 只是一种抽象的构建概念,它主要用处就是给管理虚拟机提供稳定的、高效的应用程序接口。libvirt中将KVM的管理抽象成5个基本的部分,分别为连接、虚拟机、存储池、网络池和存储卷,并通过XML来描述这几个对象。通过libvirt客户端发调用API时,将调用的各对象的参数保存在XML文件,再发送给libvirt 进行处理。

要操作虚拟机管理,只有建立了与 KVM的连接之后才能进行,所以调用其他所有API的前提条件是连接KVM的API。建立一个连接,可以调用virConnectOpen 函数实现,调用之后,将得到一个virConnectPtr对象的返回值,如果该值返回成功,即表示到KVM的连接建立成功。

要使用libvirt API进行虚拟化管理,必须先建立到KVM的连接,有了连接,才能管理节点、域、存储、网络等虚拟化中的要素。libvirt的连接,可以解释为客户端/服务器(C/S)的构架模式,一个服务器端运行着KVM,一个客户端去连接服务器端的KVM,然后进行相应的虚拟化管理。

3 通过libvirt管理KVM,实现对虚拟机的管理

1)创建虚拟机

创建虚拟机实际上就是创建libvirt的XML格式的虚拟机描述信息,再通过调用 libvirt API的 domainDefine 来完成创建。

2)启动虚拟机

libvirt客户端发送启动虚拟机的请求,调用libvirt 的接口进行启动虚拟机,然后libvirt再开启QEMU-KVM 进程,一个进程就是一个虚拟机。

3)关闭虚拟机

libvirt客户端发送关闭虚拟机的请求,调用 libvirt 的接口进行关闭虚拟机,libvirt发送关闭虚拟机的信号给 QEMU-KVM 进程,QEMU-KVM进程退出,虚拟机即关闭。

4)创建/删除虚拟机镜像

虚拟机的存储在虚拟镜像中,它一般是一个文件,包括虚拟机的磁盘数据和配置文件信息都在里面,创建虚拟机磁盘镜像通过调用qemu-img create xxxx命令来实现,删除磁盘镜像通过调用rm data.img 命令实现。

4 云服务平台Web管理端开发与实现

虚拟化环境构建好后,利用libvirt中间件提供的API,用Python语言开发一个Web端的管理平台,以便管理人员进行管理。

1)Web平台的技术框架

Web管理平台的开发采用了Python语言开发和Django开发框架和Bootstrap前端框架,HTTP服务端采用Gunicorn+Nginx代理实现。

整体的页面布局使用Bootstrap框架配合Django的template设计实现。

使用Python调用libvirt虚拟化管理中间件的API,实现对KVM虚拟化平台的管理。Django负责处理URL的响应和页面的视图呈现效果。

2)虚拟机连接实现

在用户进入Web管理平台时,首先需要连接上远程或本地的节点主机。点击新建连接的按钮后,利用Django的URLconf判断URL,再调用template中的Bootstrap modal控件,弹出网页,将数据表单呈现在网页,让用户填写连接表单信息,点击“添加”按钮后,表单信息就保存在一个本地的sqlite数据库中。

在页面中点击连接名后,利用Python代码调用libvirt库的virConnectPtr函数,发送连接请求给节点主机中的libvirtd守护进程,主机中的libvirtd守护进程接收到连接请求,验证用户信息后,便建立起连接。最后转入Web管理平台的主界面。通过对上面Web界面的设置和操作,实现对云计算服务平台的各项功能。

此实验私有云服务平台通过虚拟化技术实现了在服务器上的虚拟化环境构建和Web管理端的开发,能够在虚拟化环境中对外提供多个虚拟机,对虚拟机进行远程桌面连接,生成或恢复快照,快速克隆、动态迁移等高级管理功能。为推广高效的实验室资源管理和共享提供了良好的平台。

参考文献:

[1] Rajkumar Buyya.云计算:原理与范式[M].北京:机械工业出版社,2013:13-36.

[2] Stephen R.Smoot,Nam K.Tan.私有云计算:整合、虚拟化和面向服务的基础设施[M].北京:机械工业出版社,2013:38-44.

[3] Dominic Betts.微软云计算系列丛书:云迁移技术[M].北京:清华大学出版社.2013:41-49.

[4] 广小明,胡杰,陈龙.虚拟化技术原理与实现[M].北京:电子工业出版社,2012:23-31.

[5] 孙丽丽,王伟峰.网络存储与虚拟化技术[M].北京:北京航空航天大学出版社,2013:24-38.

[6] 丁明一.Linux运维之道[M].北京:电子工业出版社,2014:66-74.

[7] Doug Hellmann.The Python Standard Library[M].北京:机械工业出版社,2012:44-52.

[8] Shantanu Tushar.Linux Shell Scripting Cookbook[M].北京:人民邮电出版社,2013:21-25.

[9] 顾炯炯.云计算架构技术与实践[M].北京:清华大学出版社,2014:136-144.

[10] 孙丽丽,王伟峰.网络存储与虚拟化技术[M].北京:北京航空航天大学出版社,2013:154-162.

猜你喜欢
私有云虚拟化技术云计算
虚拟网络建设思考与实现
实验云:理论教学与实验教学深度融合的助推器