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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于虚拟化技术的云服务平台的构建与管理作者:何国民王代君

来源:《电脑知识与技术》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设计实现。

相关文档
最新文档