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