滕家雨 馬俊磊
摘要:隨著云計(jì)算技術(shù)在各個(gè)領(lǐng)域的不斷深化運(yùn)用,在其PaaS層中各應(yīng)用的高可用性也成為整個(gè)生產(chǎn)環(huán)節(jié)的重要一環(huán)。本文簡(jiǎn)要論述了當(dāng)前云計(jì)算的主流服務(wù)模式,并且以基于Grid Infrastructure為基礎(chǔ)設(shè)施的云計(jì)算平臺(tái)為例,提出了一種新型的POSTGRESQL數(shù)據(jù)庫(kù)的高可用架構(gòu)。
關(guān)鍵詞:云計(jì)算;數(shù)據(jù)庫(kù);高可用;PaaS
中圖分類號(hào):TP302 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2018)07-0074-01
云計(jì)算技術(shù)的出現(xiàn)極大的解放了原有IT部門的生產(chǎn)力和生產(chǎn)成本,使得服務(wù)器、數(shù)據(jù)庫(kù)、應(yīng)用等的部署和管理都集中在云端環(huán)境進(jìn)行,云端環(huán)境以服務(wù)的方式對(duì)外提供從硬件設(shè)施到應(yīng)用等方方面面的設(shè)施。但同時(shí)隨著各租戶和實(shí)際云生產(chǎn)環(huán)境的脫離,使得各租戶不可避免的對(duì)其被托管服務(wù)的高可用性提出了極大的要求。
作為一款優(yōu)秀的開源數(shù)據(jù)庫(kù),POSTGRESQL不僅被眾多IT部門采用,也衍生出了如 EnterpriseDB、Greenplum等數(shù)據(jù)庫(kù)產(chǎn)品[1]。本文以oracle公司Grid Infrastructure(以下簡(jiǎn)稱GI)為云計(jì)算平臺(tái)基礎(chǔ)設(shè)施,以開源POSTGRESQL數(shù)據(jù)庫(kù)為云服務(wù),提出了一種新型的POSTGRESQL數(shù)據(jù)庫(kù)高可用方案。
1 云計(jì)算服務(wù)模式的金字塔模型
云計(jì)算服務(wù)模式為典型金字塔模型,其中各層含義如下:
IaaS層:基礎(chǔ)設(shè)施即服務(wù)層,構(gòu)成了金字塔的最底層,提供服務(wù)器,存儲(chǔ)設(shè)備、網(wǎng)絡(luò)設(shè)備等硬件設(shè)備服務(wù)。
PaaS層:平臺(tái)即服務(wù)層,構(gòu)成金字塔的中間層,將實(shí)際開發(fā)環(huán)境中需要的各種組件集中到平臺(tái)中,包括數(shù)據(jù)庫(kù)、操作系統(tǒng)、虛擬主機(jī)等。以平臺(tái)服務(wù)的方式對(duì)外租用,用戶的所有開發(fā)工作都可以在這一層完成。
SaaS層:軟件即服務(wù)層,為金字塔的最頂層,以網(wǎng)頁(yè)的形式對(duì)外提供軟件應(yīng)用的訪問,用戶只需登錄固定的網(wǎng)址便可使用軟件服務(wù),而無需部署和維護(hù)軟件。
2 PaaS層中POSTGRESQL數(shù)據(jù)庫(kù)的高可用方案
2.1 PaaS層POSTGRESQL數(shù)據(jù)庫(kù)的高可用架構(gòu)(圖1)
硬件及操作系統(tǒng)層:由硬件和操作系統(tǒng)構(gòu)成了該架構(gòu)的硬件基礎(chǔ),其中各服務(wù)器存儲(chǔ)必須是共享的,目的是為了實(shí)現(xiàn)數(shù)據(jù)庫(kù)高可用方案時(shí)能夠得到共享的數(shù)據(jù)目錄,而無需再?gòu)脑礄C(jī)節(jié)點(diǎn)上復(fù)制。
Grid Infrastructure層:由GI軟件構(gòu)成,該層為云平臺(tái)的管理后端,相當(dāng)于在硬件和云平臺(tái)直接的一個(gè)中間件,云平臺(tái)作為前端對(duì)外提供服務(wù)。
PaaS層:作為對(duì)外提供的門戶頁(yè)面,可以提供各式各樣的生產(chǎn)環(huán)境,包括數(shù)據(jù)庫(kù)、操作系統(tǒng)等。
NODE1、NODE2及NODE3為PaaS層所承載的服務(wù)器,在其之上部署有POSTGRESQL主、從數(shù)據(jù)庫(kù)。M_VIP和S_VIP分別為POSTGRESQL主、從數(shù)據(jù)庫(kù)的虛擬IP。
2.2 原理分析
主從數(shù)據(jù)庫(kù)之間和主從VIP之間有啟動(dòng)和停止的強(qiáng)依賴關(guān)系。用戶通過連接VIP地址訪問數(shù)據(jù)庫(kù),從而保證了在服務(wù)器或數(shù)據(jù)庫(kù)宕機(jī)的情況下,用戶不用修改任何配置,也可以繼續(xù)連接數(shù)據(jù)庫(kù)。
當(dāng)POSTGRESQL主服務(wù)器宕機(jī)或者數(shù)據(jù)庫(kù)發(fā)生故障時(shí),根據(jù)依賴關(guān)系,當(dāng)GI檢測(cè)到主數(shù)據(jù)庫(kù)進(jìn)程消失時(shí),會(huì)自動(dòng)將M_VIP停止,然后觸發(fā)PaaS云平臺(tái)執(zhí)行主從切換腳本,將POSTGRESQL從數(shù)據(jù)庫(kù)SLAVE變?yōu)橹鞣?wù)器MASTER對(duì)外提供服務(wù),同時(shí)M_VIP漂移到該從服務(wù)器上,實(shí)現(xiàn)了POSTGRESQL數(shù)據(jù)庫(kù)的第一層高可用。
如果從服務(wù)器或從數(shù)據(jù)庫(kù)再次發(fā)生故障,GI會(huì)再次將M_VIP停止,同時(shí)檢索該租戶環(huán)境中剩余存活的服務(wù)器,然后將M_VIP轉(zhuǎn)移到新節(jié)點(diǎn),在轉(zhuǎn)移過程的同時(shí),通過事先配置好的GI配置文件,可以在新節(jié)點(diǎn)上將MASTER數(shù)據(jù)庫(kù),同時(shí)啟動(dòng)。如果從數(shù)據(jù)庫(kù)在新節(jié)點(diǎn)再次發(fā)生故障,GI會(huì)再次將數(shù)據(jù)庫(kù)轉(zhuǎn)移到新節(jié)點(diǎn),依次類推,只要該租戶資源池中有存活的節(jié)點(diǎn),就可以保障數(shù)據(jù)庫(kù)不間斷對(duì)外服務(wù),實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的多層高可用。
同時(shí)該架構(gòu)也實(shí)現(xiàn)了POSTGRESQL數(shù)據(jù)庫(kù)的讀寫分離,主數(shù)據(jù)庫(kù)負(fù)責(zé)寫入數(shù)據(jù)庫(kù),從數(shù)據(jù)庫(kù)只有讀的權(quán)限,極大的緩解了云平臺(tái)以及數(shù)據(jù)庫(kù)的負(fù)載壓力。
3 結(jié)語(yǔ)
云計(jì)算平臺(tái)中基于GI的POSTGRESQL高可用方案,實(shí)現(xiàn)了POSTGRESQL數(shù)據(jù)庫(kù)的主從庫(kù)讀寫分離,以及多層高可用,在不需要用戶修改任何配置的前提下,強(qiáng)力的保障了數(shù)據(jù)庫(kù)的可靠性。
參考文獻(xiàn)
[1]宋曉眉,葉曉俊,曾小青,謝東.PostgreSQL查詢優(yōu)化中的等價(jià)類研究與改進(jìn)[J].計(jì)算機(jī)工程與應(yīng)用,2014(14):31-38.