1. 程式人生 > >兩地三中心到雙活數據中心(轉載)

兩地三中心到雙活數據中心(轉載)

情況下 內部 gem 第三方 風險 做什麽 數據傳輸 技術方案 單向

從兩地三中心到雙活數據中心

從兩地三中心到雙活數據中心

兩地三中心

兩地三中心的有幾種實現形式,下圖是一種典型案例。

技術分享圖片

在這一案例中,正常情況下,業務運行在主機房的設備之上。主存儲與輔存儲存在單向同步關系,即主儲存的所有數據變更都會實時同步復制①到次存儲上,從而保證兩個存儲數據完全一致。同時,為防止極端災害發生,主存儲的數據變更也會通過異步復制②的方式同步到遠程容災機房的存儲設備上。

當主中心因為各種原因中斷服務時,可以通過手工命令或者軟件自動切換的方式讓業務切換到輔機房。同時建立次存儲到榮災機房存儲的異步復制關系,保護數據。

如果極端情況發生,輔機房也不能運行業務,那麽遠程容災機房還有一份數據保存,可以用它恢復業務。

註意:上圖只是一種兩地三中心的實現方式,還有好幾種其它方式,比如:

⑴遠程容災中心也配置服務器,當災害發生時容災中心可以運行業務;

⑵3個存儲的拓撲方式不同。但是基本原理差別不大,在此就不做贅述。

兩地三中心的優點是防範了各種危害磁盤陣列硬件數據的風險(不包括軟件或者人工誤刪除數據操作),缺點是成本巨高,且設備使用效率低,特別是輔機房設備不能在業務正常運行時使用,浪費很大。為此,存儲設備廠商改進了設計,讓次存儲和冗災存儲變成可讀不可寫狀態,從而讓部分業務如BI等運行在輔機房和冗災機房,分擔了主機房設備的負載。

但是這種做法不夠純粹,實施需要主機應用軟件配合。而且主輻機房切換需要業務中斷數分鐘到數小時的時間,前端業務感知不好。

於是存儲設備廠商又發展了雙活數據中心技術來改進這個缺點。

①同步復制可以保證數據完全一致,但是對數據傳輸帶寬和時延要求都很高,成本昂貴,適用用於近程。

②異步復制不保證數據完全一致,存在數據丟失的情況,但是對數據傳輸帶寬和時延要求較低,適用於遠程。

雙活數據中心

下面我們以HP XP7磁盤陣列與ORACLE RAC配合為例,展示這個技術方案。

技術分享圖片

這個方案裏,主輔機房裏面的主機可以同時訪問主輔機房的存儲,這樣兩個機房的主機和存儲與ORACLE RAC技術配合,共同為業務提供服務。

那麽兩個存儲的數據一致性又如何保證呢?XP7技術方案的核心在於:兩個存儲配合,虛擬出一個磁盤陣列(類似於主機集群軟件的浮動軟件包技術),主機向虛擬磁盤陣列發出IO請求,主存儲和輔存儲合作,共同完成主機對虛擬磁盤陣列的IO請求。主輔存儲數據雙向同步,通過陣列內部機制保證數據一致性。

當主輔存儲任一出現問題時,幸存的陣列會繼續支持虛擬陣列服務,主機感受不到虛擬陣列的後臺狀態變化。再配合oracle RAC提供的數據庫集群功能,可以實現應用無中斷運行,前端基本無故障感知。

這個方案的優點在於兩個機房的主機都只看到一個虛擬磁盤陣列,兩臺存儲的內部同步機制完全對主機透明,主機應用配置簡單。

由於主輔存儲有一定的物理距離,如果數據同步鏈路故障,比方說國內常見的修路挖斷光纖的狀況,就會出現“腦裂”的情況,這時候,仲裁磁盤起作用的時候到了。

仲裁盤是獨立於主輔存儲的第三個磁盤設備(不建議用容災機房的存儲),通過FC鏈路與主輔存儲連接。當主輔存儲的數據鏈路出現異常時,主輔存儲會通過仲裁盤決定哪一個存儲繼續提供服務,不提供服務額存儲會進入鎖定狀態,一直等到數據鏈路恢復,兩個陣列數據同步完成之後再恢復正常。

那麽,如果仲裁盤失效時,會出現什麽情況呢?很簡單,兩個存儲都鎖定,不提供服務。畢竟數據的完整性是最重要的。

圖中的仲裁服務器又是做什麽的呢?顧名思義,它是一臺服務器或者虛擬機,上面運行專用程序為主輔存儲提供基於IP協議的仲裁服務。

對於HP XP7或者HDS G系列陣列而言,是不需要圖2中的仲裁服務器的。但是,有些設備廠商基於各方面考慮,不使用磁盤仲裁,而是仲裁服務器,比如EMC Vplex或者netapp。

此外,有些廠商的方案沒有使用虛擬存儲的技術,而是把兩臺物理存儲暴露給主機,然後在陣列上通過其它辦法實現兩個陣列的數據同步。這種辦法我有一些疑問,希望以後能得到高人指點

還有,市場上不僅有基於存儲實現的雙活,還有基於主機軟件實現的雙活,如果做得好,都是可以滿足需求的。但是有一點需要特別註意:就是“腦裂”狀況的處理,我認為:沒有第三方仲裁設備的雙活方案都是不夠強壯的,可能難以應付現實環境下的復雜狀況。

除了“腦裂”,方案設計者還要考慮“鎖競爭”問題:當主輔機房鏈路中斷後,存儲有仲裁機制,oracle RAC也有自己的仲裁機制,如果出現RAC鎖機制判定主機房設備繼續提供服務,存儲卻判定輔機房存儲繼續提供服務情況,就會導致“雙活”變成“雙死”。

這種情況對於某些應用軟件或者非磁盤仲裁的存儲設備可能是一個需要費一番周折才能解決的問題,但是對於本例中的XP7+RAC,我們是可以通過如下配置來避免這種情況的發生:

因為RAC的仲裁機制使用的是磁盤,我們只需把仲裁盤配置在虛擬的磁盤陣列上就可以避免“鎖競爭“的情況發生。因為RAC仲裁盤在虛擬陣列上,主或輔存儲任意一個被鎖定,它對應機房的主機也就不可能訪問得了虛擬陣列上的鎖盤,自然不可能得到仲裁盤的認可,也就不能繼續運行了。

兩地三中心到雙活數據中心(轉載)