<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          談?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ò)展:能夠動(dòng)態(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í)候都會(huì)考慮到同時(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è)原因我們會(huì)看到類似限流熔斷,SLA服務(wù)降級(jí)等各種措施來控制異常狀態(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)用自然會(huì)受到影響處于不可用狀態(tài),同時(shí)我們的數(shù)據(jù)存儲(chǔ)也存在丟失的問題。

          這也是我們談容災(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è)備份存儲(chǔ)系統(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)用級(jí)容災(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)等級(jí)的定義可以參考下圖:

          從圖中可以看到,如果要實(shí)現(xiàn)業(yè)務(wù)系統(tǒng)本身的異地雙活和不間斷運(yùn)行,那么就必須達(dá)到第七級(jí)的異地同步應(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)接替其工作。該級(jí)別的容災(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)用級(jí)的容災(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ù)制,一般會(huì)談到一個(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)平臺(tái)和數(shù)據(jù)庫平臺(tái))之間實(shí)現(xiàn)大量數(shù)據(jù)亞秒一級(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)的資源占用,可以在亞秒級(jí)實(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)不會(huì)要求數(shù)據(jù)庫本身在設(shè)計(jì)和實(shí)現(xiàn)中帶來任何額外的約束。我們也看到有些基于數(shù)據(jù)庫表設(shè)計(jì)增加觸發(fā)器或存儲(chǔ)過程來實(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)平臺(tái)和數(shù)據(jù)庫平臺(tái))之間實(shí)現(xiàn)大量數(shù)據(jù)亞秒一級(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)后,會(huì)寫檢查點(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í)存儲(chǔ)數(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)的資源占用,可以在亞秒級(jí)實(shí)現(xiàn)大量數(shù)據(jù)的復(fù)制,并且目標(biāo)端數(shù)據(jù)庫是活動(dòng)的

          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ù)傳輸完成,否則將自動(dòng)重新傳輸數(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ù)的秒一級(jí)的數(shù)據(jù)捕捉、轉(zhuǎn)換和投遞。GoldenGate可以支持幾乎所有常用操作系統(tǒng)如和數(shù)據(jù)庫平臺(tái):

          操作系統(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ī),在滾動(dòng)升級(jí)中降低業(yè)務(wù)中斷帶來的損失。主要用途是保障系統(tǒng)/應(yīng)用/數(shù)據(jù)庫在升級(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è)層面。

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

          對于生產(chǎn)運(yùn)營類的企業(yè)IT系統(tǒng)需要做到完全不間斷,而對于內(nèi)部管理類的信息系統(tǒng)往往做到短暫間斷也可以接受。比如我們常說的電信運(yùn)營商的BSS域系統(tǒng),那么就需要做到完全不間斷自動(dò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)問題再動(dòng)態(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ì)會(huì)有額外的要求,比如全局序列號(hào)的起始值的規(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ù)載均衡仍然會(huì)分發(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ù)的情況。

          也就是在采用浮動(dòng)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)用自動(dò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ù)庫,否則就會(huì)出現(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òng)變化為主庫承擔(dān)應(yīng)用的讀寫任務(wù)。

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

          對于應(yīng)用服務(wù)器集群,往往會(huì)有一個(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ù)雜度都會(huì)增加。最好的方式仍然是通過灰度發(fā)布等策略控制來解決該問題。

          作者:人月神話  

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


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

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  性爱成人网站 | 日韩人妻中文视频在线 | 国产日在线 | 欧美性极品少妇精品网站 | 绿帽娇妻3p粗大单男在线视频 |