經(jīng)貿(mào)項目-系統(tǒng)詳細(xì)設(shè)計_第1頁
經(jīng)貿(mào)項目-系統(tǒng)詳細(xì)設(shè)計_第2頁
經(jīng)貿(mào)項目-系統(tǒng)詳細(xì)設(shè)計_第3頁
經(jīng)貿(mào)項目-系統(tǒng)詳細(xì)設(shè)計_第4頁
經(jīng)貿(mào)項目-系統(tǒng)詳細(xì)設(shè)計_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

系統(tǒng)詳細(xì)設(shè)計1/45浙江經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院虛擬化管理軟件項目系統(tǒng)詳細(xì)設(shè)計盟智軟件(上海)有限公司浙江久遠(yuǎn)教育軟件開發(fā)有限公司TIME\@"yyyy'年'M'月'd'日'"2013年1月8日

目錄1引言 31.1 編寫目的 31.2 背景 31.3 參考資料 41.4 術(shù)語定義及說明 51.4.1專門術(shù)語 51.4.2英文縮寫 51.4.3關(guān)鍵詞 52詳細(xì)設(shè)計的任務(wù)和目標(biāo) 53系統(tǒng)總體結(jié)構(gòu). 64系統(tǒng)詳細(xì)設(shè)計. 84.1系統(tǒng)結(jié)構(gòu)設(shè)計及子系統(tǒng)劃分 84.1.1系統(tǒng)框架 84.1.2子系統(tǒng)劃分 94.2系統(tǒng)功能模塊詳細(xì)設(shè)計 104.2.1統(tǒng)一配置管理 104.2.2升級: 114.2.3GC模塊設(shè)計 124.2.4初始化模塊設(shè)計 144.2.5虛擬機(jī)運(yùn)行 154.2.6PAAS層接口設(shè)計 165.3系統(tǒng)界面詳細(xì)設(shè)計 385.3.1管理員界面設(shè)計 385.3.2用戶界面設(shè)計 43

1引言編寫目的本文是路雅私有云教學(xué)系統(tǒng)軟件的具體實現(xiàn)方案。根據(jù)系統(tǒng)需求分析和概要設(shè)計說明,對系統(tǒng)的每一個模塊的實現(xiàn)方法,進(jìn)行詳細(xì)的設(shè)計,定義數(shù)據(jù)結(jié)構(gòu),模塊內(nèi)部的調(diào)用關(guān)系,調(diào)用流程及異常處理等。本文檔作為開發(fā)人員開發(fā)和調(diào)試,以及測試人員單元測試白盒測試的依據(jù)。本文檔的用戶包括架構(gòu)設(shè)計人員、開發(fā)人員、測試人員。背景路雅云桌面產(chǎn)品是路雅私有云平臺的一個重要組成部分,它的設(shè)計目標(biāo)是:即可以獨(dú)立的部署,也可以和路雅私有云平臺統(tǒng)一部署提供工作用桌面相對于私人桌面,工作桌面的主要要求有:標(biāo)準(zhǔn)化定制每個崗位所需的桌面內(nèi)容是確定的;不同崗位的桌面內(nèi)容是不同的,因此,工作用桌面對某個具體崗位來說,是統(tǒng)一的,標(biāo)準(zhǔn)化的;對不同的工作崗位來說,它又是定制的、個性化的。不可修改用戶對工作桌面所所的任何修改,包括安裝新的應(yīng)用軟件,修改系統(tǒng)配置,生成新的數(shù)據(jù)文件數(shù)據(jù)文件的持久保存可以通過第三方的網(wǎng)絡(luò)存儲,或者路雅私有云系統(tǒng)提供的云存儲來實現(xiàn)。等,在工作桌面關(guān)機(jī)后都會自動被清除。這保證了:數(shù)據(jù)文件的持久保存可以通過第三方的網(wǎng)絡(luò)存儲,或者路雅私有云系統(tǒng)提供的云存儲來實現(xiàn)。每次用戶開機(jī)時,得到的是一個可用的,可靠的工作桌面萬一感染病毒或木馬,即使已經(jīng)傳染到所有的工作桌面上,用戶也只需要通過關(guān)機(jī),再重新開機(jī)的方式進(jìn)行免疫路雅云桌面的優(yōu)點(diǎn)系統(tǒng)管理員負(fù)責(zé)創(chuàng)建用戶,并提供鏡像文件模板。每個普通用戶都可以共享系統(tǒng)提供的云桌面資源。高級用戶還可以自行制作和發(fā)布新的云桌面,經(jīng)管理員審核認(rèn)可后,即可和它人共享。它的優(yōu)點(diǎn)是:不變的用戶體驗:云桌面能夠提供和個人電腦上一摸一樣的用戶體驗,包括多媒體音頻和視頻的播放,2D/3D應(yīng)用軟件等隨時隨地訪問:在企業(yè)范圍內(nèi)內(nèi),任何地方,任何時間,用戶都可以通過各種終端來訪問云桌面,包括PC,筆記本電腦,平板電腦。配合CloudStorage應(yīng)用平臺,還可以用來保存重要的數(shù)據(jù)和文件離線使用功能:通過動態(tài)緩存技術(shù),為PC,筆記本電腦等終端提供了離線使用的功能。即使無法接入到云桌面系統(tǒng)之中,緩存的數(shù)據(jù)也能夠讓用戶正常運(yùn)行以前運(yùn)行過的云桌面。對病毒免疫:用戶對云桌面的任何改動,在關(guān)機(jī)以后會自動清除,這不但能為用戶提供更高的安全和保護(hù),還能通過簡單的關(guān)機(jī)重啟動作,快速的清除掉病毒、木馬對工作桌面的破壞。參考資料《系統(tǒng)概要設(shè)計》術(shù)語定義及說明1.4.1專門術(shù)語云桌面:通過云計算平臺來管理的虛擬桌面。目錄服務(wù):一種數(shù)據(jù)存儲格式,遵循輕量級目錄訪問協(xié)議(LDAP)。離線模式:網(wǎng)絡(luò)故障的情況下,保證業(yè)務(wù)部中斷。Hypervisor:虛擬機(jī)運(yùn)行的平臺,由軟件虛擬出來的虛擬硬件層。1.4.2英文縮寫MVC:ModelViewControllerLDAP:LightweightDirectoryAccessProtocolVDI:VirtualDesktop

InfrastructurePAAS:Platform-as-a-ServiceIAAS:InfrastructureasaService1.4.3關(guān)鍵詞云計算、云桌面、虛擬化、集群2詳細(xì)設(shè)計的任務(wù)和目標(biāo)根據(jù)系統(tǒng)的需求說明和概要設(shè)計,實現(xiàn)整個系統(tǒng)的每個程序模塊對外的提供的接口和功能。這些接口包括Web服務(wù)、目錄服務(wù)、中央控制、存儲控制、集群控制、節(jié)點(diǎn)控制、本地代理服務(wù)、物理機(jī)監(jiān)控服務(wù)。這個系統(tǒng)以面向?qū)ο笏枷脒M(jìn)行實現(xiàn),盡量按照MVC的設(shè)計模式,將數(shù)據(jù)處理,業(yè)務(wù)邏輯,和用戶界面進(jìn)行松耦合。保障系統(tǒng)的可維護(hù)性和可擴(kuò)展性,以利于功能增強(qiáng)或二次開發(fā)。3系統(tǒng)總體結(jié)構(gòu).系統(tǒng)由下幾個部分組成:LDAP服務(wù)器LDAP服務(wù)器保持了整個路雅云集計算平臺軟件系統(tǒng)正常運(yùn)行所需要的所有配置數(shù)據(jù),它是路雅云集計算平臺的核心數(shù)據(jù)部分。因此它必須得到最好的保護(hù),并以單獨(dú)物理服務(wù)器的方式運(yùn)行。配置服務(wù)器本服務(wù)器供管理人員對LDAP服務(wù)器上的配置數(shù)據(jù)進(jìn)行修改;配置服務(wù)器可以通過LDAP服務(wù)器找到路雅云集計算平臺系統(tǒng)中各個軟件部分,并對他們進(jìn)行操作調(diào)用?;旧峡梢杂蒀LC的8443端口的WEB服務(wù)改進(jìn)而成。云控制器即eucalyptus的CLC。它是路雅云集計算平臺的核心控制部分,必須得到最好的保護(hù),并以單獨(dú)物理服務(wù)器的方式運(yùn)行。鏡像管理服務(wù)器即eucalyptus的walrus。它負(fù)責(zé)虛擬機(jī)鏡像的注冊,保存和下載。存儲工作轉(zhuǎn)交存儲服務(wù)器具體完成。集群控制器即eucalyptus的CC。在路雅云集計算平臺環(huán)境下,可能需要幾個CC。例如虛擬桌面CC,虛擬服務(wù)器CC等。節(jié)點(diǎn)服務(wù)器即eucalyptus的NC。在路雅云集計算平臺環(huán)境下,對歸屬于不同CC的節(jié)點(diǎn)服務(wù)器其管理和調(diào)度方式不同。終端機(jī)器即各種PC機(jī)。其上可安裝的客戶端有:RemoteWindowsClientLocalWindowsClientLocalLinuxClient云存儲服務(wù)器即iFolder服務(wù)器。能為用戶提供不同大小的存儲空間和共享空間存儲服務(wù)器即運(yùn)行HDFS的一個機(jī)器集群。其參數(shù)配置歸配置服務(wù)器管理,其性能,負(fù)載均衡,容災(zāi)備份歸性能狀態(tài)監(jiān)控服務(wù)器管理性能狀態(tài)監(jiān)控服務(wù)器監(jiān)控整個路雅云集計算平臺系統(tǒng)和各組成部分的狀態(tài),并提供工具供管理員進(jìn)行人工干預(yù)。各軟件部件在運(yùn)行后,必須立刻向LDAP服務(wù)器注冊自己;并根據(jù)不同的時間間隔,向LDAP服務(wù)器報告自己是否活躍,并報告基本狀態(tài)信息。4系統(tǒng)詳細(xì)設(shè)計.4.1系統(tǒng)結(jié)構(gòu)設(shè)計及子系統(tǒng)劃分4.1.1系統(tǒng)框架整個系統(tǒng)按照云計算的IAAS,PAAS,SAAS三層架構(gòu)劃分。運(yùn)行在服務(wù)器的操作系統(tǒng)之上,為上層應(yīng)用提供服務(wù)。系統(tǒng)框架圖如下:4.1.2子系統(tǒng)劃分整個軟件系統(tǒng)分為一下幾個模塊:目錄服務(wù)中央控制存儲控制集群控制節(jié)點(diǎn)控制本地代理服務(wù)物理機(jī)監(jiān)控服務(wù)子系統(tǒng)劃分框圖:WebclientserverWebclientserverProxyCLCProxyLDAPNCLocalHostLuhyaserverCCLDAPCLCWalrusspiceonlineonlineonlineofflineonline4.2系統(tǒng)功能模塊詳細(xì)設(shè)計4.2.1統(tǒng)一配置管理流程如下:1.每個節(jié)點(diǎn)的daemon在系統(tǒng)啟動后,會自動的向LDAP更新自己的狀態(tài)數(shù)據(jù)等信息

2.用戶通過瀏覽器訪問“配置管理WEB服務(wù)"

3.該WEB服務(wù)從LDAP上獲取路雅云集計算平臺系統(tǒng)的所有信息并顯示,這不但包括配置信息,還包括每個節(jié)點(diǎn)通過daemon匯報給LDAP的狀態(tài)信息

4.用戶在配置界面上所作的修改,不但要保存到LDAP服務(wù)器上,有些操作命令,例如start,stop,還需要發(fā)送到每個節(jié)點(diǎn)的daemon進(jìn)程,并取得返回結(jié)果4.2.2升級流程如下:1:用戶通過“配置管理WEB服務(wù)"把新的安裝包提交到"軟件升級服務(wù)器"的軟件倉庫之中2:用戶通過“配置管理WEB服務(wù)"的操作,決定升級到某個指定版本(這項操作的粒度為升級系統(tǒng)中某類節(jié)點(diǎn)的軟件版本),并可設(shè)定升級時間3:每個節(jié)點(diǎn)的daemon會定期的查詢LDAP服務(wù)器,獲取升級命令4:每個節(jié)點(diǎn)的daemon會聯(lián)系"軟件升級服務(wù)器",下載對應(yīng)的軟件安裝包,然后執(zhí)行“停止服務(wù)-安裝軟件-啟動服務(wù)”等流程。4.2.3GC模塊設(shè)計GC模塊的功能介紹:在客端沒有關(guān)閉instance就退出的情況下,自動清理殘留在NC節(jié)點(diǎn)上的instance,GC模塊只存在NC節(jié)點(diǎn)上。在安裝時,先判定是否為NC節(jié)點(diǎn),確認(rèn)后才安裝GC模塊(本功能待實現(xiàn))。設(shè)計思路定期檢查客戶端發(fā)送的heartbeat信息,當(dāng)超出一定的時間(現(xiàn)定為10分鐘)沒有接收到客戶端heartbeat信息時,認(rèn)為客戶端已關(guān)閉;如果客端關(guān)閉則清除此客戶端啟動的instance.流程如下:1.檢查服務(wù)器是否安裝了服務(wù)模塊,如果沒有則不能進(jìn)入下一步;同時判定節(jié)點(diǎn)是否為NC節(jié)點(diǎn),如果不是則不進(jìn)入下一步(本功能待實現(xiàn))。2.定時通過以下步驟判定客戶端是否已經(jīng)關(guān)閉:2.1以關(guān)健字(filter):'(&(objectClass=DESKTOPCONFIG)(instanceID=*))'從ldap上查找目錄屬性,從中得到uuid,instanceid,heartbeat信息,2.2取本地緩存的desktop信息;取當(dāng)前本地時間。2.3檢查客戶端發(fā)出的heartbeat信息,當(dāng)heartbeat十分鐘沒有更新,則判定客戶端已經(jīng)關(guān)閉;否則更新本地緩存;3.如果客戶端已經(jīng)關(guān)閉,終止由已關(guān)閉客戶端啟動的虛擬機(jī)實例。4.從ldap中刪除相關(guān)instance信息。數(shù)據(jù)結(jié)構(gòu):本模塊從以下ldap入口節(jié)點(diǎn)中讀取所有和destop信息;<pre>_basedn='ou=desktopconfig,ou=eucaconfig,cn=clc,o=路雅云集計算平臺,o=sinobot'</pre>4.2.4初始化模塊設(shè)計1.功能介紹:1.在檢查LDAP相關(guān)設(shè)置,并為每個agent在LDAP的ou=deploy,o=路雅云集計算平臺,o=sinobot下建立相應(yīng)的記錄。2.檢查系統(tǒng)中已經(jīng)安裝的功能和角色,如當(dāng)前服務(wù)器安裝了clc,walrus,還是desktop等。3.Init作為第一個被加載的模塊,只有在正確設(shè)置后才會繼續(xù)加載后續(xù)的模塊。2.設(shè)計思路:檢查LDAP相關(guān)設(shè)置,檢查系統(tǒng)中已經(jīng)安裝的功能和角色,如果沒有則安裝模塊,并在ldap上添加記錄。3.流程設(shè)計init模塊的作用是:檢查LDAP相關(guān)設(shè)置,檢查系統(tǒng)中已經(jīng)安裝的功能和角色,流程如下;1.從文件/var/lib/dbus/machine-id中生成本機(jī)ID,2.生成關(guān)健字'(&(objectClass=Agent)(cn=%s))',檢查LDAP相關(guān)設(shè)置,如果已經(jīng)設(shè)置完畢則不做處理;否則,檢查系統(tǒng)中已經(jīng)安裝的功能和角色,如當(dāng)前服務(wù)器安裝了clc,walrus,還是desktop等;為每個agent在LDAP的ou=deploy,o=路雅云集計算平臺,o=sinobot下建立相應(yīng)的記錄。例如,如果成功屬性如下::CAP_CLC,:CAP_WALRUS,:CAP_CC,:CAP_NC,:CAP_DESKTOP,:CAP_STORAGE,:CAP_REPOSITORY3.使用glib庫函數(shù)創(chuàng)建定時器,定時在/sys/class/net/查找本機(jī)所有的以太網(wǎng)IP,然后在ldap上更新本機(jī)ip地址。4.2.5虛擬機(jī)運(yùn)行1.功能介紹用戶界面上選擇某一個云桌面并且啟動后,在中心機(jī)房的服務(wù)器上運(yùn)行,并將云桌面的圖像通過網(wǎng)絡(luò)傳輸,顯示在客戶端。用戶感覺就像在使用本地電腦,但實際上所有的運(yùn)算和操作都是在服務(wù)器上。2.設(shè)計思路Web服務(wù)提供顯示云桌面列表和提供云桌面啟動操作的處理接口。中央處理器負(fù)責(zé)機(jī)群的調(diào)度,機(jī)群控制器調(diào)度合適節(jié)點(diǎn),然后虛擬機(jī)在節(jié)點(diǎn)上開始運(yùn)行,節(jié)點(diǎn)將運(yùn)行狀態(tài)定時向上匯報。3.流程設(shè)計1.客戶端首先發(fā)起運(yùn)行虛擬機(jī)的請求給Web服務(wù)器端,并且將username,imageid發(fā)送給Web服務(wù)器。2.Web服務(wù)器收到請求以后,調(diào)用中央控制器提供的運(yùn)行虛擬機(jī)的接口startvm。3.中央控制器負(fù)責(zé)到目錄服務(wù)上檢查用戶的請求是否合法,不合法抱錯退出。合法則根據(jù)目前集群的狀態(tài),按照配置好的算法,選擇一個空閑的集群,向該集群發(fā)送啟動虛擬機(jī)的請求。4.集群控制器收到請求以后,將調(diào)用一個空閑的節(jié)點(diǎn)工作服務(wù)器,讓其啟動虛擬機(jī),并實時監(jiān)控狀態(tài),向中央控制器匯報。5.節(jié)點(diǎn)工作服務(wù)器,根據(jù)請求,運(yùn)行虛擬機(jī)。并且將虛擬機(jī)的狀態(tài),實時匯報給集群控制器。4.序列圖的4.2.6PAAS層接口設(shè)計ldap端的接口函數(shù)stringluhya_reg_getClcIp()功能:獲得clc的IP地址參數(shù):無返回:字符串:clc的IP地址boolluhya_reg_judgeUser(1:stringuserName,2:stringpassword)功能:判斷用戶是否是合法用戶參數(shù):1、用戶名稱,stringuserName2、密碼,stringpassword(用base64加密的字符串)返回:如果ldap上有該用戶,且密碼相同,返回true,否則返回falselist<thd_ClusterInfo>luhya_reg_getClusterList();功能:從ldap上獲得cluster列表參數(shù):無返回:ldap上所有cluster的列表list<thd_NodeInfo>luhya_reg_getNodeList();功能:從ldap上獲得node列表參數(shù):無返回:ldap上所有node的列表list<thd_NodeInfo>luhya_reg_getNodeInfoByCluster(1:stringclusterName);功能:從ldap上獲得clusterName下的所有node列表參數(shù):cluster名稱,stringclusterName返回:ldap上clusterName下的所有node的列表list<thd_UserInfo>luhya_reg_getUserList();功能:從ldap上獲得所有用戶列表參數(shù):無返回:ldap上所有用戶的列表list<thd_ImageInfo>luhya_reg_getImageList();功能:從ldap上獲得所有鏡像列表參數(shù):無返回:ldap上所有鏡像的列表thd_ImageInfoluhya_reg_getImageInfo(1:stringdesktopID);功能:從ldap上獲得鏡像desktopID的信息參數(shù):鏡像名稱,stringdesktopID返回:ldap上鏡像desktopID的信息boolluhya_reg_mergeImageInfo(1:thd_ImageInfodesktopInfo);功能:修改鏡像信息參數(shù):鏡像信息,thd_ImageInfodesktopInfo返回:修改成功返回true,否則返回falseboolluhya_reg_addImageInfo(1:thd_ImageInfonewDesktopInfo);功能:增加鏡像信息參數(shù):鏡像信息,thd_ImageInfodesktopInfo返回:增加成功返回true,否則返回falseboolluhya_reg_deleteImage(1:stringdesktopID);功能:刪除鏡像desktopID參數(shù):鏡像ID,stringdesktopInfo返回:刪除成功返回true,否則返回falsestringluhya_reg_getWalrusIp();功能:從ldap上獲取walrus的ip地址參數(shù):無返回:字符串,walrus的ip地址stringluhya_reg_getWalrusBucketName();功能:從ldap上獲取walrus的存儲鏡像的bucket目錄參數(shù):無返回:字符串,walrus的存儲鏡像的bucket目錄list<string>luhya_reg_getCategoryList();功能:從ldap上獲取部門列表參數(shù):無返回:部門列表list<string>luhya_reg_getDesktopTypeList();功能:從ldap上獲取鏡像的類型列表(desktop,server等)參數(shù):無返回:鏡像的類型列表list<string>luhya_reg_getOSTypeList();功能:從ldap上獲取鏡像的操作系統(tǒng)類型列表(windows,linux等)參數(shù):無返回:操作系統(tǒng)類型列表stringluhya_reg_getMakeImageNode();功能:從ldap上獲取制作鏡像的node的ip參數(shù):無返回:字符串,ip地址stringluhya_reg_getUserSecretKey(1:stringuserName);功能:從ldap上獲取用戶的secretKey參數(shù):、用戶名稱,stringuserName返回:字符串,secretKeystringluhya_reg_getUserQueryId(1:stringuserName)功能:從ldap上獲取用戶的QueryId參數(shù):、用戶名稱,stringuserName返回:字符串,QueryIdclc端的接口函數(shù)boolluhya_res_terminateInstance(1:stringinstanceID);功能:終止一個運(yùn)行的instance參數(shù):stringinstanceID返回:成功返回true,否則返回falseboolluhya_res_restartInstance(1:stringinstanceID);功能:重啟一個運(yùn)行的instance參數(shù):stringinstanceID返回:成功返回true,否則返回falsewalrus端的接口函數(shù)i64luhya_res_getImageLength(1:stringwalrusBucket,2:stringdesktopID);功能:獲得鏡像的實際大小參數(shù):1:存儲鏡像的目錄,stringwalrusBucket2:鏡像的id號,stringdesktopID返回:鏡像的大小cc端的接口函數(shù)list<thd_InstanceInfo>luhya_res_getInstanceByNode(1:stringnodeIp);功能:獲得指定node上運(yùn)行的instance列表參數(shù):node的地址,stringnodeIp返回:instance列表nc端的接口函數(shù)boolluhya_res_isImageExisit(1:stringdesktopID,2:i64imgLen)功能:判斷鏡像是否在該nc上下載完成參數(shù):1:鏡像的id號,stringdesktopID2:鏡像的長度,i64imgLen返回:下載完成返回true,否則返回falsestringluhya_res_runInstanceByBaseImage(1:stringdesktopID,2:stringSecretKey,3:stringQueryId)功能:在該nc上運(yùn)行鏡像desktopID參數(shù):1:鏡像的id號,stringdesktopID2:用戶的SecretKey,stringSecretKey3:用戶的QueryId,stringQueryId返回:成功,返回instanceid號,否則返回空說明:運(yùn)行鏡像的instanceid號命名規(guī)則:mke-xxxxxxxxProxy接口設(shè)計函數(shù)本地緩存數(shù)據(jù)目錄定義:/var/lib/eucalyptus/.luhya/caches/emi-xxxxxx/machine原始鏡像文件/imageinfo.xml鏡像描述文件/instances/username/emi-xxxxxx/machinecopyonwrite鏡像/users/username/logon.xml用戶認(rèn)證文件/clientdata.xml用戶虛擬機(jī)列表/imageinfos.xml用戶可使用鏡像列表/ldapcaches/categories.xml部門列表/clc.xmlclcip地址/local_node.xml本地Node信息/cluster.xmlcluster信息/register.xmlNode注冊信息/walrus.xml/etc/eucalyptus/eucalyptus-ldap.confLDAP_SERVER=”00/etc/eucalyptus/eucalyptus-real-ldap.confLDAP_SERVER=”00/etc/eucalyptus/eucalyptus-nc.confCC_NAME=cc-demo如何判斷Online還是offlineProxyLdapServer啟動時增加檢測線程設(shè)置全局變量g_online,判斷方法如下:檢測時間間隔:如果是online,1分鐘檢測一次,如果是offlien,5秒鐘檢測一次調(diào)用LdapThriftServerAPIluhya_reg_is_online()和ClcThriftServerluhya_res_is_online()的判斷如果兩個同時成功,g_online=true;否則,g_online=false調(diào)用時,設(shè)定超時10秒ProxyLdapServer也要增加luhya_reg_is_online(),供ProxyClcServer調(diào)用用戶登錄功能ProxyLdapServerAPI1)i64euca_reg_domain_user_logon(1:stringuserName,2:stringpassword,3:stringdomain);偽代碼如下:如果是在線模式:1)轉(zhuǎn)發(fā)調(diào)用LdapThriftServerAPIeuca_reg_domain_user_logon()進(jìn)行認(rèn)證2)認(rèn)證成功時,將認(rèn)證信息保存/var/lib/eucalyptus/.luhya/users/username/logon.ini如果是離線模式:從/var/lib/eucalyptus/.luhya/users/username/logon.in讀取信息進(jìn)行認(rèn)證。用戶名、密碼、domain匹配時,認(rèn)證成功注:logon.ini(如:logon.ini)格式如下:username=sam.weipassword=123456(MD5)domain=logonname=sam.wei2)i64luhya_reg_get_max_private_instances(1:stringuser);//獲取用戶最大的運(yùn)行虛擬機(jī)個數(shù)偽代碼如下:如果是在線模式:轉(zhuǎn)發(fā)LdapThriftServerluhya_reg_get_max_private_instancesAPI獲取個數(shù);如果是離線模式:直接返回1;注冊原來的Node端注冊流程:啟動注冊線程,循環(huán):1、獲得本機(jī)ip;2、調(diào)用ldap的luhya_reg_is_registered(servID,hostIp)判斷是否注冊(servID為node;hostIp為本機(jī)Ip);如果已經(jīng)注冊:1、跳出循環(huán)如果沒有注冊:調(diào)用p_get_ccname_conf()獲得設(shè)定的ccname調(diào)用ldap的luhya_reg_init_node_info(nodeInfo)注冊node 如果注冊成功:跳出循環(huán) 如果注冊不成功:停1秒,繼續(xù)循環(huán)注冊Local模式node運(yùn)行時,需在proxcyLdap上實現(xiàn)以下接口:luhya_reg_is_registered(servID,hostIp)luhya_reg_init_node_info(nodeInfo)proxcyLdap上實現(xiàn)luhya_reg_init_node_info(nodeInfo):1、調(diào)用is_online()判斷本機(jī)是否在線如果在線:將nodeInfo的isLocal屬性設(shè)為TRUE調(diào)用真正的ldap的接口luhya_reg_init_node_info(nodeInfo)如果注冊成功:1、將nodeInfo、clusterInfo保存到local_node.inicluster.ini中2、返回TRUE 如果注冊不成功: 返回FALSE如果不在線:返回FALSE注:/var/lib/eucalyptus/.luhya/ldapcaches/local_node.xmlnodeinfo保存格式如下:<nodeInfo><hostIp>00</hostIp> <clusterName>CC-Demo</clusterName> …<isLocal>TRUE</isLocal></nodeInfo>/var/lib/eucalyptus/.luhya/offline/cluser.xmlclusterinfo保存格式如下:<clusterInfo><clusterName>cc-demo</clusterName><hostIp>00</hostIp> <HYPERVISOR>kvm</HYPERVISOR></clusterInfo>proxcyLdap上實現(xiàn)luhya_reg_is_registered(servID,hostIp):調(diào)用is_online()判斷本機(jī)是否在線如果在線:調(diào)用真正的ldap的接口luhya_reg_is_registered(servID,hostIp)得到返回值并返回如果不在線:查看/var/lib/eucalyptus/ldapcaches/下是否有l(wèi)ocal_node.ini文件如果沒有: 返回FALSE(沒有注冊)如果有:返回TRUE(已經(jīng)注冊)查詢云桌面列表:ProxyCLCServerAPI1)luhya_clc_get_client_data(user,requestIp):獲取用戶數(shù)據(jù)列表調(diào)用is_online()判斷本機(jī)是否在線如果在線:忽略requestIP,WebServer傳過來的requestIP總是NULL2.獲得本機(jī)的IP地址作為requestIP3.判斷clientdata.ini是否存在,如果存在,刪掉,以下所有文件都類似處理4.調(diào)用真正的clc上的luhya_clc_get_client_data(user,requestIp)獲得clientInfo列表,并將列表保存到:/var/lib/eucalyptus/.luhya/users/username/clientdata.xml返回clientInfo列表如果不在線:判斷文件clientdata.ini是否存在,如果存在:從文件clientdata.ini中讀取clientInfo列表將clientInfo列表中遠(yuǎn)程的instance的is_can_run設(shè)為false判斷/var/lib/eucalyptus/.luhya/cache/imageID/下machine文件是否存在,若存在,isCanRun為true,反之為false調(diào)用nc端的luhya_reg_get_instances_state(user)獲得instance狀態(tài)列表,根據(jù)狀態(tài)列表更新列表clientInfo的state,返回clientInfo列表如果不存在,返回NoneProxyCLCServerAPIluhya_reg_getCategoryList()在線模式:直接調(diào)用LdapThriftServerAPIluhya_reg_getCategoryList獲取部門列表信息,并保存在:/var/lib/eucalyptus/.luhya/ldapcaches/categories.xml離線模式:從/var/lib/eucalyptus/.luhya/ldapcaches/categories.xml獲取部門列表2)list<thd_ImageInfo>euca_reg_getImageList(userName);在線模式:直接調(diào)用LdapThriftServer的euca_reg_getImageList(userName)鏡像列表信息,并將鏡像列表保存在/var/lib/eucalyptus/.luhya/users/userName/imageinfos.xml中。離線模式:從/var/lib/eucalyptus/.luhya/users/imageinfos.xml獲取鏡像列表信息3)thd_ImageInfoluhya_reg_getImageInfo(1:stringimageID);在線模式:直接調(diào)用LdapThriftServerAPIluhya_reg_getImageInfo(1:stringimageID返回鏡像列表信息,并將鏡像列表保存在:/var/lib/eucalyptus/.luhya/caches/imageID/imageinfo.ini中,離線模式:

從/var/lib/eucalyptus/.luhya/caches/imageID/imageinfo.ini獲取鏡像列表信息管理員刪除image時應(yīng)該刪除imageinfo.ini文件啟動虛擬機(jī)ProxyLDAPServerAPI:luhya_reg_get_nodeinfo_by_nodeIp(nodeIp)調(diào)用is_online()判斷本機(jī)是否在線:如果在線:調(diào)用真正ldap的luhya_reg_get_nodeinfo_by_nodeIp(nodeIp)獲得nodeInfo如果不在線:查看/var/lib/eucalyptus/.luhya/ldapCache/是否有l(wèi)ocal_node.ini文件?如果有:從local_node.ini中取得nodeInfo地址返回如果沒有:返回Noneluhya_reg_get_ins_report_intv():調(diào)用is_online()判斷本機(jī)是否在線:如果在線:調(diào)用真正ldap的luhya_reg_get_ins_report_intv()獲得時間間隔如果不在線:返回1luhya_reg_getWalrusPort()調(diào)用is_online()判斷本機(jī)是否在線:如果在線:調(diào)用真正ldap的luhya_reg_getWalrusPort()獲得walrus的port,并保存到/var/lib/eucalyptus/.luhya/ldapCache/的walrus.ini中返回walrus的port如果不在線:查看/var/lib/eucalyptus/.luhya/ldapCache/是否有walrus.ini文件,如果有:從walrus.ini中取得walrus的port返回如果沒有:返回None4)luhya_reg_getWalrusIp()調(diào)用is_online()判斷本機(jī)是否在線:如果在線:調(diào)用真正ldap的luhya_reg_getWalrusIp()獲得walrus的ip地址,并保存到/var/lib/eucalyptus/.luhya/ldapCache/的walrus.ini中返回walrus的ip如果不在線:查看/var/lib/eucalyptus/.luhya/ldapCache/是否有walrus.ini文件,如果有:從walrus.ini中取得walrus的ip返回如果沒有:返回None5)luhya_reg_get_cluster_ip(clusterName)調(diào)用is_online()判斷本機(jī)是否在線如果在線:調(diào)用真正ldap的luhya_reg_get_cluster_ip(clusterName)獲得cc的ip如果不在線:查看/var/lib/eucalyptus/.luhya/ldapCache/是否有cluster.ini文件,如果有:從cluster.ini中取得ip地址返回如果沒有:返回NoneProxyCLCServerAPI:1)i64luhya_clc_start_vm(thd_ClientInfoclientData);遠(yuǎn)程模式(clientData.is_local==false):直接調(diào)用ClcThriftServerAPIluhya_clc_start_vm(clientData)啟動虛擬機(jī)本地模式(clientData.is_local==true):

調(diào)用本地NcThriftServerAPI

luhya_nc_start_vm(clientData)啟動虛擬機(jī)。停止虛擬機(jī)功能ProxyClcServerAPI:1)i64luhya_clc_stop_vm(1:client_info)偽代碼如下:如果是遠(yuǎn)程模式(clientData.is_local==false):轉(zhuǎn)發(fā)調(diào)用ClcThriftServerAPIluhya_clc_stop_vm(client_info)停止虛擬機(jī)。如果是本地模式(clientData.is_local==true):直接調(diào)用NcThriftServerAPIluhya_nc_stop_vm(client_info)停止虛擬機(jī)??煺展δ苷f明:只支持在線快照功能,離線時,快照按鈕為Disable,所以快照不需要緩存功能,只支持在線轉(zhuǎn)發(fā)。ProxyLdapServerAPI:i64luhya_reg_get_available_snapshot_num(1:stringuserName,2:stringimageID);偽代碼如下:如果是在線:轉(zhuǎn)發(fā)LdapThritServer的luhya_reg_get_available_snapshot_numAPI如果是離線:直接返回i64luhya_reg_get_current_snapshot_id(1:stringuserName,2:stringimageID);偽代碼:如果是在線:轉(zhuǎn)發(fā)LdapThritServer的luhya_reg_get_current_snapshot_idAPI如果是離線:直接返回3)boolluhya_reg_set_current_snapshot_id(1:stringuserName,2:stringimageID,3:i64snapshotID);偽代碼:如果是在線:轉(zhuǎn)發(fā)LdapThritServer的luhya_reg_set_current_snapshot_idAPI如果是離線:直接返回list<thd_snapshot>luhya_reg_get_snapshot_list(1:stringuserName,2:stringimageID);偽代碼:如果是在線:轉(zhuǎn)發(fā)LdapThritServer的luhya_reg_get_snapshot_listAPI如果是離線:直接返回boolluhya_reg_add_snapshot(1:thd_snapshotsnapshotInfo);偽代碼:如果是在線:轉(zhuǎn)發(fā)LdapThritServer的luhya_reg_add_snapshotAPI如果是離線:直接返回boolluhya_reg_modify_snapshot(1:thd_snapshotsnapshotInfo);偽代碼:如果是在線:轉(zhuǎn)發(fā)LdapThritServer的luhya_reg_modify_snapshotAPI如果是離線:直接返回boolluhya_reg_delete_snapshot(1:stringuserName,2:stringimageID,3:i64snapshotID);偽代碼:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論