簡體   English   中英

使用mongodb進行故障轉移

[英]Failover with mongodb

我必須設置一個可以處理故障轉移的數據庫(如果其中一個崩潰,則另一個崩潰)。 為此,我決定使用mongodb:我設置了帶有兩個實例的副本集。 每個實例都在單獨的VM上運行。 我有幾個問題:

  • 建議在副本集中至少使用3個實例。 可以只使用兩個嗎?

  • 我有兩個實例,然后有兩個IP地址。 我應該為應用程序提供哪個IP,以便在數據庫中進行讀寫? 當數據庫關閉時,如何將請求重定向到仍在運行的實例?

一些幫助入門會很棒!

建議在副本集中至少使用3個實例。 可以只使用兩個嗎?

不,副本集的最低要求是三個進程( docs ),但是即使不建議使用第三個進程也可以是仲裁程序

我有兩個實例,然后有兩個IP地址。 我應該為應用程序提供哪個IP,以便在數據庫中進行讀寫? 當數據庫關閉時,如何將請求重定向到仍在運行的實例?

有兩種選擇:

#1(推薦)

您為驅動程序提供所有地址(有關更多詳細信息,請訪問docs ),例如nodejs驅動程序 (與其他驅動程序類似)。 這樣,驅動程序將直接知道所有實例,或者至少直接知道其中一個實例,如果所有指定實例都關閉,則可以防止出現問題(請參閱#2)。

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://[server1],[server2],[...]/[database]?replicaSet=[name]', function(err, db) {
});

#2

您為驅動程序提供其中之一(可能是主驅動程序),而mongodb會找出其中的其余驅動程序。 但是,如果您的應用在指定實例關閉時啟動,則驅動程序將無法找到其他實例,因此無法連接到mongodb。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM