使用mongodb进行故障切换

使用mongodb进行故障切换,mongodb,transparency,replication,failover,Mongodb,Transparency,Replication,Failover,我必须设置一个可以处理故障转移的数据库(如果一个崩溃,另一个接管)。为此,我决定使用mongodb: 我设置了一个包含两个实例的副本集。每个实例都在一个单独的VM上运行。我有几个问题: 建议在副本集中至少使用3个实例。只用两个可以吗 我有两个实例,然后是两个IP地址。我应该为需要在数据库中读/写的应用程序提供哪个IP?当数据库关闭时,如何将请求重定向到仍在运行的实例 一些帮助开始将是伟大的 建议在副本集中至少使用3个实例。只用两个可以吗 不,副本集的最低要求是三个进程(),但第三个进程可以是

我必须设置一个可以处理故障转移的数据库(如果一个崩溃,另一个接管)。为此,我决定使用mongodb: 我设置了一个包含两个实例的副本集。每个实例都在一个单独的VM上运行。我有几个问题:

  • 建议在副本集中至少使用3个实例。只用两个可以吗

  • 我有两个实例,然后是两个IP地址。我应该为需要在数据库中读/写的应用程序提供哪个IP?当数据库关闭时,如何将请求重定向到仍在运行的实例

一些帮助开始将是伟大的

建议在副本集中至少使用3个实例。只用两个可以吗

不,副本集的最低要求是三个进程(),但第三个进程可以是,即使是

我有两个实例,然后是两个IP地址。我应该为需要在数据库中读/写的应用程序提供哪个IP?当数据库关闭时,如何将请求重定向到仍在运行的实例

有两种选择: #1(推荐) 您可以向驱动程序提供所有地址(有关详细信息,请访问),例如(与其他地址类似)。这样,驱动程序将直接知道所有实例,或者至少知道其中一个实例,这将防止在所有指定实例都关闭时出现问题(请参见#2)

#2
您为驱动程序提供了其中一个(可能是主驱动程序),mongodb将找到其余的驱动程序。但是,如果您的应用程序在指定实例关闭时启动,则驱动程序将无法找到其他实例,因此无法连接到mongodb。

太好了,不知道这是由驱动程序管理的。我会玩一玩的!非常感谢你!
var MongoClient = require('mongodb').MongoClient;

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