CloudStack接管XenServer虛擬機(jī)的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于云計(jì)算平臺(tái)管理領(lǐng)域,特別是涉及一種CloudStack接管XenServer虛擬機(jī)的方法。
【背景技術(shù)】
[0002]CloudStack是一個(gè)開源的具有高可用性及擴(kuò)展性的云計(jì)算平臺(tái)。它支持管理大部分主流的 Hypervisor (即虛擬機(jī)管理程序),如 KVM,XenServer,VMware,Oracle VM, Xen 等。同時(shí)CloudStack是一個(gè)開源云計(jì)算解決方案,可以加速高伸縮性的公共和私有云(IaaS)的部署、管理、配置。以CloudStack作為基礎(chǔ),數(shù)據(jù)中心操作者可以快速方便的通過現(xiàn)存基礎(chǔ)架構(gòu)創(chuàng)建云服務(wù)。
[0003]CloudStack形成的基礎(chǔ)設(shè)施云和數(shù)據(jù)中心運(yùn)營(yíng)商可以快速,輕松地建立在其現(xiàn)有的基礎(chǔ)設(shè)施提供云服務(wù)的需求,彈性云計(jì)算服務(wù)。
[0004]CloudStack用戶可以充分利用云計(jì)算提供更高的效率,無限的規(guī)模和更快地部署新服務(wù)和系統(tǒng)的最終用戶。它可以幫助用戶利用自己的硬件提供類似于Amazon EC2那樣的公共云服務(wù)。CloudStack可以通過組織和協(xié)調(diào)用戶的虛擬化資源,構(gòu)建一個(gè)和諧的環(huán)境。
[0005]CloudStack具有許多強(qiáng)大的功能,可以讓用戶構(gòu)建一個(gè)安全的多租戶云計(jì)算環(huán)境。CloudStack兼容Amazon API接口。CloudStack可以讓用戶快速和方便地在現(xiàn)有的架構(gòu)上建立自己的云服務(wù)。
[0006]CloudStack可以幫助用戶更好地協(xié)調(diào)服務(wù)器、存儲(chǔ)、網(wǎng)絡(luò)資源,從而構(gòu)建一個(gè)IaaS平臺(tái)。同時(shí)由于CloudStack采用Apache 2.0開源協(xié)議,對(duì)商業(yè)應(yīng)用很友好,可以在需要的時(shí)候通過修改代碼將
[0007]CloudStack進(jìn)行二次開發(fā),然后在進(jìn)行發(fā)布或銷售。
[0008]XenServer,即Citrix Xenserver,思杰公司出品的基于Linux的虛擬化服務(wù)器。Citrix XenServer是一種全面而易于管理的服務(wù)器虛擬化平臺(tái),基于強(qiáng)大的XenHypervisor程序之上。Xen技術(shù)被廣泛看作是業(yè)界最快速、最安全的虛擬化軟件。
[0009]XenServer是為了高效地管理Windows (R)和Linux(R)虛擬服務(wù)器而設(shè)計(jì)的,可提供經(jīng)濟(jì)高效的服務(wù)器整合和業(yè)務(wù)連續(xù)性。XenServer是在云計(jì)算環(huán)境中經(jīng)過驗(yàn)證的企業(yè)級(jí)虛擬化平臺(tái),可提供創(chuàng)建和管理虛擬基礎(chǔ)架構(gòu)所需的所有功能。它深得很多要求苛刻的企業(yè)信賴,被用于運(yùn)行最關(guān)鍵的應(yīng)用,而且被最大規(guī)模的云計(jì)算環(huán)境和xSP所采用。2013年6月,思杰公司宣布最新版本的XenServer6.2完全免費(fèi)開源,更進(jìn)一步增加了 XenServer的受眾。
[0010]隨著云計(jì)算平臺(tái)開源社區(qū)的繁榮發(fā)展,CloudStack的開源出身和商業(yè)化成熟度較高的優(yōu)勢(shì)贏得了越來越多的關(guān)注,越來越多的企業(yè)開始使用CloudStack部署它們自己的IaaS云。同時(shí),在CloudStack早期發(fā)展歷史上,曾經(jīng)被Citrix公司收購并繼續(xù)開發(fā),天生便與XenServer具有良好的兼容性。同時(shí)使用CloudStack與XenServer可以產(chǎn)生較高的性價(jià)比。但有時(shí)候,出于降低成本的考慮,某些企業(yè)打算使用CloudStack建設(shè)IaaS云,但有受限于已運(yùn)行業(yè)務(wù)虛擬機(jī)的XenServer環(huán)境。如果使用兩套環(huán)境,容易造成管理混亂。如果將XenServer環(huán)境加入到CloudStack中,又會(huì)造成業(yè)務(wù)虛擬機(jī)丟失并中斷的情況,產(chǎn)生較大經(jīng)濟(jì)損失。
[0011]使用CloudStack管理已運(yùn)行業(yè)務(wù)虛擬機(jī)的XenServer主機(jī)有以下缺點(diǎn):
[0012]其一、XenServer主機(jī)上已運(yùn)行業(yè)務(wù)的虛擬機(jī)會(huì)被CloudStack的虛擬機(jī)同步機(jī)制刪除,造成業(yè)務(wù)虛擬機(jī)中斷服務(wù)。
[0013]其二、CloudStack中添加XenServer主機(jī)時(shí),會(huì)自動(dòng)把相應(yīng)主機(jī)同一集群下的所有主機(jī)都添加到CloudStack中,間接地將已運(yùn)行業(yè)務(wù)虛擬機(jī)的主機(jī)添加到CloudStack中,造成業(yè)務(wù)虛擬機(jī)丟失的冋題。
【發(fā)明內(nèi)容】
[0014]有鑒于現(xiàn)有技術(shù)的上述缺陷,本發(fā)明所要解決的技術(shù)問題是提供一種能夠有效提高整個(gè)云環(huán)境生產(chǎn)效率的CloudStack接管XenServer虛擬機(jī)的方法。
[0015]為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種CloudStack接管XenServer虛擬機(jī)的方法,包括以下步驟:
[0016]步驟一、獲得XenServer主機(jī)上的所有虛擬機(jī),通過與CloudStack數(shù)據(jù)庫進(jìn)行比對(duì)獲得所有未被CloudStack管理的備選虛擬機(jī);
[0017]步驟二、根據(jù)選中的待接管的虛擬機(jī),生成插入CloudStack數(shù)據(jù)庫所需的SQL語句;
[0018]步驟三、在CloudStack中執(zhí)行步驟二產(chǎn)生的SQL語句,最終將待接管業(yè)務(wù)虛擬機(jī)納入CloudStack管理。
[0019]采用以上技術(shù)方案,本發(fā)明提供了 CloudStack接管XenServer主機(jī)上已運(yùn)行業(yè)務(wù)的虛擬機(jī)的方法,最終能夠在保持虛擬機(jī)的業(yè)務(wù)不中斷的條件下,將XenServer的原有環(huán)境完整納入CloudStack管理,實(shí)現(xiàn)了 XenServer環(huán)境與CloudStack環(huán)境的兼容,使管理員能夠在CloudStack這個(gè)統(tǒng)一平臺(tái)上對(duì)云進(jìn)行統(tǒng)一管理,簡(jiǎn)化了管理員的操作,降低了管理成本,最終能夠有效提高整個(gè)云環(huán)境的生產(chǎn)效率。
[0020]進(jìn)一步的,所述步驟一之前,還包括修改CloudStack的虛擬機(jī)同步機(jī)制的步驟:通過修改CloudStack的虛擬機(jī)同步機(jī)制,對(duì)XenServer主機(jī)上的虛擬機(jī)進(jìn)行狀態(tài)同步時(shí),如果虛擬機(jī)不受CloudStack管理,不對(duì)其進(jìn)行關(guān)機(jī)操作,避免誤關(guān)閉業(yè)務(wù)虛擬機(jī)。
[0021]較佳的,所述CloudStack數(shù)據(jù)庫所需的SQL語句包括虛擬機(jī)SQL語句、網(wǎng)卡SQL語句和卷SQL語句。
[0022]本發(fā)明的有益效果是:本發(fā)明能夠在保持虛擬機(jī)的業(yè)務(wù)不中斷的條件下,將XenServer的原有環(huán)境完整納入CloudStack管理,實(shí)現(xiàn)了 XenServer環(huán)境與CloudStack環(huán)境的兼容,使管理員能夠在CloudStack這個(gè)統(tǒng)一平臺(tái)上對(duì)云進(jìn)行統(tǒng)一管理,簡(jiǎn)化了管理員的操作,降低了管理成本,最終能夠有效提高整個(gè)云環(huán)境的生產(chǎn)效率。
【附圖說明】
[0023]圖1是本發(fā)明一【具體實(shí)施方式】的流程示意圖。
【具體實(shí)施方式】
[0024]下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明:
[0025]如圖1所示,一種CloudStack接管XenServer虛擬機(jī)的方法,包括以下步驟:
[0026]步驟一、修改CloudStack的虛擬機(jī)同步機(jī)制:通過修改CloudStack的虛擬機(jī)同步機(jī)制,對(duì)XenServer主機(jī)上的虛擬機(jī)進(jìn)行狀態(tài)同步時(shí),如果虛擬機(jī)不受CloudStack管理,不對(duì)其進(jìn)行關(guān)機(jī)操作,避免誤關(guān)閉業(yè)務(wù)虛擬機(jī)。
[0027]步驟二、根據(jù)XenServer主機(jī)信息,獲得XenServer主機(jī)上的所有虛擬機(jī),通過與CloudStack數(shù)據(jù)庫進(jìn)行比對(duì)獲得所有未被CloudStack管理的備選虛擬機(jī),并將這些虛擬機(jī)提供給操作者接管;
[0028]步驟三、根據(jù)選中的待接管的虛擬機(jī),生成插入CloudStack數(shù)據(jù)庫所需的SQL語句;
[0029]步驟四、在CloudStack中執(zhí)行步驟三產(chǎn)生的SQL語句,最終將待接管業(yè)務(wù)虛擬機(jī)納入CloudStack管理。
[0030]本實(shí)施例中,所述CloudStack數(shù)據(jù)庫所需的SQL語句包括虛擬機(jī)SQL語句、網(wǎng)卡SQL語句和卷SQL語句。
[0031]更新CloudStack虛擬機(jī)同步機(jī)制時(shí),對(duì)CloudStack同步XenServer主機(jī)上的虛擬機(jī)狀態(tài)的機(jī)制進(jìn)行修改。當(dāng)CloudStack發(fā)現(xiàn)XenServer主機(jī)上存在不受CloudStack管理的虛擬機(jī)時(shí),不對(duì)這些虛擬機(jī)進(jìn)行關(guān)機(jī),避免干擾運(yùn)行業(yè)務(wù)的虛擬機(jī)。
[0032]選擇待接管虛擬機(jī)時(shí),根據(jù)操作者提供的XenServer主機(jī)的用戶名、密碼等信息,連接到XenServer主機(jī)上,通過XenAPI獲得這臺(tái)主機(jī)上的所有虛擬機(jī),并根據(jù)虛擬機(jī)名稱與CloudStack的已有虛擬機(jī)的主機(jī)名進(jìn)行比對(duì),獲得所有待接管虛擬機(jī)。操作者可以選擇要接管的虛擬機(jī),并進(jìn)行到下一步。
[0033]根據(jù)虛擬機(jī)信息生成SQL時(shí),根據(jù)操作者選擇的虛擬機(jī),以及XenServer主機(jī)的用戶名、密碼等信息,連接到XenServer主機(jī)上,然后通過XenAPI獲得虛擬機(jī)所使用的網(wǎng)絡(luò)、卷等信息。最終使用這些信息生成插入虛擬機(jī)所需的SQL。同時(shí)在必須要的時(shí)候,還需要根據(jù)虛擬機(jī)的CPU、內(nèi)存規(guī)格生成相應(yīng)服務(wù)方案SQL,根據(jù)虛擬機(jī)磁盤的大小生成磁盤方案SQLo然后根據(jù)虛擬機(jī)的網(wǎng)絡(luò)和磁盤配置,生成插入虛擬機(jī)網(wǎng)卡和卷的SQL。這些SQL語句在CloudStack數(shù)據(jù)庫執(zhí)行,最終將虛擬機(jī)的存儲(chǔ)、網(wǎng)絡(luò)等資源完整接管到CloudStack中。主要涉及到對(duì) disk_offering、service_ofTering、vm_instance、user_vm、nics 和 volumes等幾個(gè)數(shù)據(jù)庫表的插入操作同時(shí),需要對(duì)user_ip_addres和sequence表進(jìn)行更新,維護(hù)CloudStack中的資源占用狀態(tài)和數(shù)據(jù)完整性。當(dāng)執(zhí)行上述SQL語句時(shí),如果需要?jiǎng)?chuàng)建新的服務(wù)方案、磁盤方案,首先執(zhí)行對(duì)disk_offering、service_offering這兩個(gè)表的插入,如果不需要,按照vm_instance、user_v