MongoDB多數(shù)據(jù)中心部署方案(五)

(草稿)

目錄

第五章 MongoDB部署模式

下圖顯示MongoDB中的數(shù)據(jù)中心awareness如何為地域和全球部署提供高可用性和可擴(kuò)展性。

高可用:?jiǎn)螖?shù)據(jù)中心

在數(shù)據(jù)中心內(nèi),復(fù)制集可以分布在機(jī)架上,以便任一機(jī)架都不會(huì)包含一個(gè)給定分片的多個(gè)復(fù)制成員。

在這配置中可以容忍服務(wù)器和機(jī)架故障,復(fù)制集成員的數(shù)量決定系統(tǒng)可持續(xù)承受故障的規(guī)模,而不影響可用性。這種部署不會(huì)對(duì)數(shù)據(jù)中心本身的故障容錯(cuò)。


圖3:?jiǎn)螖?shù)據(jù)中心-服務(wù)器和機(jī)架容錯(cuò)

高可用:主/備 數(shù)據(jù)中心

在典型的災(zāi)難恢復(fù)中,復(fù)制集成員分布在兩個(gè)數(shù)據(jù)中心的機(jī)架上?;顒?dòng)的數(shù)據(jù)中心(西部數(shù)據(jù)中心)包括一個(gè)偶數(shù)的復(fù)制集成員其中包含主成員。


圖4:主/備 數(shù)據(jù)中心 - 數(shù)據(jù)中心容錯(cuò)

東部的備用或?yàn)?zāi)難恢復(fù)數(shù)據(jù)中心配有副復(fù)制集成員,配置較低的選舉優(yōu)先級(jí)(建議使用0.5)。這樣可以確保只有West數(shù)據(jù)中心的節(jié)點(diǎn)才是主(Primary),除非一個(gè)數(shù)據(jù)中心完全中斷它們才完全不可用。在活動(dòng)/備份配置中,用戶能避免任一數(shù)據(jù)中心丟失,而應(yīng)用程序可能使用大部分write concern保持在任何服務(wù)器故障時(shí)寫保護(hù)。

在西部數(shù)據(jù)中心發(fā)生故障時(shí),運(yùn)營(yíng)團(tuán)隊(duì)的重點(diǎn)是把東部投入生產(chǎn)環(huán)境,同時(shí)要防止西部數(shù)據(jù)恢復(fù)時(shí),一種“裂腦”(split brain)的可能性。去做這個(gè),管理員必須確保西部至少有一個(gè)MongoDB節(jié)點(diǎn)停留下來,通過一定的措施,如移除電源或確認(rèn)西部的永久性物理損失。下一步一個(gè)在東部節(jié)點(diǎn)上的“強(qiáng)制”重配置復(fù)制集移除西部?jī)蓚€(gè)成員的投票。東部節(jié)點(diǎn)大部分立即選舉自己為主(Primary)并恢復(fù)生產(chǎn)能力。如果西部在任何時(shí)間停止服務(wù),額外的復(fù)制集成員應(yīng)該添加至東部為MongoDB部署恢復(fù)冗余。在更可能出現(xiàn)的西部恢復(fù)事件中,應(yīng)采取以下步驟:

一旦連接恢復(fù),在西部恢復(fù)的復(fù)制集成員自動(dòng)同步當(dāng)前東部的主復(fù)制集。東部剩下有投票權(quán)的成員以單獨(dú)表決的形式選出西部較高優(yōu)先級(jí)的節(jié)點(diǎn)為主(Primary)。

重啟西部剩余的復(fù)制集。它會(huì)自動(dòng)重新同步其余的復(fù)制集并承擔(dān)次級(jí)角色。

恢復(fù)對(duì)西部MongoDB節(jié)點(diǎn)的選舉投票權(quán),完成恢復(fù)至初始狀態(tài)。當(dāng)加上MongoDB的持續(xù)備份和指定時(shí)間恢復(fù)工具,主/備設(shè)計(jì)模式在此示例中將通過災(zāi)難恢復(fù)和低PRO(目標(biāo)點(diǎn)恢復(fù))提供業(yè)務(wù)連續(xù)性。然而,它是分布式架構(gòu),MongoDB提供更靈活的配置支持主/主數(shù)據(jù)中心配置。

請(qǐng)注意此部署適用于單復(fù)制集或?yàn)橐粋€(gè)未使用集群負(fù)載均衡的分片集群。負(fù)載均衡器在用于圍繞集群自動(dòng)重發(fā)數(shù)據(jù)的多數(shù)據(jù)中心環(huán)境中,建議在一個(gè)主/主數(shù)據(jù)中心配置中部署MongoDB。

高可用:主/主數(shù)據(jù)中心

兩個(gè)數(shù)據(jù)中心,在這個(gè)例子中”西部“和”東部“配置相等數(shù)量的復(fù)制集成員,一個(gè)第三方數(shù)據(jù)中心(”中心“)包含一個(gè)附加的復(fù)制集成員。這個(gè)配置需要確保如果數(shù)據(jù)中心之中一個(gè)故障,大多數(shù)的復(fù)制集成員能構(gòu)成一個(gè)法定人數(shù)(所以如果西部數(shù)據(jù)中心故障,剩下的兩個(gè)數(shù)據(jù)中心能對(duì)集群狀態(tài)達(dá)成一致并切換到東部數(shù)據(jù)中心)。

圖5:主/主 數(shù)據(jù)中心 - 服務(wù)器、機(jī)架與數(shù)據(jù)中心加網(wǎng)絡(luò)中斷容錯(cuò)

高可擴(kuò)展性:全球數(shù)據(jù)分布

為減少地理環(huán)境因素的影響,MongoDB可以將數(shù)據(jù)復(fù)制到本地站點(diǎn)。讀操作可以通過?nearest?發(fā)布一個(gè)優(yōu)先讀取。根據(jù)一個(gè)ping距離,確保從最接近用戶的數(shù)據(jù)中心提供數(shù)據(jù)。

這些讀操作與主(Primary)保證最終一致,但通常不超過幾毫秒在主(Primary)之后,加網(wǎng)絡(luò)延遲。寫操作發(fā)布給主(Primary)。

這種部署類型的典型用戶案例是將數(shù)據(jù)和內(nèi)容分發(fā)到地域遠(yuǎn)程受眾。數(shù)據(jù)集被寫入主(Primary)服務(wù)器,然后在這些數(shù)據(jù)中心被本地用戶低延遲訪問時(shí)將它們廣播到世界各地的數(shù)據(jù)中的復(fù)制集成員。


圖6:全球數(shù)據(jù)分布 - 消除地域讀取延遲


高可擴(kuò)展性:本地讀操作/全局寫操作

使用區(qū)分片,管理員能將數(shù)據(jù)庫的特定分區(qū)引導(dǎo)到特定的地理區(qū)域。每個(gè)區(qū)域都是一樣的,單集群能被全球查詢到,但數(shù)據(jù)位于獨(dú)立和本地訪問需求的正確位置。通過根據(jù)用戶位置將數(shù)據(jù)關(guān)聯(lián)到分片,管理員能夠保持低延遲訪問。

為進(jìn)一步說明,一個(gè)應(yīng)用程序可以用友北美,歐洲和中國(guó)的用戶。應(yīng)用程序所有者可以將每個(gè)分片分配給改分片服務(wù)器的物理位置(北美,歐洲或中國(guó))的區(qū)域,然后根據(jù)其區(qū)域字段將所有文檔映射到正確的區(qū)(Zone)。任何數(shù)量的分片都可以和每個(gè)區(qū)(Zone)關(guān)聯(lián)并且每個(gè)區(qū)都可以獨(dú)立其他的進(jìn)行擴(kuò)展。例如,比起北美,中國(guó)的用戶增長(zhǎng)速度更快。

在這部署中,每個(gè)MongoDB分片都被本地化至一個(gè)特定的數(shù)據(jù)中心。每個(gè)數(shù)據(jù)中心都有一個(gè)具有其分片的主復(fù)制集成員并還保留位于其他數(shù)據(jù)中心的次級(jí)復(fù)制集分片。應(yīng)用程序能執(zhí)行本地?cái)?shù)據(jù)的讀寫操作以及從其他區(qū)域復(fù)制的數(shù)據(jù)的讀操作。如果用戶從一個(gè)數(shù)據(jù)中心移至另一個(gè),則可以通過簡(jiǎn)單地更新分片區(qū)域輕松的遷移數(shù)據(jù)。

一個(gè)用戶從他的本地位置漫游不同區(qū)域的移動(dòng)應(yīng)用代表這類部署的典型案例。使用適當(dāng)?shù)膶懭氩呗?,?duì)移動(dòng)服務(wù)的任何更新能被路由回它通常的起始位置的數(shù)據(jù)中心(全局寫入),同時(shí)通過使用nearest讀取優(yōu)先級(jí)(本地讀?。⑵渎酚傻阶罱奈锢頂?shù)據(jù)中心。

另一個(gè)案例是內(nèi)容管理和交付。例如,McAfee全球Threat集成平臺(tái)將內(nèi)容更新寫入最每個(gè)用戶的數(shù)據(jù)中心,然后使用nearest讀取優(yōu)先級(jí)對(duì)該數(shù)據(jù)進(jìn)行低延遲訪問。

圖7:本地讀/全局寫 - 啟用移動(dòng)應(yīng)用

通過查看我們關(guān)于使用MongoDB區(qū)域創(chuàng)建地理位置分布式集群的教程了解更多信息:(https://docs.mongodb.com/master/tutorial/sharding-segmenting-data-by-location/)

分布式本地寫入為Always-On 寫入僅工作負(fù)載

MongoDB 區(qū)域通過為寫入僅工作負(fù)載的持續(xù)可用性提供了解決方案,例如在IoT應(yīng)用程序中攝入傳感器數(shù)據(jù)。區(qū)域可用于本地化寫入在一個(gè)分布式集群中創(chuàng)建特定地配置,確保即使在數(shù)據(jù)中心故障期間總是有可用的接受寫入的節(jié)點(diǎn)。如圖8所示,分布式本地寫入的拓?fù)鋵⒕S護(hù)每個(gè)數(shù)據(jù)中心的兩個(gè)分片的節(jié)點(diǎn)。如果數(shù)據(jù)中心不可用,應(yīng)用端邏輯能自動(dòng)修改分片密匙去重定向?qū)懭氲絺溆脭?shù)據(jù)中心。


圖8:維護(hù)MongoDB zones的持續(xù)可用性和本地寫操作

通過查看我們關(guān)于使用MongoDB區(qū)域配置本地化寫操作的教程了解更多信息。

下一章 管理多數(shù)據(jù)中心部署

本文譯者:吳錦晟 R&D Director@MFG

原文鏈接:http://m.itdecent.cn/p/0a04ee005f9e

版權(quán)歸譯者所有,轉(zhuǎn)載請(qǐng)注明出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容