2 個資料中心之間的 MongoDB 自動故障轉移

2 個資料中心之間的 MongoDB 自動故障轉移

如果我只在 2 個資料中心部署 MongoDb 副本集,如果整個資料中心發生故障,是否可以自動故障轉移到另一個資料中心?

考慮這樣的情況:1 個資料中心有一個主成員、一個輔助成員和一個仲裁器,第二個資料中心有 2 個輔助成員。本質上是一個 5 個成員的副本集。

如果資料中心 2 發生故障,資料中心 1 的副本集中仍然有 3 個成員。

相反,如果資料中心 2 保持運作狀態,而資料中心 1 宕機,則 5 成員副本集中將只剩下 2 個成員。這還不足以讓任何一個次要投票本身成為主要的。

那是對的嗎?如果不是,我做錯了什麼。

如果這不可能,請告訴我,以便我可以探索其他選項。

新增第三個資料中心來容納仲裁器並不是一種選擇。

答案1

您的問題的答案是,不可能只使用兩個位置。

不可能的原因可以這樣解釋:如果兩個位置都功能齊全,但兩者之間的網路連線出現故障,則只有其中一個位置可以保持功能。在這種情況下,兩個地點同時選舉初選是不可接受的。

一個位置無法區分另一個位置完全關閉和另一個位置正常但兩個位置之間的網路連線關閉之間的差異。

因此,如果每個位置都可以在另一個位置發生故障時獨立地選擇一個主節點,那麼結果將是,在網路中斷的情況下,兩個主節點可能同時存在。擁有兩個初選是一種不可接受的情況,這就是為什麼兩個地點中只有一個能夠選舉初選。

擁有三個位置就足夠了如果你對失敗的行為做假設。任何在不假設故障的情況下工作的解決方案都需要至少四個位置,才能容忍單一位置的中斷。這項要求源自拜占庭協議領域的關鍵定理之一。

答案2

一種可能的選擇是在第一個資料中心擁有一個主資料庫和一個輔助資料庫,在第二個資料中心擁有 2 個輔助資料庫,並且您可以在第三個資料中心擁有仲裁器。

相關內容