基于OpenStack的离线桌面云系统的设计与实现

2018-08-01 08:06邱红飞黄春光
现代计算机 2018年19期
关键词:服务端离线调用

邱红飞,黄春光

(中国电信股份有限公司广东研究院,广州 510360)

0 引言

目前,随着云计算技术的发展,桌面云作为桌面虚拟化应用场景获得了快速的发展。桌面云的核心思想是将用户的桌面环境和用户的计算环境进行分离,这样桌面、应用和基础硬件可以集中部署和管理,个人可以通过各种设备,在任何地点访问通过网络访问个人桌面系统。桌面虚拟化技术为成熟产品,应用范围广,中国电信一些生产环境的如呼叫中心、客服中心、营业中心等已经部署了桌面云产品。主要优势有简化了系统管理、权限管理集中、安全性能加强、用户数据可靠。

OpenStack是一个开源的云计算管理平台项目,主要包括七个核心组件,用户界面(Dashboard)、认证(Identity)、计算(Compute)、对象存储(Object Storage)、块存储(Block Storage)、网络(Network)和镜像服务(Im⁃age Service)。OpenStack由这七个主要的组件组合起来进行工作,对数据中心的计算、存储和网络资源进行统一管理。

1 解决的问题

目前部署的桌面云产品类型主要包括VDI(虚拟桌面基础架构)和SBC(基于服务器计算即会话共享的远程应用或桌面),产品有Citrix XenDesktop、VMware⁃view等;这样的桌面云解决方法是通过服务器虚拟化实现对硬件的抽象、资源的分配和调度管理,通过协议,使得客户端与服务端展示桌面映像。这种解决办法存在一些弊端:

(1)离线使用问题:现有桌面云必须在网络不中断情况下且与服务端连接正常情况下才能使用,对于网络差及随时需要使用桌面云的场合不适用。

(2)性能问题:在客户端用户较多情况下,由于资源共享,服务端主机需要有足够的CPU、内存、存储等资源,否则桌面云性能无法得到保障。

(3)外设兼容问题:电信营业中心的外设如打印机、扫描仪品牌和种类众多,驱动程序问题一直都是桌面云部署的痛点。

目前,还没有在OpenStack上的离线桌面云的成熟解决方案。考虑到以上问题,本文提出了一种离线桌面云的解决方案,将OpenStack的云计算基础架构和桌面云技术相结合,搭建一套离线桌面云系统,用于解决桌面云不能离线断网的使用场景。

2 架构设计

本文设计的离线桌面云服务端架构基于Open⁃Stack云基础架构上实现,离线桌面云服务端架构主要由三个大部分组成,如图1所示。

(1)安装部署移动终端设备,如笔记本或台式机;桌面传输协议采用RDP协议。

(2)离线桌面管理系统由虚拟桌面管理、用户管理、策略管理、镜像管理和调用代理模块组成。

(3)OpenStack云基础架构环境的核心组件,包括Nova-api、Nova-compute等7大组件,组件间组合起来工作。

图1 桌面云架构图

如图1所示,虚拟桌面云系统的软件架构包括桌面的管理系统、服务端OpenStack组件构成的运行环境、客户端OpenStack运行环境组成。桌面云管理系统用以服务端管理;服务端OpenStack组件的运行环境主要作用就是为离线桌面的运行提供基础环境。客户端OpenStack组件的运行环境主要作用就是为客户端虚拟机的运行提供基础环境。终端管理模块用于从连接服务端下载镜像并在客户端的OpenStack平台中创建虚拟机。

整体的离线桌面云管理系统是按照下面几个模块来实现的:

(1)桌面管理模块,分配桌面镜像,可按用户组或用户分配桌面镜像;指定策略,在分配桌面镜像时可指定桌面安全策略;添加、删除、编辑、激活、锁定、归档桌面。在分配桌面镜像时需要与镜像管理模块进行交互,分配指定的镜像给用户组及用户。与策略管理模块通信,对用户及用户组分配安全策略;

(2)用户管理模块,对桌面云系统中的用户组、用户、角色和权限等进行管理,并提供用户注册、登录等服务。用户登录的时通过用户管理得到一个token,通过该token在OpenStack环境进行验证。此外存储用户数据,用户数据主要为用户在客户端虚拟机内产生的业务数据提供存储支持,以达到用户的应用和数据的分离的目的;

(3)调用代理模块,代理模块是离线桌面系统与外部及OpenStack运行环境接口,离线桌面系统通过调用代理模块对OpenStack环境的组件发起API调用;

(4)镜像管理模块,制作不同的虚拟机镜像模板,包括Windows、Linux的模板;添加、删除、修改虚拟机镜像模板。镜像管理模块通过调用代理模块对Open⁃Stack环境的组件的Nova组件、Glance组件发起API调用;

(5)策略管理模块:针对用户及用户组分配桌面安全策略(包括USB启用禁用、图像复制粘贴启用禁用、文件及文件夹复制粘贴启用禁用、音频视频设备启用禁用)、桌面过期时间、桌面过期消息、离线访问期限等;

(6)监控管理:监控系统管理桌面云管理平台的运行和客户端虚拟机的运行,一旦发生异常,发出报警;

(7)日志管理:记录桌面云管理平台、客户端的运行日志、操作日志等;

(8)终端管理模块:终端管理模块用于从连接服务端下载镜像并在客户端OpenStack环境创建虚拟机。此外,客户端的数据通过终端管理模块更新安全策略信息、下载或上传用户数据到服务端。

依据上面介绍,本文设计了离线桌面云管理系统的详细的架构,组件之间的详细的交互关系如图2所示。

图2 系统详细交互架构图

3 桌面云管理平台实现

离线桌面云管理平台运行环境为Linux,平台实现采用Python语言,数据库为MySQL。下面主要介绍调用代理模块、用户管理模块、桌面管理模块、镜像管理模块、策略管理模块和客户端桌面管理的实现方法。

3.1 调用代理模块实现

本系统主要通过调用代理模块实现桌面云管理平台模块与外部数据的交互和通讯,模块采用了面向对象的设计模式,在调用代理模块中主要利用了四个类,包 括 ProxyAgent、vmOpreat、ImageOpreat 和 client⁃Conn。类之间的交互关系如图3所示。

图3 调用管理模块交互图

vmOpreat类提供了对Nova组件进行API调用的函数,主要是操控虚拟机实例的函数,包括虚拟机创建vmCreate、虚拟机停止vmStop、虚拟机删除vmDelete、虚拟机暂停vmPause等函数。

ImageOpreat类提供了对Glance组件进行API调用的函数,包括操作镜像函数,镜像的注册ImageRegis⁃try、镜像的上传 ImageGet和下载、ImagePut、镜像元数据的更改ImageModi、虚拟机的快照vmSnap等操作。

clientConn类中,负责用户验证的接口,包括用户的登录验证、镜像的下载、策略的更新、用户数据的上传下载等。

在调用代理模块中,主要存在了三个主线程。分别为:

(1)OpenStack Nova组件接口。该线程主要负责发送API调用给OpenStack Nova组件,调用OpenStack组件的服务,主要为桌面管理模块的接口。

(2)OpenStack Glance组件接口。该线程主要负责发送API调用给OpenStack Glance组件,调用Open⁃Stack组件的服务,主要为镜像管理模块的接口。

(3)客户端接口。该接口是负责接受用户连接的线程池。用户通过该模块连接用户管理模块,进行用户的验证、镜像的下载、策略的更新、用户数据的上传下载等。

3.2 用户管理模块的实现

用户管理模块主要通过两个类来实现,包括userAPI类、和User类。类图如图4所示。

图4 用户管理模块交互图

userAPI类提供了用户的注册、用户的登录、获得用户桌面、同步桌面等函数。在该模块中,用户的验证方式是客户端通过keystone组件的用户进行访问认证,从而获取通过验证时所得到的认证token来访问OpenStack组件等后续操作。

如果用户已经注册,userInfoList类用于调用桌面管理模块来查询该用户拥有的桌面模板、安全策略等信息。User类主要记录了该用户的一些属性信息。

3.3 桌面管理模块的实现

桌面管理模块主要有两个核心的类,分别为desk⁃DisAPI、deskManageAPI、deskInfo。这三个类的类图如5所示。

图5 桌面管理模块交互图

deskDisAPI类提了桌面分配,deskManageAPI提供了桌面管理的API函数,deskInfo主要记录了该桌面的一些属性信息,包括镜像信息、安全策略信息。

3.4 镜像管理模块的实现

镜像管理模块主要有两个核心的类,分别为im⁃ageAPI和imageInfo。这两个类的类图如图6所示。

图6 镜像管理模块交互图

imageAPI类提供给用户操作的镜像的API函数,包括镜像添加、删除和修改函数;由于imageOpreat类继承imageAPI类,用户执行imageAPI中的函数的同时,其实也是执行imageOpreat类中的函数。imageInfo主要记录了该镜像的一些属性信息。

4.5 客户端桌面管理模块

客户端管理模块主要有两个核心的类,分别为cli⁃entManageAPI、vmOpreat、clientInfo。这四个类的类图如图7所示。

图7 客户端桌面管理模块交互图

clientManageAPI类提供给用户操作的API函数,包括桌面镜像下载、用户数据的恢复和备份、用户安全策略等;vmOpreat类提供给对客户端OpenStack的No⁃va组件进行API调用的函数,主要包括操作虚拟机的实例的函数,clientInfo记录客户端桌面的信息,包括安全策略信息。

4 桌面交付流程

用户使用桌面云的访问流程,如图8:

(1)用户通过客户端提出访问申请,在客户端输入桌面云服务器地址、账号和密码,无该用户虚拟桌面会提示下载镜像模板,创建虚拟机;有该用户虚拟桌面会更新桌面策略、桌面应用的信息;

(2)访问申请传送至桌面云管理平台,桌面云管理平台中的用户管理模块处理用户的访问申请,判断访问是否有效;

(3)当判断访问无效时,将无效信息反馈至客户端,提醒客户输入正确的登录信息;

(4)当访问有效时,用户管理系统分配用户的桌面资源信息,包括桌面镜像模板、安全策略信息等;

(5)镜像管理模块根据用户信息下发镜像模板;

(6)客户端下载镜像模板,创建虚拟机、更新桌面应用信息、策略信息,虚拟机创建完成并重启后就可以访问桌面云;

(7)此外,用户可以上传用户数据至桌面云管理平台以保存用户数据。

图8 桌面交付流程图

5 结语

本文首先介绍了桌面云技术的意义及其面临的问题,然后对于离线桌面云,在基于OpenStack组件开发基础上提出了自己的整体系统架构设计和整个系统组件的交互方式。同时,简要描述了离线桌面云各个模块的实现方法,包括代理模块、用户模块、桌面管理模块和镜像管理模块等。最后,对离线桌面云系统的桌面交付流程进行了阐述,对于在OpenStack组件开发及同类产品具有一定的借鉴意义。

猜你喜欢
服务端离线调用
基于卷积神经网络的离线笔迹鉴别系统
异步电机离线参数辨识方法
新版Windows 10补丁离线安装更简单
系统虚拟化环境下客户机系统调用信息捕获与分析①
多人联机对战游戏的设计与实现
基于三层结构下机房管理系统的实现分析
基于三层结构下机房管理系统的实现分析
基于属性数据的系统调用过滤方法
利用RFC技术实现SAP系统接口通信
离线发文件 不是会员也能用