APP下载

云应用管理引擎的设计与实现

2014-07-25梁峥刁伟孟

微型电脑应用 2014年8期
关键词:列表引擎应用程序

梁峥,刁伟孟

云应用管理引擎的设计与实现

梁峥,刁伟孟

介绍了云应用管理引擎的设计思想与实现方式,以解决传统上应用程序必须安装在本地才能运行的问题。云应用管理引擎对安装在Windows或Linux应用服务器上的应用程序进行管理,在集群范围或服务器范围内将应用程序发布为远程应用,并将远程应用授权给用户。授权用户可以从各种客户端设备和系统运行交付给自己的远程应用程序,就像运行本地应用程序一样。

云计算;虚拟化;管理引擎;远程应用;服务器;集群

0 引言

“云桌面”、“云存储”和“云应用”是“云”体系3个相互关联,互为补充的核心技术。“云桌面”通过消除用户桌面和特定硬件之间的绑定关系,使用户从设备中解脱出来,能够在“云”中为用户提供远程计算机桌面服务。“云存储”拓展存储路径,使之跨越各种逻辑层、经过网络、进入虚拟机,将数据保存在云端。“云应用”将应用程序部署在网络中,用户可以在任何时间、从任何地方、用任何客户端很方便访问并运行这些应用程序,如同本地安装的应用程序一样。

目前,针对“云桌面”和“云存储”技术的研究很深入,软件产品也较多,而对于同样作为云计算核心的“云应用”的研究则要落后很多,主要的产品也仅限于Citrix的XenApp[1],Microsoft的Rd Web[2],以及Ulteo的OVD[3]等少数几个。

本文介绍了云应用管理引擎的设计思想与实现方式,以解决传统上应用程序必须安装在本地才能运行的问题。云应用管理引擎可以对多台应用服务器进行统一管理。通过云应用管理引擎,管理员可以查询各个应用服务器上已安装的应用程序列表,选择所需的应用程序在服务器范围或集群范围内发布为远程应用,以及将这些远程应用授权给用户。普通用户登录到云应用管理引擎,查询所授权的远程应用程序,可以直接运行,如同运行在本地安装的应用程序一样。

本文组织如下:第1节介绍云应用平台的实现架构,分析了管理引擎以及应用服务器各自承担的角色;第2节围绕集群、服务器、应用程序、远程应用和用户等详细地阐述了管理引擎的主要管理功能;第3节和第4节阐述了实现中的两个重点:管理引擎与服务器的交互,以及用户在访问远程应用时选择运行服务器的策略;第5节通过大体所需执行过程来讲解云应用平台的管理逻辑;最后,在第6节进行总结。

1 云应用实现架构

云应用平台由4个元素组成:云应用服务器、云应用管理引擎、管理端以及客户端,如图1所示:

图1 云应用实现架构

云应用管理引擎基于CentOS 6.5操作系统,采用Django[4]框架进行开发。云应用服务器可以是物理服务器,或者是基于KVM[5]和QEMU[6]技术的虚拟服务器,应用服务器发布应用程序采用RemoteApp[7]技术,Windows客户端访问远程应用使用远程桌面连接,而Linux客户端访问远程应用则使用FreeRDP[8]。

应用服务器上安装有应用管理服务和远程应用服务。应用管理服务通过自定义协议实现管理引擎和服务器之间的交互。远程应用服务则通过RDP协议为授权用户在客户端访问应用服务器上的远程应用提供支持。

云应用管理引擎是整个实现架构的核心,可以对一台或多台应用服务器进行管理。云应用管理引擎接收和处理来自管理端的管理请求和客户端的普通用户请求,与应用服务器通信,获取服务器配置、应用程序列表等信息,并且在服务器上发布应用程序,以及将远程应用授权给用户。

云应用管理引擎提供统一入口。管理员登录后,进入管理界面,可执行各种管理工作,最终目的是在集群范围或服务器范围内将应用程序发布为远程应用,并且将远程应用授权给用户;用户登录后,进入用户界面,可以查看授权给自己的远程应用列表、并选择特定的服务器运行对应的应用程序。

2 云应用管理功能

目前,云应用实现架构中涉及的对象有5个:集群、服务器、应用程序、远程应用和用户如图2所示:

图2 云应用管理对象

云应用管理引擎软件提供的主要功能也围绕这些对象而展开,将来的实现会支持更多的功能,例如,可能根据需要进行增加对于会话等的管理部分。

2.1 集群

在云应用平台中,引入集群的主要目的是在更大范围内对应用程序进行管理,并且,在用户使用远程应用时通过负载均衡确保压力平摊到集群中的应用服务器之上。可以根据不同方式来构建集群,例如从系统特性来分,可以将运行Windows系列操作系统的应用服务器组织成一个集群,将运行Linux系列操作系统的应用服务器组织成一个集群;从地理位置来分,将某地区的所有应用服务器组织成一个集群,将另一个地区的所有应用服务器组织成另一个集群;从行政功能来分,将企业研发部的所有应用服务器组织成一个集群,将企业商务部的所有应用服务器组织成另一个集群。

集群中的应用服务器可以安装有不同的操作系统,并且并非所有应用服务器都需要安装同样的应用程序。集群中的应用程序是集群中所有应用服务器中的应用程序的合集。将集群中的某个应用程序发布为远程应用时,实际上是在该集群中包含有这个应用程序的所有(并不一定是集群的全部)应用服务器上进行发布。而将这个远程应用在该集群范围内分配给某个用户,该用户使用这个远程应用时,实际上是在该集群中的某个包含有这个应用程序的应用服务器上进行使用。如何选择运行远程应用的应用服务器是根据集群的策略而定的。

2.2 服务器

服务器是云应用平台的硬件基础,云应用中的应用程序都是运行在应用服务器上。从云应用管理引擎的角度,应用服务器分为两种:一种是独立的应用服务器,另一种则是集群中的应用服务器。

独立应用服务器上的应用程序可以独立进行管理。管理员选择独立应用服务器上的应用程序发布为远程应用,然后,将这些独立服务器上的远程应用分配给用户。用户在运行这些远程应用时,将连接到独立应用服务器上。

集群中的应用服务器是集群的组成成员,它上面的应用程序被纳入到集群范围中统一管理。也就是这些应用程序将在整个集群中被发布为远程应用,然后,将集群中的远程应用分配给用户。用户在运行这些应用程序时,将按照集群策略从集群中选择一个应用服务器进行连接,从而确保连接时的负载均衡。

2.3 应用程序

云应用管理的最终目标是应用程序,这些应用程序作为远程应用发布,并分配给用户,成为所谓的“云应用”(或称为远程应用)。用户在运行这些“云应用”时,实际上是在应用服务器上运行对应的应用程序,但因为应用程序的输入输出被重定向到用户设备上,就如同用户运行本地应用程序一般。

服务器被添加到云应用管理系统时,管理引擎从服务器获取应用程序列表。大多数应用程序安装时都会在开始菜单下创建一个快捷键,因此,服务器可以在开始菜单下自动检测应用程序。对于某些应用程序,例如绿色软件,它们可能无需安装,直接拷贝或解压运行,或者它们不会修改注册表,也不会在开始菜单下创建任何快捷键。对于这样的应用程序,在发布前需要由管理员从管理界面上添加到应用程序列表中。

每个应用程序包括名字、描述、可执行文件路径、桌面文件路径等信息。在云应用平台中,应用程序根据程序名字和可执行文件路径,来计算哈希值,作为应用程序的唯一标识。也就是说,根据程序名字和可执行文件路径来判断是否是同一个应用程序。基于此,一个应用程序可以位于多个应用服务器上,多个集群中,或者是一个集群中的所有或部分服务器上。弄清这一点,是理解云应用平台发布和授权逻辑的关键。

2.4 远程应用

应用程序能够作为“云应用”运行的条件有很多,其中主要的有3个:其一,运行应用程序的应用服务器必须启用远程应用服务;其二,应用程序必须在应用服务器上被发布为远程应用;其三,访问远程应用的用户必须在应用服务器上获得授权。并非应用服务器上所有的应用程序都默认可以远程访问的。应用程序被检测后,需要被发布为远程应用。

在云应用平台中,应用程序可以在服务器范围内被发布为远程应用,也可以在集群范围内被发布为远程应用。如果在服务器范围内被发布,这个应用程序将会在应用服务器上被添加到远程应用列表。如果在集群范围内被发布,这个应用程序将会在集群中所有包含这个应用程序的应用服务器上被添加到远程应用列表。

2.5 用户

应用程序被发布为远程应用后,还需要将远程应用授权给用户。目前,云应用平台集成了用户管理功能。未来,云应用平台需要使用外部用户数据进行认证,并且实现单点认证,以便于登录云管理引擎,访问远程应用,以及挂载云存储等。

用户可以在服务器或集群范围内获得授权。如果用户在服务器范围内被授权,这个用户将会在应用服务器上被添加到远程应用列表。如果用户在集群范围内被授权,这个用户将会在集群中所有包含这个应用程序的应用服务器上被添加到远程用户列表。

对每个用户而言,授权远程应用集合一定是发布应用程序集合的子集。换句话说,无论是在服务器范围,还是在集群范围,能够授权给用户的远程应用,一定是已经从应用程序发布过的远程应用。

3 管理引擎与服务器交互

管理员向管理引擎提交操作,最终都要落实到相应的服务器上,有时是从服务器获取信息,有时是要求服务器修改注册表等,而这必然依赖于管理引擎和服务器通信。目前管理引擎和服务器之间的主要交互内容如下:

1) 获取服务器配置信息。在服务器被添加到管理平台时,管理引擎将向服务器发送请求获取一些基本信息,例如,操作系统类型和版本、CPU类型、内存容量等。服务器也会定期向管理引擎报告其配置信息,例如,已使用容量等,这些动态信息被管理引擎记录下来,作为通过集群策略选择服务器的参考。

2) 查询、启用和禁用远程应用服务。用户要从网络上运行服务器上的应用程序,必须在服务器上启用远程应用服务器。如果应用服务器需要维护,可以禁用远程应用服务,这样,用户在集群中运行远程应用时,不会选择这台服务器。

3) 添加/删除远程应用。每台服务器都维护一个远程应用列表。从管理引擎发布应用时,在这个列表中添加一个远程应用;取消发布时,将远程应用从这个列表中删除。

4) 添加/删除远程用户。每台服务器都维护一个远程用户列表,这些用户被授权可以访问该服务器上的远程应用。从管理引擎授权用户时,在这个列表中添加一个远程用户;取消授权时,将远程用户从这个列表中删除。

发布和授权等信息除了在服务器上之外,同时,在管理引擎数据库中进行维护。为了确保两个地方信息的一致性,首先,在服务器上更新,然后,才修改管理引擎数据库。

4 应用中心策略

创建集群最基本的目的就是统筹管理多个应用服务器上的应用程序,以便用户的访问压力能够合适地分摊到这些应用服务器上,这体现为策略。如果将服务器和集群作为整个应用中心的一部分来考量,可以制定出不同的策略,即所谓的应用中心策略,包括:

1) 服务器与集群间策略:当用户同时在某个/些应用服务器和某个/些集群中被授权同一个应用程序时,云应用平台通过服务器与集群间策略选定其中的一个应用服务器或集群为用户运行该应用程序提供支持。

2) 服务器间策略:当用户在多个应用服务器上被授权同一个应用程序时,云应用平台通过服务器间策略选定其中的一个应用服务器为用户运行该应用程序提供支持。

3) 集群间策略:当用户在多个集群上被授权同一个应用程序时,云应用平台通过集群间策略选定其中的一个集群为用户运行该应用程序提供支持。

4) 集群内策略:当用户在一个集群中被授权某个应用程序时,云应用平台通过集群内策略选定其中的一个应用服务器为用户运行该应用程序提供支持。

5 云应用管理逻辑

5.1 虽局部可以调整,使用云应用管理引擎的操作流程大体如下:

1)规划设计

先回答这些问题:哪些应用服务器要纳入管理平台?如何将这些服务器划分为集群?要在哪些服务器上或集群中发布哪些应用程序?分别将这些应用程序授权给哪些用户?这些用户在访问授权应用的时候,具有哪些权限?

2)创建集群

初始部署时,没有任何集群,必须由管理员创建。管理员可以根据系统特性、地理位置、行政功能等将所有的应用服务器进行分类,然后将每一类应用服务器规划作为一个集群。创建集群操作对于每个集群一般只需要执行一次。

3)添加服务器

应用服务器是云平台中的基础硬件资源。要在云平台中发布应用程序和授权远程应用给用户,必须至少添加一个应用服务器。添加服务器时,同时自动检测该服务器上的应用程序并添加到管理引擎数据库中。添加服务器操作对于每个服务器一般只需要执行一次。

4)加入集群

5.2 应用服务器被加入到云应用平台后,可以作为独立服务器使用,也可以加入到集群中,以便其上的应用服务器在集群范围内统一发布和授权。可以在服务器一添加进来就可以被加入集群,也可以在服务器作为独立服务器运行(发布和授权)一段时间后再加入到集群中。服务器最多只能加入到一个集群,因此已经在集群中的服务器不可以执行加入集群操作。此外,考虑到服务器上和集群中都可能有应用程序发布和用户授权,目前允许服务器加入集群的条件是:

1) 服务器上发布的应用程序集必须是集群中发布的应用程序集的子集;

2) 对于每个用户而言,服务器上授权的远程应用集必须是集群中授权的远程应用集的子集。

如果满足上述条件,服务器就可以被加入到集群。在服务器加入集群时,还需要特别处理以下情况:

1) 如果应用程序同时在服务器上和集群中发布,则服务器加入集群时,必须删除在服务器上发布的记录,只保留在集群中发布的记录。

2) 如果应用程序只在集群中发布,未在服务器上发布,则服务器加入集群时,管理引擎将发送请求给应用服务器将它添加到远程应用列表中。

3) 对于每个用户,如果同时在服务器上和集群中授权某个远程应用,则服务器加入集群时,必须删除在服务器上的授权记录,只保留在集群中的授权记录。

4) 对于每个用户,如果只在集群中授权,未在服务器上授权某个远程应用,则服务器加入集群时,管理引擎将发送请求给应用服务器将它添加到远程用户列表中。

加入集群操作只在必要时执行,如果只是在服务器范围管理应用程序,这个操作可能根本不会被用到。

5.3 发布应用程序为远程应用

选择应用程序,将它发布为远程应用,设定要发布的(服务器或集群)范围,以及要发布的目标。

如果选择集群为发布范围,在发布目标中列出所有还没有在集群范围内发布这个应用程序的集群,而已经在集群范围内发布了这个应用程序的集群,则不会出现在发布目标列表中。

如果选择服务器为发布范围,在发布目标中列出所有还没有在服务器范围内发布这个应用程序的独立服务器,而已经在服务器范围内发布了这个应用程序的独立服务器,则不会出现在发布目标列表中。

需要注意的是,一个应用程序可能在多个服务器或集群上存在,而应用程序列表中的已发布状态说明了应用服务器至少已在一个服务器或集群上发布。因此,对于状态为“已发布”的应用程序,我们仍然可以执行“发布为应用程序”的操作。

对于每个应用程序,发布操作可能执行零次、一次或多次,因为这个应用程序可能不需要发布、需要在一个服务器上或集群中发布或者需要在多个服务器上或集群中发布。

5.4 发布应用程序为远程应用

选择远程应用,将它授权给用户,设定要授权的用户名、授权的(服务器或集群)范围,以及要授权的目标。

如果选择集群为授权范围,在授权目标中列出所有还没有在集群范围内为该用户授权这个应用程序的集群,而已经在集群范围内为该用户授权了这个应用程序的集群,则不会出现在授权目标列表中。

如果选择服务器为授权范围,在授权目标中列出所有还没有在服务器范围内为该用户授权这个应用程序的独立服务器,而已经在服务器范围内为该用户授权了这个应用程序的独立服务器,则不会出现在授权目标列表中。

需要注意的是,一个应用程序可能在多个服务器或集群上被授权给一个用户,也可以在一个服务器或集群上被授权给多个用户,因此远程程序列表中的已授权用户数说明了远程应用被授权给用户的数量,即使该值大于1,我们仍然可以执行“授权给用户”的操作。

对于每个远程应用和用户,这个操作可能执行零次、一次或多次,因为这个应用程序可能不需要被授权给该用户、需要在一个服务器上或集群中被授权给该用户或者需要在多个服务器上或集群中被授权给该用户。

管理员执行完上述操作,用户就可以在任意客户端从用户入口登录云应用管理引擎,查看授权给自己的应用程序,并且访问这些应用程序了。

6 总结

本文介绍了云应用管理引擎软件的设计思想和实现框架,管理引擎能够对一台或多台具有应用服务器进行管理,将这些应用服务器上的应用程序发布为远程应用,再将这些远程应用授权给用户。

管理员可以从任意管理控制台登录云应用管理引擎,对集群、服务器、应用程序、远程应用以及用户等资源进行管理,而授权用户则可以从客户端登录云应用管理引擎,查看分配被自己的应用程序,通过特定协议访问这些应用程序,如同运行本地安装的应用程序一样。

通过云应用管理引擎,可以很方便地在应用服务器以及由应用服务器组成的集群中构建“应用云”,从而帮助企业很方便地搭建属于自己的虚拟化云平台。

[1] Barham P, Dragovic B, Fraser K, et al. Xen and the Art of Virtualization [C] //Proceedings of the 19th ACM Symposium on Operating Systems Principles. New York: Bolton Landing, 2003:164-177.

[2] Remote Desktop Web Access [EB/OL]. [2014-04].http://technet.microsoft.com/en-us/library/cc731923.aspx

[3] Ulteo. Application Delivery Platform [EB/OL]. [2014-04].http://www.ulteo.org/.

[4] Django. The Web framework for perfectionists with deadlines [EB/OL]. [2014-04]. https://www.djangoproject.com/.

[5] KVM. Kernel Based Virtual Machine [EB/OL]. [2014-04]. http://www.linux-kvm.org/.

[6] QEMU. Open Source Processor Emulator [EB/OL]. [2014-04] http://www.qemu.org/.

[7] Microsoft. RemoteApp Manager [EB/OL]. [2014-04].http://technet.microsoft.com/en-us/library/cc755261.aspx.

[8] FreeRDP. A Remote Desktop Protocol Implementation[EB/OL]. [2014-04]. http://www.freerdp.com/

The Design and Implementation of Application Cloud Management Engine

Liang Zheng, Diao Weimeng
(Facility Division, Shanghai Institute of Tourism, Shanghai 201418, China)

This paper introduces the design idea and implementation framework of an application cloud management engine to solve the traditional limitation of running non-local applications. Cloud application management engine can be used to manage different kinds of applications from Windows or Linux application server, then publish them as remote applications in the scope of cluster or server, and authorize these remote applications to different users. Authorized user may run remote applications delivered to them from different client device and system, just like locally installed applications.

Cloud Computing; Virtualization; Management Engine; Remote Application; Server; Cluster

TP393

A

2014.05.31)

梁 峥(1974-),男,河北邢台人,上海旅游高等专科学校,硕士,研究方向:信息、网络、虚拟化技术及应用,上海 201418

刁伟孟(1978-),男,上海旅游高等专科学校,本科,研究方向:网络、存储、虚拟化技术及应用,上海 201418

1007-757X(2014)08-0030-04

猜你喜欢

列表引擎应用程序
学习运用列表法
新海珠,新引擎,新活力!
扩列吧
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
三生 三大引擎齐发力
蓝谷: “涉蓝”新引擎
列表画树状图各有所长
2011年《小说月刊》转载列表
三星电子将开设应用程序下载商店