0

我想知道是否有無縫故障轉移mongo replicaset的方式,其中大部分mongodb節點都位於主數據中心。我目前的限制是2個數據中心,第三個數據中心是不可能的。我遇到的問題是,如果數據中心1出現故障,數據中心2中的次要節點將不會升級爲主服務器,而無需人工干預。Mongodb體系結構和兩個數據中心的故障轉移

數據中心1(主): 蒙戈節點(主) 蒙戈節點(仲裁器)

數據中心2(二次): 蒙戈節點(二次)

我看的mongodb白皮書,但他們表示,如果dc1丟失,則需要手動干預才能在dc2主節點中創建mongodb實例。

我的問題是,是否有一個架構在那裏或配置,將有可能失去數據中心1,仍然有能力讓數據中心2接管寫啓用沒有手動干預/重新配置。這可能不會導致3數據中心架構路徑。是否有可能讓每個站點上的兩個3成員副本集保持同步,並可能爲連接應用程序在網絡級執行故障轉移?

謝謝。

回答

2

如果你帶2個數據中心給我,最簡單的解決方案是隻覆蓋主服務器失敗。好消息是如果奴隸死了 - 你只需要等待。

如果訪問主要失敗,您需要回調過程,將強制奴隸主。如果您沒有花費更多時間創建緩衝查詢並等待交換機回撥的網關,該開關將導致應用程序停機。這樣你就只會增加超時時間。

在主服務器再次生效後,您需要連接到它(因爲您的從服務器節點不可靠) - 這將再次導致停機時間 - 您需要另一個檢查主服務器是否處於活動狀態的進程(來自數據中心2)它是觸發事件並繼續回調。

強制Slave作爲Primary的手動干預可以打包成腳本。

對我來說,這裏最好的解決方案是與第三個數據中心一起,仲裁器將留在那裏。努力跳過它並將應用程序邏輯放在那裏是不值得的。 Mongo中的自動故障轉移工作得很好,而且可靠。如果您使用應用程序邏輯來實現2個數據中心,那麼您可能會遇到很多問題......我寧願隨他們的建議去做。

1

首先,您已經注意到,您不能僅使用兩個節點進行自動故障轉移。其次,當你認爲「第三」數據中心的時候,錢不是真正的問題。你可能會問爲什麼或「多麼如此」?如你所知,你需要仲裁者。仲裁者確實不需要資源,任何小型的Linux機器都可以。小型VPS機器的成本並不高。 Here you can find machine 1 x 2.40 GHz, 512 MB, 20 GB只有1,24€/月。 From here you get beefier machine with 1.99€/month.

其實這兩個地方都可以用這些「小」機器運行相當大的mongodb。