邱紅飛,黃春光
(中國電信股份有限公司廣東研究院,廣州 510360)
目前,隨著云計(jì)算技術(shù)的發(fā)展,桌面云作為桌面虛擬化應(yīng)用場景獲得了快速的發(fā)展。桌面云的核心思想是將用戶的桌面環(huán)境和用戶的計(jì)算環(huán)境進(jìn)行分離,這樣桌面、應(yīng)用和基礎(chǔ)硬件可以集中部署和管理,個(gè)人可以通過各種設(shè)備,在任何地點(diǎn)訪問通過網(wǎng)絡(luò)訪問個(gè)人桌面系統(tǒng)。桌面虛擬化技術(shù)為成熟產(chǎn)品,應(yīng)用范圍廣,中國電信一些生產(chǎn)環(huán)境的如呼叫中心、客服中心、營業(yè)中心等已經(jīng)部署了桌面云產(chǎn)品。主要優(yōu)勢有簡化了系統(tǒng)管理、權(quán)限管理集中、安全性能加強(qiáng)、用戶數(shù)據(jù)可靠。
OpenStack是一個(gè)開源的云計(jì)算管理平臺(tái)項(xiàng)目,主要包括七個(gè)核心組件,用戶界面(Dashboard)、認(rèn)證(Identity)、計(jì)算(Compute)、對象存儲(chǔ)(Object Storage)、塊存儲(chǔ)(Block Storage)、網(wǎng)絡(luò)(Network)和鏡像服務(wù)(Im?age Service)。OpenStack由這七個(gè)主要的組件組合起來進(jìn)行工作,對數(shù)據(jù)中心的計(jì)算、存儲(chǔ)和網(wǎng)絡(luò)資源進(jìn)行統(tǒng)一管理。
目前部署的桌面云產(chǎn)品類型主要包括VDI(虛擬桌面基礎(chǔ)架構(gòu))和SBC(基于服務(wù)器計(jì)算即會(huì)話共享的遠(yuǎn)程應(yīng)用或桌面),產(chǎn)品有Citrix XenDesktop、VMware?view等;這樣的桌面云解決方法是通過服務(wù)器虛擬化實(shí)現(xiàn)對硬件的抽象、資源的分配和調(diào)度管理,通過協(xié)議,使得客戶端與服務(wù)端展示桌面映像。這種解決辦法存在一些弊端:
(1)離線使用問題:現(xiàn)有桌面云必須在網(wǎng)絡(luò)不中斷情況下且與服務(wù)端連接正常情況下才能使用,對于網(wǎng)絡(luò)差及隨時(shí)需要使用桌面云的場合不適用。
(2)性能問題:在客戶端用戶較多情況下,由于資源共享,服務(wù)端主機(jī)需要有足夠的CPU、內(nèi)存、存儲(chǔ)等資源,否則桌面云性能無法得到保障。
(3)外設(shè)兼容問題:電信營業(yè)中心的外設(shè)如打印機(jī)、掃描儀品牌和種類眾多,驅(qū)動(dòng)程序問題一直都是桌面云部署的痛點(diǎn)。
目前,還沒有在OpenStack上的離線桌面云的成熟解決方案??紤]到以上問題,本文提出了一種離線桌面云的解決方案,將OpenStack的云計(jì)算基礎(chǔ)架構(gòu)和桌面云技術(shù)相結(jié)合,搭建一套離線桌面云系統(tǒng),用于解決桌面云不能離線斷網(wǎng)的使用場景。
本文設(shè)計(jì)的離線桌面云服務(wù)端架構(gòu)基于Open?Stack云基礎(chǔ)架構(gòu)上實(shí)現(xiàn),離線桌面云服務(wù)端架構(gòu)主要由三個(gè)大部分組成,如圖1所示。
(1)安裝部署移動(dòng)終端設(shè)備,如筆記本或臺(tái)式機(jī);桌面?zhèn)鬏攨f(xié)議采用RDP協(xié)議。
(2)離線桌面管理系統(tǒng)由虛擬桌面管理、用戶管理、策略管理、鏡像管理和調(diào)用代理模塊組成。
(3)OpenStack云基礎(chǔ)架構(gòu)環(huán)境的核心組件,包括Nova-api、Nova-compute等7大組件,組件間組合起來工作。
圖1 桌面云架構(gòu)圖
如圖1所示,虛擬桌面云系統(tǒng)的軟件架構(gòu)包括桌面的管理系統(tǒng)、服務(wù)端OpenStack組件構(gòu)成的運(yùn)行環(huán)境、客戶端OpenStack運(yùn)行環(huán)境組成。桌面云管理系統(tǒng)用以服務(wù)端管理;服務(wù)端OpenStack組件的運(yùn)行環(huán)境主要作用就是為離線桌面的運(yùn)行提供基礎(chǔ)環(huán)境。客戶端OpenStack組件的運(yùn)行環(huán)境主要作用就是為客戶端虛擬機(jī)的運(yùn)行提供基礎(chǔ)環(huán)境。終端管理模塊用于從連接服務(wù)端下載鏡像并在客戶端的OpenStack平臺(tái)中創(chuàng)建虛擬機(jī)。
整體的離線桌面云管理系統(tǒng)是按照下面幾個(gè)模塊來實(shí)現(xiàn)的:
(1)桌面管理模塊,分配桌面鏡像,可按用戶組或用戶分配桌面鏡像;指定策略,在分配桌面鏡像時(shí)可指定桌面安全策略;添加、刪除、編輯、激活、鎖定、歸檔桌面。在分配桌面鏡像時(shí)需要與鏡像管理模塊進(jìn)行交互,分配指定的鏡像給用戶組及用戶。與策略管理模塊通信,對用戶及用戶組分配安全策略;
(2)用戶管理模塊,對桌面云系統(tǒng)中的用戶組、用戶、角色和權(quán)限等進(jìn)行管理,并提供用戶注冊、登錄等服務(wù)。用戶登錄的時(shí)通過用戶管理得到一個(gè)token,通過該token在OpenStack環(huán)境進(jìn)行驗(yàn)證。此外存儲(chǔ)用戶數(shù)據(jù),用戶數(shù)據(jù)主要為用戶在客戶端虛擬機(jī)內(nèi)產(chǎn)生的業(yè)務(wù)數(shù)據(jù)提供存儲(chǔ)支持,以達(dá)到用戶的應(yīng)用和數(shù)據(jù)的分離的目的;
(3)調(diào)用代理模塊,代理模塊是離線桌面系統(tǒng)與外部及OpenStack運(yùn)行環(huán)境接口,離線桌面系統(tǒng)通過調(diào)用代理模塊對OpenStack環(huán)境的組件發(fā)起API調(diào)用;
(4)鏡像管理模塊,制作不同的虛擬機(jī)鏡像模板,包括Windows、Linux的模板;添加、刪除、修改虛擬機(jī)鏡像模板。鏡像管理模塊通過調(diào)用代理模塊對Open?Stack環(huán)境的組件的Nova組件、Glance組件發(fā)起API調(diào)用;
(5)策略管理模塊:針對用戶及用戶組分配桌面安全策略(包括USB啟用禁用、圖像復(fù)制粘貼啟用禁用、文件及文件夾復(fù)制粘貼啟用禁用、音頻視頻設(shè)備啟用禁用)、桌面過期時(shí)間、桌面過期消息、離線訪問期限等;
(6)監(jiān)控管理:監(jiān)控系統(tǒng)管理桌面云管理平臺(tái)的運(yùn)行和客戶端虛擬機(jī)的運(yùn)行,一旦發(fā)生異常,發(fā)出報(bào)警;
(7)日志管理:記錄桌面云管理平臺(tái)、客戶端的運(yùn)行日志、操作日志等;
(8)終端管理模塊:終端管理模塊用于從連接服務(wù)端下載鏡像并在客戶端OpenStack環(huán)境創(chuàng)建虛擬機(jī)。此外,客戶端的數(shù)據(jù)通過終端管理模塊更新安全策略信息、下載或上傳用戶數(shù)據(jù)到服務(wù)端。
依據(jù)上面介紹,本文設(shè)計(jì)了離線桌面云管理系統(tǒng)的詳細(xì)的架構(gòu),組件之間的詳細(xì)的交互關(guān)系如圖2所示。
圖2 系統(tǒng)詳細(xì)交互架構(gòu)圖
離線桌面云管理平臺(tái)運(yùn)行環(huán)境為Linux,平臺(tái)實(shí)現(xiàn)采用Python語言,數(shù)據(jù)庫為MySQL。下面主要介紹調(diào)用代理模塊、用戶管理模塊、桌面管理模塊、鏡像管理模塊、策略管理模塊和客戶端桌面管理的實(shí)現(xiàn)方法。
本系統(tǒng)主要通過調(diào)用代理模塊實(shí)現(xiàn)桌面云管理平臺(tái)模塊與外部數(shù)據(jù)的交互和通訊,模塊采用了面向?qū)ο蟮脑O(shè)計(jì)模式,在調(diào)用代理模塊中主要利用了四個(gè)類,包 括 ProxyAgent、vmOpreat、ImageOpreat 和 client?Conn。類之間的交互關(guān)系如圖3所示。
圖3 調(diào)用管理模塊交互圖
vmOpreat類提供了對Nova組件進(jìn)行API調(diào)用的函數(shù),主要是操控虛擬機(jī)實(shí)例的函數(shù),包括虛擬機(jī)創(chuàng)建vmCreate、虛擬機(jī)停止vmStop、虛擬機(jī)刪除vmDelete、虛擬機(jī)暫停vmPause等函數(shù)。
ImageOpreat類提供了對Glance組件進(jìn)行API調(diào)用的函數(shù),包括操作鏡像函數(shù),鏡像的注冊ImageRegis?try、鏡像的上傳 ImageGet和下載、ImagePut、鏡像元數(shù)據(jù)的更改ImageModi、虛擬機(jī)的快照vmSnap等操作。
clientConn類中,負(fù)責(zé)用戶驗(yàn)證的接口,包括用戶的登錄驗(yàn)證、鏡像的下載、策略的更新、用戶數(shù)據(jù)的上傳下載等。
在調(diào)用代理模塊中,主要存在了三個(gè)主線程。分別為:
(1)OpenStack Nova組件接口。該線程主要負(fù)責(zé)發(fā)送API調(diào)用給OpenStack Nova組件,調(diào)用OpenStack組件的服務(wù),主要為桌面管理模塊的接口。
(2)OpenStack Glance組件接口。該線程主要負(fù)責(zé)發(fā)送API調(diào)用給OpenStack Glance組件,調(diào)用Open?Stack組件的服務(wù),主要為鏡像管理模塊的接口。
(3)客戶端接口。該接口是負(fù)責(zé)接受用戶連接的線程池。用戶通過該模塊連接用戶管理模塊,進(jìn)行用戶的驗(yàn)證、鏡像的下載、策略的更新、用戶數(shù)據(jù)的上傳下載等。
用戶管理模塊主要通過兩個(gè)類來實(shí)現(xiàn),包括userAPI類、和User類。類圖如圖4所示。
圖4 用戶管理模塊交互圖
userAPI類提供了用戶的注冊、用戶的登錄、獲得用戶桌面、同步桌面等函數(shù)。在該模塊中,用戶的驗(yàn)證方式是客戶端通過keystone組件的用戶進(jìn)行訪問認(rèn)證,從而獲取通過驗(yàn)證時(shí)所得到的認(rèn)證token來訪問OpenStack組件等后續(xù)操作。
如果用戶已經(jīng)注冊,userInfoList類用于調(diào)用桌面管理模塊來查詢該用戶擁有的桌面模板、安全策略等信息。User類主要記錄了該用戶的一些屬性信息。
桌面管理模塊主要有兩個(gè)核心的類,分別為desk?DisAPI、deskManageAPI、deskInfo。這三個(gè)類的類圖如5所示。
圖5 桌面管理模塊交互圖
deskDisAPI類提了桌面分配,deskManageAPI提供了桌面管理的API函數(shù),deskInfo主要記錄了該桌面的一些屬性信息,包括鏡像信息、安全策略信息。
鏡像管理模塊主要有兩個(gè)核心的類,分別為im?ageAPI和imageInfo。這兩個(gè)類的類圖如圖6所示。
圖6 鏡像管理模塊交互圖
imageAPI類提供給用戶操作的鏡像的API函數(shù),包括鏡像添加、刪除和修改函數(shù);由于imageOpreat類繼承imageAPI類,用戶執(zhí)行imageAPI中的函數(shù)的同時(shí),其實(shí)也是執(zhí)行imageOpreat類中的函數(shù)。imageInfo主要記錄了該鏡像的一些屬性信息。
客戶端管理模塊主要有兩個(gè)核心的類,分別為cli?entManageAPI、vmOpreat、clientInfo。這四個(gè)類的類圖如圖7所示。
圖7 客戶端桌面管理模塊交互圖
clientManageAPI類提供給用戶操作的API函數(shù),包括桌面鏡像下載、用戶數(shù)據(jù)的恢復(fù)和備份、用戶安全策略等;vmOpreat類提供給對客戶端OpenStack的No?va組件進(jìn)行API調(diào)用的函數(shù),主要包括操作虛擬機(jī)的實(shí)例的函數(shù),clientInfo記錄客戶端桌面的信息,包括安全策略信息。
用戶使用桌面云的訪問流程,如圖8:
(1)用戶通過客戶端提出訪問申請,在客戶端輸入桌面云服務(wù)器地址、賬號和密碼,無該用戶虛擬桌面會(huì)提示下載鏡像模板,創(chuàng)建虛擬機(jī);有該用戶虛擬桌面會(huì)更新桌面策略、桌面應(yīng)用的信息;
(2)訪問申請傳送至桌面云管理平臺(tái),桌面云管理平臺(tái)中的用戶管理模塊處理用戶的訪問申請,判斷訪問是否有效;
(3)當(dāng)判斷訪問無效時(shí),將無效信息反饋至客戶端,提醒客戶輸入正確的登錄信息;
(4)當(dāng)訪問有效時(shí),用戶管理系統(tǒng)分配用戶的桌面資源信息,包括桌面鏡像模板、安全策略信息等;
(5)鏡像管理模塊根據(jù)用戶信息下發(fā)鏡像模板;
(6)客戶端下載鏡像模板,創(chuàng)建虛擬機(jī)、更新桌面應(yīng)用信息、策略信息,虛擬機(jī)創(chuàng)建完成并重啟后就可以訪問桌面云;
(7)此外,用戶可以上傳用戶數(shù)據(jù)至桌面云管理平臺(tái)以保存用戶數(shù)據(jù)。
圖8 桌面交付流程圖
本文首先介紹了桌面云技術(shù)的意義及其面臨的問題,然后對于離線桌面云,在基于OpenStack組件開發(fā)基礎(chǔ)上提出了自己的整體系統(tǒng)架構(gòu)設(shè)計(jì)和整個(gè)系統(tǒng)組件的交互方式。同時(shí),簡要描述了離線桌面云各個(gè)模塊的實(shí)現(xiàn)方法,包括代理模塊、用戶模塊、桌面管理模塊和鏡像管理模塊等。最后,對離線桌面云系統(tǒng)的桌面交付流程進(jìn)行了闡述,對于在OpenStack組件開發(fā)及同類產(chǎn)品具有一定的借鑒意義。