侯超平,李春锃(.廣西科技大學(xué)網(wǎng)絡(luò)與現(xiàn)代教育技術(shù)中心; .廣西陸港科技有限公司,廣西 柳州 545006)
?
云計算的高可用性實現(xiàn)技術(shù)探討
侯超平1,李春锃2
(1.廣西科技大學(xué)網(wǎng)絡(luò)與現(xiàn)代教育技術(shù)中心; 2.廣西陸港科技有限公司,廣西 柳州 545006)
摘 要:文章對云基礎(chǔ)架構(gòu)及業(yè)務(wù)應(yīng)用層設(shè)計這兩個層面的屬性進(jìn)行分析,對云計算中實現(xiàn)高可用的關(guān)鍵技術(shù)進(jìn)行介紹,探討為實現(xiàn)高可用性提供支撐的計算資源伸縮、業(yè)務(wù)會話處理等技術(shù)實現(xiàn)方式。為實現(xiàn)高可用的業(yè)務(wù)系統(tǒng)設(shè)計及云平臺實施提供參考。
關(guān)鍵詞:云計算;高可用;資源彈性伸縮
高可用性HA(High Availability)是指通過盡量縮短因日常維護(hù)操作(計劃)和突發(fā)的系統(tǒng)崩潰(非計劃)所導(dǎo)致的停機(jī)時間,以提高系統(tǒng)和應(yīng)用的可用性。HA是目前企業(yè)防止核心計算機(jī)系統(tǒng)因故障停機(jī)的最有效手段[1]。云計算的高可用性能已成為云計算相對于傳統(tǒng)應(yīng)用服務(wù)體現(xiàn)的眾多優(yōu)勢之一,所以如何實現(xiàn)高可用性是設(shè)計云平臺時需要重點考慮的要素之一。為實現(xiàn)運行于云平臺上業(yè)務(wù)系統(tǒng)的高可用特性,在構(gòu)建云平臺時需要從硬件、軟件、策略及管理等多個方面、多維度進(jìn)行分析及設(shè)計,使構(gòu)建的云平臺能為運行于其上的業(yè)務(wù)系統(tǒng)提供不間斷服務(wù)保障。
典型云平臺中的云基礎(chǔ)架構(gòu)通常劃分為硬件層、虛擬化層、云層這三個層次。業(yè)務(wù)系統(tǒng)及云基礎(chǔ)架構(gòu)層次如圖1所示。
(1)虛擬化層:大多數(shù)云基礎(chǔ)架構(gòu)都廣泛采用虛擬化技術(shù),包括計算虛擬化、存儲虛擬化、網(wǎng)絡(luò)虛擬化等[2]。通過虛擬化層可實現(xiàn)標(biāo)準(zhǔn)化、可靈活擴(kuò)展和收縮、彈性的虛擬化資源池。
(2)云層:對資源池進(jìn)行調(diào)配、組合,能根據(jù)業(yè)務(wù)系統(tǒng)的需要自動生成、擴(kuò)展所需的計算資源,將更多的應(yīng)用系統(tǒng)通過流程化、自動化部署和管理,提高系統(tǒng)負(fù)載能力及可靠性[2]。
(3)應(yīng)用層:包括業(yè)務(wù)系統(tǒng)及數(shù)據(jù)庫系統(tǒng)等,該層為用戶業(yè)務(wù)請求提供服務(wù)。
根據(jù)業(yè)務(wù)系統(tǒng)及云基礎(chǔ)架構(gòu)層次特點,云計算中的高可用設(shè)計主要集中在云層、業(yè)務(wù)系統(tǒng)及應(yīng)用層這兩個層面。
3.1 云層
云層主要是對虛擬化層實現(xiàn)統(tǒng)一管理,在該層中高可用設(shè)計需要考慮的問題主要包括資源動態(tài)伸縮、負(fù)載均衡調(diào)度、節(jié)點遷移等因素。
3.1.1 計算資源動態(tài)伸縮
當(dāng)云平臺中的計算節(jié)點業(yè)務(wù)負(fù)載能力達(dá)到設(shè)定的閥值時,為保障新業(yè)務(wù)請求的響應(yīng)時間及業(yè)務(wù)可用性,必須對計算資源池中的節(jié)點資源實現(xiàn)動態(tài)擴(kuò)展。當(dāng)業(yè)務(wù)系統(tǒng)負(fù)載減少,業(yè)務(wù)請求降低時,需要對以前擴(kuò)展的資源進(jìn)行收縮,以保證在有限的硬件資源的條件下,能將資源分配給其它更迫切需要計算資源的業(yè)務(wù)系統(tǒng),從而保障云平臺內(nèi)全部業(yè)務(wù)系統(tǒng)的整體可用性。計算資源動態(tài)伸縮需要考慮如下問題:
(1)彈性伸縮策略。1)虛擬機(jī)系統(tǒng)級性能參數(shù)的彈性伸縮,包括cpu使用率、內(nèi)存使用率、虛擬內(nèi)存頁面交換率等;2)業(yè)務(wù)級別的性能參數(shù)的彈性伸縮,包括tcp連接數(shù)、http連接數(shù)、DB連接數(shù)等;3)除了支持系統(tǒng)性能參數(shù)、業(yè)務(wù)性能參數(shù)彈性伸縮外,還支持監(jiān)測應(yīng)用是否健康來進(jìn)行彈性伸縮。目前比較常用的是web類應(yīng)用,通過http/https心跳消息進(jìn)行檢測,發(fā)送約定次數(shù)的http/https消息均無響應(yīng)時,則認(rèn)為是業(yè)務(wù)系統(tǒng)節(jié)點已經(jīng)宕機(jī),則進(jìn)行相應(yīng)處理。首先重啟虛擬機(jī),若重啟虛擬機(jī)后,該業(yè)務(wù)系統(tǒng)節(jié)點還是宕機(jī),則彈性生成一個業(yè)務(wù)節(jié)點,同時添加至虛擬負(fù)載均衡集群中,以接收新的業(yè)務(wù)服務(wù)請求。
(2)延時關(guān)機(jī)。彈性收縮虛擬機(jī)時,為減少對已經(jīng)建立會話的業(yè)務(wù)影響,需要支持延時關(guān)機(jī)。負(fù)載均衡調(diào)度器收到減少集群成員時,不是馬上將該成員移出集群,而是繼續(xù)處理的已經(jīng)存在的會話,但是此時不再處理新的會話,等待一段時間后,再執(zhí)行移出集群,執(zhí)行關(guān)機(jī)或銷毀虛擬機(jī)。
(3)動態(tài)伸縮模式。計算資源的動態(tài)伸縮模式可主要分為資源節(jié)約優(yōu)先模式及伸縮時間優(yōu)先模式兩種。
1)資源節(jié)約優(yōu)先模式。計算資源擴(kuò)展時,通過虛擬機(jī)鏡像新創(chuàng)建虛機(jī)并加入資源池。由于需要重新創(chuàng)建虛機(jī)并安裝部署應(yīng)用,時間上不占優(yōu)勢。計算資源收縮時,不提供服務(wù)的虛以機(jī)都進(jìn)行銷毀,回收全部資源,資源可以得到最大程度的利用。
2)伸縮時間優(yōu)先模式。該方式總是保存彈性伸縮組(集群)最大容量的虛擬機(jī)數(shù)量,即使該虛機(jī)沒有提供服務(wù),此時只是將該虛擬機(jī)關(guān)閉。虛擬機(jī)關(guān)閉時,存儲空間不能進(jìn)行回收(CPU、內(nèi)存可以回收重新利用)。由于虛擬機(jī)未激活時僅時處于關(guān)閉狀態(tài),在需要新增活動虛擬機(jī)進(jìn)計算資源池中時,只需要重新啟動即可,所以該方式在伸縮時間效率上具有較大的優(yōu)勢。
3.1.2 負(fù)載均衡設(shè)計
當(dāng)業(yè)務(wù)系統(tǒng)負(fù)載高時,為保證系統(tǒng)的可用性,需要由單節(jié)點擴(kuò)充成多節(jié)點,以應(yīng)對高并發(fā)帶來的系統(tǒng)性能問題,并使用負(fù)載均衡機(jī)制,根據(jù)某種負(fù)載策略把業(yè)務(wù)請求分發(fā)到計算資源池中的每一節(jié)點上,讓整個計算節(jié)點群來處理業(yè)務(wù)系統(tǒng)的用戶請求。
(1)第四層及第七層服務(wù)器負(fù)載均衡??紤]到云平臺上運行業(yè)務(wù)的多樣性,負(fù)載均衡需要實現(xiàn)對第四層的TCP協(xié)議、UDP協(xié)議,第七層的HTTP協(xié)議、HTTP Proxy、Header URL和URL 哈希轉(zhuǎn)換、URL和域操作的支持。對第四層及第七層協(xié)議負(fù)載均衡功能通常使用深層包檢查與流量操作技術(shù)實現(xiàn)。
(2)負(fù)載均衡算法。由于業(yè)務(wù)系統(tǒng)的多樣性,為了最大程度地支持各類具有不同負(fù)載特點的業(yè)務(wù)系統(tǒng),負(fù)載均衡一般采用輪詢調(diào)度、最小連接調(diào)度、加權(quán)輪詢調(diào)度、加權(quán)最小連接調(diào)度、最快回應(yīng)分配等方法實現(xiàn)。
(3)設(shè)計健康檢查機(jī)制確保服務(wù)器與應(yīng)用系統(tǒng)及時響應(yīng),并清除無負(fù)載均衡響應(yīng)的節(jié)點應(yīng)用系統(tǒng),避免用戶請求被調(diào)度至無效的資源節(jié)點中,以保證業(yè)務(wù)系統(tǒng)的高可用性。
3.1.3 虛擬機(jī)節(jié)點遷移
虛擬機(jī)節(jié)點遷移時,通過心跳機(jī)制,定時監(jiān)測計算資源池集群內(nèi)主機(jī)的CPU、內(nèi)存利用率等指標(biāo),并根據(jù)預(yù)定的規(guī)則來判斷是否需要為該主機(jī)在集群內(nèi)尋找有更多可用資源的主機(jī),以將該主機(jī)上的虛擬機(jī)遷移到另外一臺具有更多合適資源的服務(wù)器上,通過動態(tài)資源調(diào)整來保障系統(tǒng)的響應(yīng)時間,實現(xiàn)業(yè)務(wù)系統(tǒng)的高可用。虛擬節(jié)點遷移過程見圖2。
3.2 業(yè)務(wù)系統(tǒng)及應(yīng)用層
除云基礎(chǔ)架構(gòu)層面需要考慮高可用特性實現(xiàn)外,為了使運行于具有資源自動伸縮特性的云平臺上業(yè)務(wù)系統(tǒng)能更好地實現(xiàn)高可用,業(yè)務(wù)系統(tǒng)及架構(gòu)也有必要針對云平臺的特點進(jìn)行相應(yīng)的設(shè)計。
3.2.1 資源自動伸縮類型特點
當(dāng)業(yè)務(wù)系統(tǒng)的資源利用率達(dá)到預(yù)定的閥值或無法及時響應(yīng)業(yè)務(wù)請求時,云平臺的計算節(jié)點將自動擴(kuò)展。根據(jù)云平臺的計算節(jié)點不同擴(kuò)展方式,一般可分為活動節(jié)點復(fù)制擴(kuò)展及模板生成擴(kuò)展兩類。
(1)活動節(jié)點復(fù)制擴(kuò)展。即節(jié)點擴(kuò)展生成新計算節(jié)點時,以當(dāng)前運行的活動節(jié)點(母節(jié)點)作為克隆對象,將虛擬機(jī)連同虛擬機(jī)運行內(nèi)容一起復(fù)制,生成新計算節(jié)點(子節(jié)點)。初始時,子節(jié)點具有與母節(jié)點相同的內(nèi)存內(nèi)容,即業(yè)務(wù)系統(tǒng)運行時所存放于內(nèi)存的會話、緩存等信息一起被復(fù)制到新生成的計算節(jié)點中。
(2)模板生成擴(kuò)展。即生成新計算節(jié)點時以虛擬機(jī)鏡像或快照等作為模板,生成新計算節(jié)點并加入到業(yè)務(wù)計算節(jié)點集群中。初始時,新創(chuàng)建的計算節(jié)點尚未存有業(yè)務(wù)運行信息,為使調(diào)度至該節(jié)點的業(yè)務(wù)請求能繼續(xù)處理此前已在業(yè)務(wù)系統(tǒng)中活躍的業(yè)務(wù)會話,應(yīng)用層的業(yè)務(wù)系統(tǒng)架構(gòu)需要考慮業(yè)務(wù)會話共享的問題。
3.2.2 業(yè)務(wù)系統(tǒng)適配資源自動伸縮類型
(1)適配活動節(jié)點復(fù)制擴(kuò)展類型?;顒庸?jié)點中運行的業(yè)務(wù)系統(tǒng)根據(jù)系統(tǒng)特點可為兩類,需要對分類進(jìn)行不同處理。
1)活動節(jié)點中的服務(wù)會話及緩存均適用于任何用戶請求,如DNS服務(wù)系統(tǒng)。由活動節(jié)點復(fù)制出的新節(jié)點加入資源池后即可為所有業(yè)務(wù)請求提供服務(wù),該類型的業(yè)務(wù)系統(tǒng)無須進(jìn)行特別處理,與傳統(tǒng)的單機(jī)系統(tǒng)一致。
2)節(jié)點中的業(yè)務(wù)系統(tǒng)會話及緩存無法適用所有節(jié)點,如一般的web應(yīng)用中,僅全局性的對象值適用于所有節(jié)點,用戶會話信息通常會保存于不同的業(yè)務(wù)處理節(jié)點中。由于適配活動節(jié)點復(fù)制擴(kuò)展時會將母節(jié)點包括會話和緩存在內(nèi)的所有內(nèi)存信息克隆至新節(jié)點中,為了使新節(jié)點有足夠的內(nèi)存資源去接受新的業(yè)務(wù)請求,必須將內(nèi)存中與新業(yè)務(wù)請求無關(guān)的會話及緩存進(jìn)行清除。
所以業(yè)務(wù)系統(tǒng)在設(shè)計時需要考慮監(jiān)視其運行的節(jié)點IP等信息,業(yè)務(wù)系統(tǒng)可通過IP等信息產(chǎn)生變化,能感知其位于新創(chuàng)建的節(jié)點上,并自動清除無用的會話及緩存,以釋放內(nèi)存去接受新的業(yè)務(wù)請求。例如asp.net程序?qū)崿F(xiàn)的業(yè)務(wù)系統(tǒng)中,程序需要設(shè)計成能在新節(jié)點創(chuàng)建完成時,在新節(jié)點保留Application對象集中的值,清空Session對象集的對象以釋放計算節(jié)點內(nèi)存,使得節(jié)點中內(nèi)存能夠保存新用戶請求產(chǎn)生的新Session對象。
(2)適配模板生成擴(kuò)展類型。云平臺使用虛擬機(jī)鏡像、快照等模板創(chuàng)建新計算節(jié)點并加入資源池向外提供服務(wù),新的計算節(jié)點在創(chuàng)建時并沒有任何的業(yè)務(wù)會話信息。若負(fù)均衡調(diào)度器將業(yè)務(wù)請求轉(zhuǎn)發(fā)至該節(jié)點,且該業(yè)務(wù)請求需要使用此前業(yè)務(wù)系統(tǒng)中的一些會話信息,由于新節(jié)點上尚無會話信息,則新生成的計算節(jié)點無法進(jìn)行業(yè)務(wù)處理。對運行于適配模板生成擴(kuò)展類型云平臺上的業(yè)務(wù)系統(tǒng),在業(yè)務(wù)系統(tǒng)設(shè)計時需要把會話從各計算節(jié)點的業(yè)務(wù)系統(tǒng)中剝離出來,并將會話共享,使用戶請求業(yè)務(wù)可在不同節(jié)點間透明遷移,當(dāng)某個計算節(jié)點宕機(jī)時也不影響業(yè)務(wù)的持續(xù)運行,使系統(tǒng)達(dá)到高可用。不同節(jié)點間的會話共享一般通過兩種方式實現(xiàn)。
1)將業(yè)務(wù)Session信息保存到所有計算節(jié)點均可訪問的數(shù)據(jù)庫中,當(dāng)新節(jié)點創(chuàng)建完成后,運行于其上的業(yè)務(wù)系統(tǒng)獲取保存于數(shù)據(jù)庫中的會話信息,持續(xù)提供應(yīng)用服務(wù)。該方式優(yōu)點是可靠性較高,缺點是會話恢復(fù)時間相對較長。
2)業(yè)務(wù)系統(tǒng)設(shè)計時考慮配置專門的Session服務(wù)器,各個計算節(jié)點上運行的業(yè)務(wù)系統(tǒng)將Session信息存于Session服務(wù)器中,當(dāng)新節(jié)點創(chuàng)建完成后,運行其上的業(yè)務(wù)系統(tǒng)通過Session服務(wù)器中Session信息運行應(yīng)用服務(wù)。該方式優(yōu)點是新節(jié)點會話恢復(fù)時間極快,缺點是Session服務(wù)器發(fā)生故障時,業(yè)務(wù)系統(tǒng)將無法持續(xù)運行。所以一般也會采用配置Session服務(wù)器集群的方式來避免單點故障造成業(yè)務(wù)系統(tǒng)崩潰的問題發(fā)生。
綜述,在云計算環(huán)境中,為了讓業(yè)務(wù)系統(tǒng)獲得高可用的特性,在實施時需要在云基礎(chǔ)構(gòu)架、應(yīng)用層及業(yè)務(wù)系統(tǒng)這兩大方面進(jìn)行考慮。特別是業(yè)務(wù)系統(tǒng)需要根據(jù)云平臺中計算資源伸縮的不同方式,設(shè)計時采用不同的系統(tǒng)構(gòu)架并進(jìn)行相應(yīng)的處理,最終實現(xiàn)云平臺業(yè)務(wù)系統(tǒng)整體達(dá)到高可用的目標(biāo)。
參考文獻(xiàn):
[1]張國平.IPTV業(yè)務(wù)差異化保障系統(tǒng)的應(yīng)用研究[D].南昌:南昌大學(xué),2010:15.
[2]王理,姜新超.云計算環(huán)境下的基礎(chǔ)架構(gòu)融合[J].信息系統(tǒng)工程,2013(11):32-35.
[3]王理,姜新超.云計算環(huán)境下的基礎(chǔ)架構(gòu)融合[J].信息系統(tǒng)工程,2013(11):32-35.
廣西柳州市科技型中小企業(yè)技術(shù)創(chuàng)新資金計劃項目合同 項目名稱:現(xiàn)代物流信息安全與云計算解決方案 研究及應(yīng)用開發(fā),合同編號:2013F030303 計劃類別:中小企業(yè)技術(shù)創(chuàng)新資金
作者簡介:侯超平(1981-),男,工程師,研究方向:云計算、虛擬化、高可用。
DOI:10.16640/j.cnki.37-1222/t.2016.02.231