1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        談?wù)勲p活業(yè)務(wù)中心和異地容災(zāi)備份設(shè)計(jì)

        共 8236字,需瀏覽 17分鐘

         ·

        2021-05-28 04:05

        今天談下多數(shù)據(jù)中心和異地容災(zāi)備份方面的內(nèi)容。在前面一篇文章里面我詳細(xì)談到過一個(gè)軟件業(yè)務(wù)系統(tǒng)的高可用性設(shè)計(jì),其中既包括了IT基礎(chǔ)設(shè)施的高可用,也包括了業(yè)務(wù)軟件系統(tǒng)設(shè)計(jì)方面的高可用性設(shè)計(jì)。

        對于高可用,我想再簡單總結(jié)下,核心為三個(gè)方面的內(nèi)容:

        • 高可靠:冗余性設(shè)計(jì),無任何單點(diǎn)故障
        • 高性能:能夠滿足大數(shù)據(jù)量或海量并發(fā)訪問下響應(yīng)需求
        • 高擴(kuò)展:能夠動態(tài)水平彈性擴(kuò)展 對于三者之間的關(guān)系,我前面整理過下面一個(gè)圖來進(jìn)一步說明:

        上圖可以看到高可靠,高性能和高擴(kuò)展性三者之間的關(guān)系。

        對于高可靠性來來說,傳統(tǒng)的HA架構(gòu),冗余設(shè)計(jì)都可以滿足高可靠性要求,但是并不代表系統(tǒng)具備了高性能和可擴(kuò)展性能力。反過來說,當(dāng)系統(tǒng)具備了高擴(kuò)展性的時(shí)候,一般我們在設(shè)計(jì)擴(kuò)展性的時(shí)候都會考慮到同時(shí)兼顧冗余和高可靠,比如我們常說的集群技術(shù)。

        對于高性能和高擴(kuò)展性兩點(diǎn)來說,高擴(kuò)展性是高性能的必要條件,但是并不是充分條件。一個(gè)業(yè)務(wù)系統(tǒng)的高性能不是簡單的具備擴(kuò)展能力就可以,而是需要業(yè)務(wù)系統(tǒng)本身軟件架構(gòu)設(shè)計(jì),代碼編寫各方面都滿足高性能設(shè)計(jì)要求。

        對于高可靠和高性能,兩者反而表現(xiàn)出來一種相互制約的關(guān)系,即在高性能支撐的狀態(tài)下,往往是對系統(tǒng)的高可靠性形成嚴(yán)峻挑戰(zhàn),也正是這個(gè)原因我們會看到類似限流熔斷,SLA服務(wù)降級等各種措施來控制異常狀態(tài)下的大并發(fā)訪問和調(diào)用。

        容災(zāi)備份概述

        前面談高可靠性可以看到,我們更多的還是談的在一個(gè)數(shù)據(jù)中心里面的冗余和集群設(shè)計(jì),以確保整個(gè)IT基礎(chǔ)設(shè)施架構(gòu)沒有任何的單點(diǎn)故障。但是如果整個(gè)數(shù)據(jù)中心都出現(xiàn)問題,那么我們的應(yīng)用自然會受到影響處于不可用狀態(tài),同時(shí)我們的數(shù)據(jù)存儲也存在丟失的問題。

        這也是我們談容災(zāi)備份,很多大的集團(tuán)企業(yè)建設(shè)自己的兩地三中心的一個(gè)原因。

        什么是容災(zāi)備份?

        對于容災(zāi),簡單來說就是當(dāng)數(shù)據(jù)中心發(fā)生各種未知災(zāi)難的時(shí)候,能夠確保數(shù)據(jù)不丟失或少丟失,同時(shí)IT業(yè)務(wù)系統(tǒng)能夠不間斷運(yùn)行或快速切換恢復(fù)。

        這里面實(shí)際上強(qiáng)調(diào)了兩個(gè)重點(diǎn), 即:

        • 數(shù)據(jù)本身不丟失或少丟失
        • 應(yīng)用本身不間斷或少間斷

        整個(gè)容災(zāi)設(shè)計(jì)就是圍繞這兩個(gè)關(guān)鍵目標(biāo)來實(shí)現(xiàn)。

        而對于容災(zāi)備份則是通過在異地建立和維護(hù)一個(gè)備份存儲系統(tǒng),利用地理上的分離來保證系統(tǒng)和數(shù)據(jù)對災(zāi)難性事件的抵御能力。

        根據(jù)容災(zāi)系統(tǒng)對災(zāi)難的抵抗程度,可分為數(shù)據(jù)容災(zāi)和應(yīng)用容災(zāi) 。

        • 數(shù)據(jù)容災(zāi)是指建立一個(gè)異地的數(shù)據(jù)系統(tǒng)
        • 應(yīng)用容災(zāi)比數(shù)據(jù)容災(zāi)層次更高,即在異地建立一套完整的、與本地系統(tǒng)相當(dāng)?shù)膫浞菹到y(tǒng)

        當(dāng)前可以看到,我們更多的已經(jīng)不再是間斷的數(shù)據(jù)層面的容災(zāi)備份,而是需要具備保持業(yè)務(wù)連續(xù)性的應(yīng)用級容災(zāi)能力。

        簡單來說,就是我們需要設(shè)計(jì)要整體應(yīng)用所涉及到的IT基礎(chǔ)設(shè)施,數(shù)據(jù)庫,應(yīng)用中間件和應(yīng)用部署包全部在2個(gè)數(shù)據(jù)中心進(jìn)行部署。部署完成的架構(gòu)需要確保即使某一個(gè)數(shù)據(jù)中心完全癱瘓,也不應(yīng)該影響到業(yè)務(wù)系統(tǒng)的正常運(yùn)行和連續(xù)性。

        對于容災(zāi)等級的定義可以參考下圖:

        從圖中可以看到,如果要實(shí)現(xiàn)業(yè)務(wù)系統(tǒng)本身的異地雙活和不間斷運(yùn)行,那么就必須達(dá)到第七級的異地同步應(yīng)用容災(zāi)的標(biāo)準(zhǔn)。即是:

        在異地建立一個(gè)與生產(chǎn)系統(tǒng)完全相同的備用系統(tǒng),他們之間采用同步的方式進(jìn)行數(shù)據(jù)復(fù)制。當(dāng)生產(chǎn)中心發(fā)生災(zāi)難時(shí),備用系統(tǒng)接替其工作。該級別的容災(zāi),在發(fā)生災(zāi)難時(shí),可以基本保證數(shù)據(jù)零丟失和業(yè)務(wù)的連續(xù)性。

        也正因?yàn)槿绱?,我們看到,多?shù)據(jù)中心之間的數(shù)據(jù)庫同步復(fù)制能力將是構(gòu)建一個(gè)異地同步容災(zāi)備份設(shè)計(jì)的關(guān)鍵內(nèi)容。

        數(shù)據(jù)庫同步復(fù)制技術(shù)

        前面已經(jīng)談到,要實(shí)現(xiàn)應(yīng)用級的容災(zāi)備份,一個(gè)關(guān)鍵就是通過數(shù)據(jù)庫的實(shí)時(shí)同步和復(fù)制,在A地出現(xiàn)機(jī)房故障和問題的時(shí)候可以平滑快速的遷移到B地。雖然這種遠(yuǎn)程數(shù)據(jù)復(fù)制和同步存在一定的延遲,但是基本已經(jīng)可以滿足業(yè)務(wù)連續(xù)性的需求。

        談到數(shù)據(jù)庫的實(shí)時(shí)復(fù)制,一般會談到一個(gè)重要產(chǎn)品,即Oracle公司的GoldenGate,該軟件是一種基于日志的結(jié)構(gòu)化數(shù)據(jù)復(fù)制軟件,它通過解析源數(shù)據(jù)庫在線日志或歸檔日志獲得數(shù)據(jù)的增刪改變化,再將這些變化應(yīng)用到目標(biāo)數(shù)據(jù)庫,實(shí)現(xiàn)源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫同步、雙活。

        GoldenGate可以在異構(gòu)的IT基礎(chǔ)結(jié)構(gòu)(包括幾乎所有常用操作系統(tǒng)平臺和數(shù)據(jù)庫平臺)之間實(shí)現(xiàn)大量數(shù)據(jù)亞秒一級的實(shí)時(shí)復(fù)制。

        GoldenGate是一種基于軟件的數(shù)據(jù)復(fù)制方式,它從數(shù)據(jù)庫的日志解析數(shù)據(jù)的變化(數(shù)據(jù)量只有日志的四分之一左右)。該將數(shù)據(jù)變化轉(zhuǎn)化為自己的格式,直接通過TCP/IP網(wǎng)絡(luò)傳輸,無需依賴于數(shù)據(jù)庫自身的傳遞方式,而且可以通過高達(dá)9:1的壓縮率對數(shù)據(jù)進(jìn)行壓縮,可以大大降低帶寬需求。在目標(biāo)端,GoldenGate TDM可以通過交易重組,分批加載等技術(shù)手段大大加快數(shù)據(jù)投遞的速度和效率,降低目標(biāo)系統(tǒng)的資源占用,可以在亞秒級實(shí)現(xiàn)大量數(shù)據(jù)的復(fù)制。

        GoldenGate的工作原理可以用下圖描述:

        在任何實(shí)時(shí)數(shù)據(jù)同步和復(fù)制中,需要考慮如下幾個(gè)關(guān)鍵問題:

        • 事務(wù)一致性:在復(fù)制目標(biāo)端需要按照源端相同的事務(wù)環(huán)境進(jìn)行,確保目標(biāo)上數(shù)據(jù)一致性。
        • 檢查點(diǎn)機(jī)制:在抽取和裝載時(shí)都需要記錄檢查點(diǎn),確保網(wǎng)絡(luò)故障下仍然能夠完整復(fù)制。
        • 可靠數(shù)據(jù)傳輸:需要保證數(shù)據(jù)傳輸?shù)耐暾裕埱蠛蛻?yīng)答,同時(shí)提供數(shù)據(jù)加密壓縮。

        對于數(shù)據(jù)實(shí)時(shí)同步和復(fù)制工具,其核心是需要基于日志來實(shí)現(xiàn),這一方面是可以實(shí)現(xiàn)準(zhǔn)實(shí)時(shí)的數(shù)據(jù)同步,一方面是基于日志實(shí)現(xiàn)不會要求數(shù)據(jù)庫本身在設(shè)計(jì)和實(shí)現(xiàn)中帶來任何額外的約束。我們也看到有些基于數(shù)據(jù)庫表設(shè)計(jì)增加觸發(fā)器或存儲過程來實(shí)現(xiàn)的數(shù)據(jù)庫復(fù)制,這些本身都是損耗了性能和增加了復(fù)雜度。

        對于數(shù)據(jù)庫的實(shí)時(shí)同步和復(fù)制,阿里巴巴專門有一個(gè)開源項(xiàng)目,即otter來實(shí)現(xiàn)分布式數(shù)據(jù)庫的同步復(fù)制,其核心思想仍然是通過獲取數(shù)據(jù)庫的增量數(shù)據(jù)日志,來進(jìn)行準(zhǔn)實(shí)時(shí)的同步復(fù)制。因此otter本身又依賴于另外一個(gè)開源項(xiàng)目即canal,該項(xiàng)目重點(diǎn)則是獲取增量數(shù)據(jù)庫同步日志信息。

        當(dāng)前otter的重點(diǎn)是實(shí)現(xiàn)mysql間的數(shù)據(jù)庫同步復(fù)制,其實(shí)這個(gè)在前面我一些文檔里面談到基于mysql數(shù)據(jù)庫的dual-master架構(gòu)的時(shí)候已經(jīng)談到過,基本即利用的類似技術(shù)來實(shí)現(xiàn)兩個(gè)mysql數(shù)據(jù)庫間的雙向同步數(shù)據(jù)庫復(fù)制。

        要注意這個(gè)雙向本身指既可以A->B,也可以從B->A,在某個(gè)時(shí)間節(jié)點(diǎn)本身是單向的。

        對于otter的功能和支持的數(shù)據(jù)庫比GoldenGate要少得多,除了支持mysql數(shù)據(jù)庫間的實(shí)時(shí)數(shù)據(jù)同步和復(fù)制外,還支持mysql->oracle的單向數(shù)據(jù)同步和復(fù)制。但是不支持oracle->mysql的數(shù)據(jù)同步和復(fù)制。但是otter本身提供了一個(gè)很好的開源框架,我們可以基于該框架擴(kuò)展對其它數(shù)據(jù)庫的支持。

        在擴(kuò)展的時(shí)候有一個(gè)重點(diǎn),即數(shù)據(jù)庫本身是否提供了增量數(shù)據(jù)日志,對于mysql數(shù)據(jù)庫容易實(shí)現(xiàn)其主要原因還是mysql數(shù)據(jù)庫提供了相當(dāng)方便的binlog日志功能,這些log日志本身就很方便的轉(zhuǎn)換為朝目標(biāo)端執(zhí)行的sql語句。

        而對于常見的數(shù)據(jù)庫,在網(wǎng)上搜索下,可以看到一些做法。

        對于oracle,重點(diǎn)是監(jiān)控oracle的redo log,即在線重做日志和歸檔日志。對于一些商用產(chǎn)品可以直接監(jiān)控到redo log,僅僅依賴于該文件而不耗費(fèi)其它資源。而如果我們來實(shí)現(xiàn),則常用的方法還是基于oracle logminer來對redo log進(jìn)行解析。雖然性能上稍微有差異,但是基本可以達(dá)到準(zhǔn)實(shí)時(shí)的數(shù)據(jù)庫解析和同步。

        對于Sql Server數(shù)據(jù)庫的日志分析,首先可以看到網(wǎng)上有一個(gè)專門的商業(yè)工具,即log explorer,這個(gè)工具可以用來做sql server數(shù)據(jù)庫的日志解析和分析。其中對于事務(wù),檢查點(diǎn)等都有詳細(xì)的記錄。其次可以使用fn_dblog解析Sql Server的數(shù)據(jù)庫日志,網(wǎng)上有專門的方法在這里不展開,現(xiàn)在還沒有具體測試過,但是整個(gè)方法思路是沒有問題的。

        而對于sql server 之間的數(shù)據(jù)庫同步和復(fù)制,則sql server本身就提供有方便的基于快照或基于事務(wù)的數(shù)據(jù)庫同步復(fù)制工具,只需要經(jīng)過簡單的配置即可以實(shí)現(xiàn)。正因?yàn)檫@個(gè)原因,我們也看到,對于sql server數(shù)據(jù)庫本身在日志解析和分析方面開放出來的能力本身是相當(dāng)較弱的。

        隨著國家對自主研發(fā)數(shù)據(jù)庫和中間件技術(shù)的大力支持,當(dāng)前還沒一個(gè)能夠?qū)崿F(xiàn)國產(chǎn)數(shù)據(jù)庫如人大金倉,達(dá)夢數(shù)據(jù)庫同國外的oracle ,sql server數(shù)據(jù)庫間的數(shù)據(jù)實(shí)時(shí)同步和復(fù)制工具。對于這類工具是可以基于開源otter產(chǎn)品的思路來進(jìn)行定制開發(fā)和實(shí)現(xiàn)的,但是前提還是各個(gè)數(shù)據(jù)庫廠家需要開放相應(yīng)的日志采集和處理能力。

        基于GoldenGate實(shí)現(xiàn)數(shù)據(jù)庫同步復(fù)制

        GoldenGate TDM(交易數(shù)據(jù)管理)軟件是一種基于日志的結(jié)構(gòu)化數(shù)據(jù)復(fù)制軟件,它通過解析源數(shù)據(jù)庫在線日志或歸檔日志獲得數(shù)據(jù)的增刪改變化,再將這些變化應(yīng)用到目標(biāo)數(shù)據(jù)庫,實(shí)現(xiàn)源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫同步、雙活。

        GoldenGate TDM 軟件可以在異構(gòu)的IT基礎(chǔ)結(jié)構(gòu)(包括幾乎所有常用操作系統(tǒng)平臺和數(shù)據(jù)庫平臺)之間實(shí)現(xiàn)大量數(shù)據(jù)亞秒一級的實(shí)時(shí)復(fù)制,其復(fù)制過程簡圖如下:

        GoldenGate TDM的數(shù)據(jù)復(fù)制過程如下:

        利用捕捉進(jìn)程(Capture Process)在源系統(tǒng)端讀取Online Redo Log或Archive Log,然后進(jìn)行解析,只提取其中數(shù)據(jù)的變化如增、刪、改操作,并將相關(guān)信息轉(zhuǎn)換為GoldenGate TDM自定義的中間格式存放在隊(duì)列文件中。再利用傳送進(jìn)程將隊(duì)列文件通過TCP/IP傳送到目標(biāo)系統(tǒng)。捕捉進(jìn)程在每次讀完log中的數(shù)據(jù)變化并在數(shù)據(jù)傳送到目標(biāo)系統(tǒng)后,會寫檢查點(diǎn),記錄當(dāng)前完成捕捉的log位置,檢查點(diǎn)的存在可以使捕捉進(jìn)程在終止并恢復(fù)后可從檢查點(diǎn)位置繼續(xù)復(fù)制;

        目標(biāo)系統(tǒng)接受數(shù)據(jù)變化并緩存到GoldenGate TDM隊(duì)列當(dāng)中,隊(duì)列為一系列臨時(shí)存儲數(shù)據(jù)變化的文件,等待投遞進(jìn)程讀取數(shù)據(jù);

        GoldenGate TDM投遞進(jìn)程從隊(duì)列中讀取數(shù)據(jù)變化并創(chuàng)建對應(yīng)的SQL語句,通過數(shù)據(jù)庫的本地接口執(zhí)行,提交到數(shù)據(jù)庫成功后更新自己的檢查點(diǎn),記錄已經(jīng)完成復(fù)制的位置,數(shù)據(jù)的復(fù)制過程最終完成。

        由此可見,GoldenGate TDM是一種基于軟件的數(shù)據(jù)復(fù)制方式,它從數(shù)據(jù)庫的日志解析數(shù)據(jù)的變化(數(shù)據(jù)量只有日志的四分之一左右)。GoldenGate TDM將數(shù)據(jù)變化轉(zhuǎn)化為自己的格式,直接通過TCP/IP網(wǎng)絡(luò)傳輸,無需依賴于數(shù)據(jù)庫自身的傳遞方式,而且可以通過高達(dá)9:1的壓縮率對數(shù)據(jù)進(jìn)行壓縮,可以大大降低帶寬需求。在目標(biāo)端,GoldenGate TDM可以通過交易重組,分批加載等技術(shù)手段大大加快數(shù)據(jù)投遞的速度和效率,降低目標(biāo)系統(tǒng)的資源占用,可以在亞秒級實(shí)現(xiàn)大量數(shù)據(jù)的復(fù)制,并且目標(biāo)端數(shù)據(jù)庫是活動的

        GoldenGate TDM提供了靈活的應(yīng)用方案,基于其先進(jìn)、靈活的技術(shù)架構(gòu)可以根據(jù)用戶需求組成各種拓?fù)浣Y(jié)構(gòu),如圖所示:

        GoldenGate TDM 可以提供可靠的數(shù)據(jù)復(fù)制,主要體現(xiàn)在下面三點(diǎn):

        保證事務(wù)一致性

        GoldenGate TDM 在災(zāi)備數(shù)據(jù)庫應(yīng)用復(fù)制數(shù)據(jù)庫交易的順序與在生產(chǎn)中心數(shù)據(jù)庫上的順序相同,并且按照相同的事務(wù)環(huán)境提交,確保在目標(biāo)系統(tǒng)上數(shù)據(jù)的完整性和讀一致性,為實(shí)時(shí)查詢和事務(wù)處理創(chuàng)造了條件。

        檢查點(diǎn)機(jī)制保障數(shù)據(jù)無丟失

        GoldenGate TDM的抽取和復(fù)制進(jìn)程使用檢查點(diǎn)機(jī)制記錄完成復(fù)制的位置。對于抽取進(jìn)程,其檢查點(diǎn)記錄當(dāng)前已經(jīng)抽取日志的位置和寫隊(duì)列文件的位置;對于投遞進(jìn)程,其檢查點(diǎn)記錄當(dāng)前讀取隊(duì)列文件的位置。檢查點(diǎn)機(jī)制可以保證在系統(tǒng)、網(wǎng)絡(luò)或GoldenGate TDM進(jìn)程故障重啟后數(shù)據(jù)無丟失。

        可靠的數(shù)據(jù)傳輸機(jī)制

        GoldenGate TDM 用應(yīng)答機(jī)制傳輸交易數(shù)據(jù),只有在得到確認(rèn)消息后才認(rèn)為數(shù)據(jù)傳輸完成,否則將自動重新傳輸數(shù)據(jù),從而保證了抽取出的所有數(shù)據(jù)都能發(fā)送到備份端。數(shù)據(jù)傳輸過程中支持128位加密和數(shù)據(jù)壓縮功能。

        Oracle 公司的GoldenGate產(chǎn)品,可以在異構(gòu)的IT基礎(chǔ)結(jié)構(gòu)之間實(shí)現(xiàn)大量數(shù)據(jù)的秒一級的數(shù)據(jù)捕捉、轉(zhuǎn)換和投遞。GoldenGate可以支持幾乎所有常用操作系統(tǒng)如和數(shù)據(jù)庫平臺:

        操作系統(tǒng)支持:MS NT, 2000, XP, Linux, Sun Solaris, HP-UX, IBM AIX, HP NonStop, TRU64, IBM z/OS,OS/390 數(shù)據(jù)庫支持:Oracle, DB2, MS SQL Server, MySQL, Enscribe, SQL/MP, SQL/MX, Sybase, Teradata, 其他ODBC 兼容數(shù)據(jù)庫

        GoldenGate的應(yīng)用場景-容災(zāi)和應(yīng)急備份

        其中一主一備,快速恢復(fù)和切換,最小化數(shù)據(jù)損失,重新同步主備兩端數(shù)據(jù)。主庫數(shù)據(jù)變化能夠?qū)崟r(shí)的同步到備庫,用途主要是在非計(jì)劃性停機(jī)時(shí)候保持業(yè)務(wù)的連續(xù)性。

        GoldenGate的應(yīng)用場景-減少計(jì)劃內(nèi)停機(jī)

        主要是保障業(yè)務(wù)零或近似零停機(jī),在滾動升級中降低業(yè)務(wù)中斷帶來的損失。主要用途是保障系統(tǒng)/應(yīng)用/數(shù)據(jù)庫在升級,移植和維護(hù)期間業(yè)務(wù)的可用性。

        GoldenGate的應(yīng)用場景-雙業(yè)務(wù)中心

        主要是實(shí)現(xiàn)負(fù)載均衡(需要考慮全局多點(diǎn)的負(fù)載均衡,既提高性能,又避免業(yè)務(wù)中心的整體單點(diǎn)故障),提供系統(tǒng)整體性能。保障連續(xù)可用,快遞的容災(zāi)接管,實(shí)現(xiàn)沖突的監(jiān)測和處理。

        業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫雙活和主備設(shè)計(jì)

        首先我們還是回顧下業(yè)務(wù)系統(tǒng)容災(zāi)備份設(shè)計(jì)的目標(biāo)究竟是什么?

        簡單來講就是要避免在單個(gè)數(shù)據(jù)中心出現(xiàn)無預(yù)知災(zāi)難的時(shí)候,整個(gè)數(shù)據(jù)不丟失,整個(gè)應(yīng)用仍然能夠正常持續(xù)運(yùn)行。而對于持續(xù)不間斷運(yùn)行,我們?nèi)匀豢梢苑譃閮蓚€(gè)層面。

        • 完全不間斷,自動實(shí)現(xiàn)切換,對業(yè)務(wù)無感知
        • 短暫間斷,需要人工手工切換負(fù)載均衡或IP地址完成

        對于生產(chǎn)運(yùn)營類的企業(yè)IT系統(tǒng)需要做到完全不間斷,而對于內(nèi)部管理類的信息系統(tǒng)往往做到短暫間斷也可以接受。比如我們常說的電信運(yùn)營商的BSS域系統(tǒng),那么就需要做到完全不間斷自動切換,而對于MSS域圍繞ERP管理系統(tǒng)等,能在30分鐘內(nèi)完成切換調(diào)整就可以滿足需求。

        對于一個(gè)雙業(yè)務(wù)中心的設(shè)計(jì),可以看到里面有兩個(gè)重點(diǎn),一個(gè)就是數(shù)據(jù)庫本身的雙活設(shè)計(jì),還有一個(gè)就是應(yīng)用服務(wù)器集群本身的雙活設(shè)計(jì)。

        數(shù)據(jù)庫雙活或主備設(shè)計(jì)

        對于數(shù)據(jù)庫本身的技術(shù)種類,對雙活讀寫的支持,數(shù)據(jù)延遲的大小,可靠性等可以參考上圖進(jìn)一步了解。在考慮雙活數(shù)據(jù)庫設(shè)計(jì)的時(shí)候可以重點(diǎn)參考。

        對于雙業(yè)務(wù)中心和異地雙活設(shè)計(jì),前面我很多文章都已經(jīng)談到過,實(shí)際上最難的就是數(shù)據(jù)庫如何保證雙活,大部分的異地容災(zāi)方案數(shù)據(jù)庫本身都是單活的,一個(gè)作為備份庫。

        對于數(shù)據(jù)庫雙活和主備設(shè)計(jì),實(shí)際上在數(shù)據(jù)庫層面分為三個(gè)層面。

        • 數(shù)據(jù)庫單活:一個(gè)做為備份庫,平時(shí)不工作,在出現(xiàn)問題再動態(tài)切換
        • 數(shù)據(jù)庫寫單活,讀雙活:只有主庫可以寫,但是兩個(gè)數(shù)據(jù)中心數(shù)據(jù)可以同時(shí)讀
        • 數(shù)據(jù)庫雙活:即表格里面談到的Oracle ASM Extended RAC方案,這個(gè)沒怎么接觸過

        對于應(yīng)用服務(wù)器的Cluster集群,實(shí)際要做到雙活就比較簡單,由于不存在數(shù)據(jù)持久化的問題,因此只需要搭配上層的全局負(fù)載均衡往往就容易實(shí)現(xiàn)上層應(yīng)用服務(wù)器集群的雙活配置。

        方式1:通過GoldenGate來實(shí)現(xiàn)數(shù)據(jù)庫單活設(shè)計(jì)

        對于GoldenGate既支持?jǐn)?shù)據(jù)單向復(fù)制,也支持?jǐn)?shù)據(jù)庫雙向同步復(fù)制。

        我們可以通過數(shù)據(jù)庫單向復(fù)制來實(shí)現(xiàn)數(shù)據(jù)庫的主備模式雙活,即一個(gè)作為Master主節(jié)點(diǎn)數(shù)據(jù)庫,一個(gè)作為Standby的備庫。如下:

        當(dāng)主庫出現(xiàn)無法預(yù)知的災(zāi)難故障的時(shí)候,我們可以將訪問切換到備庫節(jié)點(diǎn)上,在主庫節(jié)點(diǎn)恢復(fù)后備庫節(jié)點(diǎn)重新返回備庫模式,前端訪問用戶也重新連回到主庫節(jié)點(diǎn)。

        也就是說在主庫恢復(fù)后,實(shí)際上還有一個(gè)過程即:

        備庫上所做出的修改和更新需要實(shí)時(shí)同步更新回主庫。

        因此雖然說這種模式是數(shù)據(jù)庫單向復(fù)制,實(shí)際上是指在某一個(gè)時(shí)點(diǎn)只允許一個(gè)方向的數(shù)據(jù)流。而不是說數(shù)據(jù)只能夠從主節(jié)點(diǎn)朝備節(jié)點(diǎn)同步。

        方式2:通過GoldenGate來實(shí)現(xiàn)數(shù)據(jù)庫雙活設(shè)計(jì)

        對于數(shù)據(jù)庫雙活設(shè)計(jì)即可以采用GoldenGate數(shù)據(jù)庫雙向同步復(fù)制來實(shí)現(xiàn)。實(shí)際上我們并不建議這種方式,主要是以下幾個(gè)方面的考慮。

        即在數(shù)據(jù)雙向復(fù)制的情況下對應(yīng)用系統(tǒng)本身的設(shè)計(jì)會有額外的要求,比如全局序列號的起始值的規(guī)劃,如何防止數(shù)據(jù)循環(huán)復(fù)制,如果網(wǎng)絡(luò)存在延遲,如何確保一個(gè)大的業(yè)務(wù)操作實(shí)時(shí)的數(shù)據(jù)一致性要求等。這些往往都是雙活數(shù)據(jù)庫本身存在的問題。

        其次,在數(shù)據(jù)庫雙活設(shè)計(jì)下,應(yīng)用集群和數(shù)據(jù)庫間往往存在兩種方式如下:

        對于方式1即應(yīng)用集群只固定訪問同數(shù)據(jù)中心的數(shù)據(jù)庫,對于方式2即應(yīng)用集群全部訪問上層兩個(gè)數(shù)據(jù)庫暴露的VIP地址,通過VIP來確定訪問兩個(gè)數(shù)據(jù)庫。

        對于方式1我們看到,實(shí)際上在數(shù)據(jù)庫中心A的數(shù)據(jù)庫宕機(jī)后,由于應(yīng)用集群可能沒有宕機(jī),那么全局負(fù)載均衡仍然會分發(fā)路由請求給應(yīng)用集群A,這個(gè)時(shí)候?qū)嶋H仍然出現(xiàn)訪問中斷的情況。

        而對于方式2采用了數(shù)據(jù)庫VIP后,雖然解決了上面的問題,但是很容易出現(xiàn)應(yīng)用集群A要跨域訪問到數(shù)據(jù)庫中心B的數(shù)據(jù)庫服務(wù)的情況。

        也就是在采用浮動VIP時(shí)候,希望是要做到應(yīng)用集群A優(yōu)先訪問數(shù)據(jù)庫A,只有當(dāng)數(shù)據(jù)庫A出現(xiàn)故障的時(shí)候才路由訪問數(shù)據(jù)庫B。

        方式3:不采用GoldenGate的思路

        如果不采用GoldenGate,那么我們就需要手工去處理以保證兩個(gè)數(shù)據(jù)庫間的數(shù)據(jù)同步復(fù)制。在我們實(shí)施ESB服務(wù)總線項(xiàng)目的時(shí)候,由于數(shù)據(jù)庫實(shí)例本身無狀態(tài)和一致性要求,因此我們完全可以采用晚上定時(shí)進(jìn)行數(shù)據(jù)庫增量腳本同步的方式來同步數(shù)據(jù)。

        其次,對于修改元數(shù)據(jù)的相關(guān)操作,則需要應(yīng)用程序同時(shí)在兩個(gè)數(shù)據(jù)中心的數(shù)據(jù)庫同時(shí)進(jìn)行操作,這個(gè)同時(shí)操作也可以通過應(yīng)用自動實(shí)現(xiàn),也可以人工同時(shí)操作,畢竟對元數(shù)據(jù)配置修改往往本身就是低頻操作。

        全局負(fù)載均衡和智能DNS路由

        當(dāng)我們談雙活數(shù)據(jù)中心的時(shí)候,前面更多談的數(shù)據(jù)庫的部署和同步方案,既然是雙活,那么APP Server應(yīng)用服務(wù)器就必須要做到能夠同時(shí)工作。而對于應(yīng)用服務(wù)器集群我們考慮的時(shí)候要注意,實(shí)際上在我們配置的時(shí)候,數(shù)據(jù)中心A和數(shù)據(jù)中心B兩個(gè)集群都是操作數(shù)據(jù)中心A的數(shù)據(jù)庫,否則就會出現(xiàn)數(shù)據(jù)庫雙向同步復(fù)制問題。

        要做到應(yīng)用集群雙活,在前面文章方案已經(jīng)談到,必須在數(shù)據(jù)庫中心A和B上面還有一個(gè)全局的負(fù)載均衡設(shè)備進(jìn)行全局負(fù)載均衡,同時(shí)全局負(fù)載均衡設(shè)備本身還需要HA配置確保無單點(diǎn)故障。

        對于最終用戶的訪問,我們企業(yè)DNS域名進(jìn)行訪問。

        同時(shí)在兩個(gè)數(shù)據(jù)中心配置智能DNS設(shè)備,本身進(jìn)行HA架構(gòu)冗余設(shè)計(jì),如下。

        智能DNS設(shè)備實(shí)際上要完成的事情很簡單,就是用戶通過域名訪問,智能DNS能夠返回具體某個(gè)數(shù)據(jù)中心的上層負(fù)載均衡IP地址信息。

        我們以單活架構(gòu)來進(jìn)行說明如下:

        • 用戶通過域名訪問,將請求發(fā)送給智能DNS解析設(shè)備
        • 智能DNS在主數(shù)據(jù)中心正常情況下返回主數(shù)據(jù)中心的負(fù)載均衡IP地址
        • 在獲取到IP地址后,應(yīng)用再發(fā)起對主數(shù)據(jù)中心的實(shí)際業(yè)務(wù)訪問

        如果主數(shù)據(jù)中心本身出現(xiàn)災(zāi)難宕機(jī)

        那么這個(gè)時(shí)候請問到DNS的時(shí)候則返回?cái)?shù)據(jù)中心B的負(fù)載均衡IP地址信息。這個(gè)時(shí)候備庫數(shù)據(jù)庫自動變化為主庫承擔(dān)應(yīng)用的讀寫任務(wù)。

        應(yīng)用集群本身的Admin設(shè)置和應(yīng)用部署

        對于應(yīng)用服務(wù)器集群,往往會有一個(gè)Admin集群管理節(jié)點(diǎn),通過Admin可以實(shí)現(xiàn)對應(yīng)用集群內(nèi)所有節(jié)點(diǎn)的狀態(tài)監(jiān)控,應(yīng)用的部署,負(fù)載均衡等相關(guān)操作。

        即使我們采用了類似F5等負(fù)載均衡設(shè)備,往往集群仍然需要設(shè)置管理節(jié)點(diǎn)以方便集群監(jiān)控和應(yīng)用程序的部署。

        那么在啟用雙數(shù)據(jù)中心后可以看到,對于Admin節(jié)點(diǎn)建議仍然是在兩個(gè)數(shù)據(jù)中心各自一套,即應(yīng)用程序的更新和部署仍然在兩個(gè)數(shù)據(jù)中心各自手工部署來完成。特別是在主備模式下,這種手工方式處理基本沒有任何影響。

        但是如果在雙活架構(gòu)模式下,如果手工完成往往就存在一定的延遲性的問題。

        這個(gè)實(shí)際又有兩種解決方案和思路。

        • 其一是通過一個(gè)Admin來管理兩個(gè)數(shù)據(jù)庫的所有集群節(jié)點(diǎn)
        • 其二是通過灰度發(fā)布策略等方法來控制部署時(shí)間上的延后

        對于第一種方式實(shí)際我們不建議,其本身增加了了兩個(gè)數(shù)據(jù)中心集群的耦合度,同時(shí)本身管理的復(fù)雜度,集群本身的狀態(tài)一致性保證復(fù)雜度都會增加。最好的方式仍然是通過灰度發(fā)布等策略控制來解決該問題。

        作者:人月神話  

        https://www.toutiao.com/i6874741202076303883/


        瀏覽 45
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            宾馆看国模裸体私拍视频 | 大陆三级片在线观看 | 亚洲成人小视频 | 欧美日韩在线电影 | 在工厂和几个少妇的性经历 | 国产精品三级视频 | 一级特黄aaa大片 | 欧美一级在线免费观看 | 双乳奶水饱满少妇呻呻吟 | 明星换脸av一区二区三区网站 |