伍世杨
(佛山科学技术学院信息与教育技术中心,广东佛山528000)
基于Solaris的虚拟机管理平台设计与实现
伍世杨
(佛山科学技术学院信息与教育技术中心,广东佛山528000)
设计并实现一个基于Solaris系统的虚拟机管理平台,该系统的作用是对Solaris Container中的虚拟机Zone进行管理。为了实现目标,本项目需要解决两个问题:节点脆弱性和低可扩展性。由于采用Solaris Zone虚拟化技术,本项目通过使用代理模式,避免了无代理模式固有的脆弱性与可扩展性低的问题,从而提高了系统的健壮性与可扩展性。
Solaris;zone;虚拟机;管理平台
近年来智能手机快速普及,国内手机用户的人数急剧飙升,呈现出井喷的现象。为了应付日益增长的业务需求,提高服务质量,国内各大电信运营商的服务器规模也越来越大。每天的移动业务在不同时段中的密度差别很大,在某些时段特别集中,而在某些时段又显得相对较少,呈现出峰值性的特点,为了应对每天的业务需要,在设计服务器规模的时候自然需要考虑系统可能的最大负载量。而在业务需求较少的时段中,服务器的负载就比较少,这样就会造成一部分服务器资源的闲置。
虚拟化技术可以为这个问题的解决提供一个方法。虚拟化技术最早出现在20世纪60年代的IBM大型机系统,在70年代的System 370系列中逐渐流行起来[1]。这些服务器通过一种叫虚拟机监控器(Virtual Machine Monitor,VMM)的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机(Virtual Machine)实例。运用虚拟化软件,可以在这些服务器资源上建立一个抽象层,对这些资源进行统一管理,从而使得服务器的计算、存储、网络等各种资源都能够动态、可伸缩地加以利用。虚拟化技术已经在系统仿真、云计算和计算系统等方面有广泛的应用[2-4]。现在广泛使用的虚拟化软件有VMware系列产品等等[5-6],可是,VMware系列产品是基于X86架构的,一般用在中小型企业。而电信运营商的服务器中,X86架构的只占很少一部分,绝大部分为小型机,对应的操作系统一般有三种:AIX、Solaris 和HP Unix。所以在针对小型机的应用环境中,就不能使用VMware系列产品了。
本文针对小型机的应用环境,开发一个动态可控的虚拟机管理平台。项目采用Solaris系统作为具体的应用环境。由于系统采用了模块化的开发方法,因此只要将与虚拟机操作相关的shell脚本更换成Aix和HP Unix中具有同等功能的脚本,系统就可以在Aix和HP Unix系统中完成相同的功能。
当前,在行业中已经有一些商业化的虚拟机管理平台了。总体上来讲,按照这些管理平台是否已经采用了代理可以把它们分为两类:代理模式和无代理模式。
代理模式是指管理平台在管理计算资源的时候,采用一个总的控制器,同时在每一个计算节点上,都运行一个服务(Agent)。这些服务接受控制器的实时监控,并执行由控制器发出的指令。
无代理模式是指总控制器通过SSH等方式登录到各个计算节点上,在节点上通过调用已经定义好的shell指令来完成相应的操作。无代理模式的不足之处在于:
(1)脆弱性。它通过SSH“指挥”计算节点,当SSH协议或者端口被禁用,将无法对计算节点做任何的操作,整个系统将无法工作。
(2)可扩展性低。无代理模式中,在计算节点没有运行本地的服务,所有指令直接由控制端下发,在本地即时执行,因此在计算节点只能执行一些简单的操作。计算节点能完成的操作或者说能提供的服务会紧紧依赖于shell的命令,其功能的可扩展性也就依赖于shell命令的灵活性。因为shell脚本语言是针对系统管理的编程语言,它适合系统管理员对系统进行实时、交互的操作,而不适合开发灵活多变、结构复杂的项目。由于用户需求的多变性,在计算节点上会为项目的开发带来较大的难度。例如,虚拟机迁移功能的实现,需要控制端对计算节点进行实时监控,并按照顺利完成创建共享区域,挂载文件系统,在迁移目标区域配置本地虚拟机,添加新的虚拟机到本地虚拟机列表等一系列的操作。尽管这些操作都可以由shell命令来实现,可是最关键的地方在于怎样对这些shell脚本按正确顺序进行调用。这一点如果仅仅用shell脚本来实现,难度很大。
如果采用代理模式,就可以有效地避免这个问题。开发者只需要在计算节点上采用C/C++开发一个代理服务软件,由软件对这些脚本进行调用,不仅可以降低开发难度,还可以按用户的需求灵活地调用这些脚本,以实现特定的功能。在代理模式中,开发者就可以修改代理服务程序,很方便地增加所需要的功能。
基于上述对代理模式优点的分析,本文将设计并实现采用代理模式的虚拟机管理平台,以此来克服无代理模式固有的脆弱性与可扩展性低问题,提高基于Solaris系统虚拟机管理平台的健壮性与可扩展性。
在本项目中,某运营商已经有一个使用中的云计算管理平台,它的现有功能是管理所有基于X86架构的虚拟机,可是它缺少一个针对Solaris小型机的管理功能。本项目的目标是完成一个基于Solaris的虚拟机管理平台,能对Solaris所在的服务器的物理参数进行监控,并管理Solaris container中zone的创建、启动、停止和删除等操作。根据运营商的要求,本管理平台将会以一个管理模块的形式加入到运营商已有的云计算管理平台中。由于运营商已有的云计算管理平台中有适用的用户界面(UI),所以在本项目的设计和开发中,没有用户界面这一部分。本管理平台的功能和状态将与原有的云计算管理平台的用户界面进行无缝衔接。
1.1系统运行环境
表1是在基于运营商的实际部署环境之后得到的。只有了解了运营商实际的部署环境,在设计和开发的过程中,才能够有的放矢,开发出符合需求的产品。
表1 系统运行环境
1.2系统功能需求
系统整体框架如图1所示。
图1 系统整体框架图
图1中的门户网站是云计算管理平台的用户界面。用户通过门户网站与云计算管理平台进行交互。用户可以通过浏览器,登录到门户网站。在门户网站上,用户可以看到自己所拥有的虚拟机资源,并能对这些资源进行操作和管理。
云计算管理平台是运营商已有的一个针对虚拟化环境的管理平台,它主要的功能是管理X86架构之上的虚拟机,包括Linux虚拟机管理模块和Windows虚拟机管理模块。本项目的目的就是为云计算管理平台增加一个小型机管理模块。
本项目的管理平台包括三部分:Server端、Agent端和数据库。
(1)Server端:小型机模块分为两个部分,一个是Server端,Sever端提供与数据库的接口,与上层以WebService方式进行交互,接收云计算管理平台的页面下发的控制命令,将这些控制命令下发到各Agent端,并等待这些命令的返回。
(2)Agent端:小型机模块的另外一端是指分布在各个小型机服务器上的Agent端,该部分主要是完成对各个小型机的数据采集、数据传输、命令执行、命令返回等采集和控制功能。Agent保存并执行与虚拟机实例Zone相关的操作的shell脚本。Solaris Container提供了一个完整的应用程序运行环境,使得对Zone的管理大大简化,降低了代理服务程序的开发难度。
(3)数据库:该数据库位于系统的主数据库中,有4张表为小型机模块使用,并且这些表都能让页面来读取数据和显示到页面,可以给整个产品提供更丰富的功能和数据展示。
1.3Server端功能需求
Server端提供如下功能:
(1)管理模块:功能是处理各种控制命令、查看队列的消息以及定时扫描和刷新LINK和LINK_SERVER表。
(2)数据库模块:完成对数据库的接口调用、操作,对数据库表中的数据进行增加、删除、修改操作,完成数据的初始化、更新、增加、删除和修改。
(3)消息队列模块:完成对消息队列的初始化工作,并提供队列数据的接收、发送、属性查看等处理接口供其他模块使用。
(4)日志模块:完成系统运行日志记录,控制命令操作记录、数据接收记录,以及其他重要事件的记录,每个记录均包含发生的时间点。
(5)发送模块:完成命令数据的发送,其中包含控制命令的接收、解析。
(6)命令处理模块:把上层平台发送来的命令封装成命令发送到客户端。
(7)接收模块:完成来自所有链路的数据接收、解包、分析和报文确认,数据的解析按照指定的归约来进行,以保证接收到的数据的正确性和有效性。
(8)数据校验模块:检验物理服务器的状态。如果有新增加的物理服务器,则把该物理服务器的信息添加到链路服务器的表中,为新增加的物理服务器指定管理服务器数量最小的链路;如果有状态为已删除的物理服务器,则更新数据库中相关表的信息,能有效的保持表信息的实时性及精简性。
(9)链路模块:完成对链路的状态判断、控制和转换,接收已链接链路的原始数据报文,判断报文的合法性和有效性,并将接受到的原始数据报文发送到recv消息队列。
(10)监听模块:完成对所有网络连接的监听,并对连接成功的链路进行判断,确保连接的正确性和有效性。
(11)网络模块:完成网络服务端、客户端和数据读写接口的一系列初始化,使它们可以供其他模块调用。
(12)线程模块:完成一部分线程操作的封装。创建一个线程之后只需调用相应的入口函数就可以进入到创建线程。
1.4Agent端功能需求
Agent的功能模块图如图2所示。
图2 Agent端功能模块图
(1)获取小型机的实时统计信息模块:小型机的客户端会每隔一定间隔(可调整,现为5 s),重新统计小型机的实时信息,并将实时信息发送给服务端。实时信息包括CPU相关、内存相关、存储相关和网络相关等部分。
(2)获取小型机zone的实时统计信息模块:小型机的客户端会每隔5 s,重新对各个小型机zone的实时信息进行统计,并将实时信息发送给服务端。实时信息包括CPU相关、内存相关、存储相关和网络相关等部分。
(3)接受服务端发送的命令报文模块:报文类型包括:接收服务端命令报文、解析命令报文、执行相应命令的脚本和返回服务端执行结果报文。
系统采用MVC(Model-View-Controller)结构进行设计开发。MVC结构是为那些需要用不同的视图展示同样数据的应用程序来设计的,它能够很好地分离数据层与表示层。MVC是一种通用的开发模型,在分布式应用系统中得到了广泛使用。MVC把一个分布式的交互系统分解成了三大部分:模型、视图、控制器,使得三个部分都能彼此独立地设计和实现。
(1)视图:是系统和用户之间的交互界面,它能够以特定的形式向用户展现模型数据和逻辑关系。视图从模型获得显示信息,对于相同的信息可以有多个不同的视图。在本项目中,视图在浏览器中以门户网站的形式来呈现。在门户网站中,用户可以购买虚拟机、计算资源、存储资源等资源,也可以对这些资源进行操作,例如创建虚拟机、启动或者停止虚拟机等等。用户从门户网站登录进去,就可以看到已经购买的所有资源,并按照自己的需要对其进行管理。
(2)控制:介乎于视图与模型之间,当模型中的数据或者业务逻辑发生变化的时候,这些变化的信息就由控制部分进行传达,以保证用户界面(也就是视图)和模型部分的同步。用户在视图中的任何输入都由控制部分传送给模型进行处理,反之亦然。对于Solaris虚拟机管理系统来说,控制部分包括云计算管理平台和Server端的消息处理相关的多个模块。
(3)模型:保存着系统的核心数据和逻辑,这些数据能够由视图来展示,由控制器来控制,可是这两者都不负责数据的保存。模型部分的运作独立于视图和控制器,以此来保证数据的一致性和降低管理数据的复杂度。模型部分包括了Agent端、数据库以及Server端的命令处理模块、数据库模块等。
目前,本系统已经在国内某大型电信商部署完成,图3显示了系统的部署情况。在综合考虑了运营商机房的网络环境之后,本系统采用了分布式的部署方法:运营商的总公司和子公司都部署一个管理服务器,总公司通过某种策略自动完成公司总部和各子公司的数据同步。管理服务器的作用相当于系统设计方案中的Server端,它以子公司为单位,对公司内所有的Solaris小型机进行管理,并将Solaris中虚拟机的所有服务进行打包,然后通过VPN或者Internet发布出去。系统用户可以通过VPN或者Internet来访问管理服务器,从而获得这些资源。
图3 系统部署架构图
(1)创建虚拟机。为了创建虚拟机,用户需要在自服务门户网站上登录,然后在网站上找到创建虚拟机服务的按钮,进入创建虚拟机页面,如图4所示。用户需要填写的内容有:服务名称、资源域、申请时长、申请数量和描述等。其中所选择的服务是由云计算管理平台根据特定服务模板生成。在服务模板中,已经规定了虚拟机所需要的CPU数量、内存大小、磁盘大小、网络IP等内容。为了方便用户使用,在用户创建虚拟机的时候,这些模板的参数已经作为默认参数输入到系统中。用户填写完上述内容之后,点击“立即申请”按钮即可完成虚拟机的创建。
图4创建虚拟机
图5显示了用户已经创建好的虚拟机,即图中列表的第2行。服务状态显示可用,意味着虚拟机已经就绪,可以使用。
图5 创建好的虚拟机
(2)启动虚拟机的实现。启动虚拟机的操作适用于虚拟机已经关机的情况下。如图6所示,用户只需要点击“操作”一栏中的按钮即可启动虚拟机。
图6 启动虚拟机
(3)停止虚拟机的实现。停止虚拟机适用于虚拟机正在运行的情况下。用户可以参看虚拟机的“状态”一栏,如果显示“运行中”,那么用户就可以点击“操作”一栏中的“停止”按钮,即可停止虚拟机,如图7所示。
图7 停止虚拟机
(4)重启虚拟机的实现。重启虚拟机适用于虚拟机正在运行的情况下。用户可以参看虚拟机的“状态”一栏,如果显示“运行中”,那么用户就可以点击“操作”一栏中的“重启”按钮,即可重启虚拟机,如图8所示。
图8 重启虚拟机
(5)删除虚拟机的实现。删除虚拟机适用于虚拟机正在使用的情况下。用户可以参看虚拟机的“服务状态”一栏,如果显示“可用”,那么用户就可以点击“操作”一栏中的“删除”按钮,即可删除虚拟机,如图9所示。
图9 删除虚拟机
本项目的目标是开发一个基于Solaris的虚拟机管理平台。本文围绕这个目标,需要解决两个问题,即避免节点脆弱性和低可扩展性。通过使用代理模式,本项目避免了无代理模式固有的节点脆弱性与可扩展性低的问题,从而提高了系统的健壮性与可扩展性。从系统开发完成后的部署情况,以及交付之后针对用户的需求所做的升级和扩展情况来看,本项目完全达到了原先的目标和用户的要求。
[1]黄志宝.基于虚拟化的容灾业务自动部署和自动迁移研究与实现[D].长沙:国防科学技术大学,2009.
[2]张雅彬,李伯虎,柴旭东,等.基于虚拟化技术的云仿真资源迁移技术研究[J].系统仿真学报,2011,23(6):1268-1272.
[3]王昊鹏,刘旺盛.虚拟化技术在云计算中的应用初探[J].电脑知识与技术,2008(9):1554.
[4]金海,廖小飞.面向计算系统的虚拟化技术[J].中国基础科学,2008,10(6):12-18.
[5]张建勋,古志民,郑超.云计算研究进展综述[J].计算机应用研究,2010,27(2):429-433.
[6]施庆.基于VMware vSphere的高校数据中心虚拟化建设研究[D].上海:复旦大学,2012.
【责任编辑:王桂珍foshanwgzh@163.com】
Design and implementation of virtual machine management platform based on Solaris
WUShi-yang
(Information and Educational TechnologyCenter,Foshan University,Foshan 528000,China)
This paper designed and implemented a management platform for virtual machines on Solaris.This system is used for managing the virtual machines Zone in Solaris Container.To achieve this goal,two problems need to be solved:increasing the robustness and the scalability.By using the virtualization technology Solaris Zone and the agent pattern,the project avoided the vulnerability and the lowscalability of the agentless pattern,soit increased the robustness and scalabilityofthe system.
Solaris;zone;virtual machine;management platform
TP302
A
1008-0171(2016)04-0023-07
2016-01-15
广东省普通高校青年创新人才资助项目(2015KQNCX179)
伍世杨(1987-),男,广东肇庆人,佛山科学技术学院助教。