我的NodeJS客户端能够根据需要连接到MongoDB主服务器并与之交互。来自NodeJS的MongoDB复制连接
我用下面的代码来构建一个服务器对象
var dbServer = new Server(
host, // primary server IP address
port,
{
auto_reconnect: true,
poolSize: poolSize
});
和下面的代码来创建数据库对象:
var db = new Db(
'MyDB',
dbServer,
{ w: 1 }
);
我的印象是,当主下山,客户会自动发现它现在需要与其中一位副局长谈话,他们将被选为主要委员。
但是,当我手动杀死主服务器时,其中一台辅助服务器确实成为主服务器(从它的mongo shell可以观察到,并且它现在响应mongo shell命令),但客户端没有自动与它交谈。如何配置NodeJS服务器自动切换到辅助?
难道,我需要指定所有3个服务器地址?但这似乎并不是一个好的解决方案,因为一旦主要网络恢复正常,它的IP地址将与原来的IP地址不同。
我觉得我失去了一些东西很基本的,请赐教:)
谢谢你, 加里
尼尔,感谢您的详细解释。我根据您的建议进行了更改,现在客户端在主服务器出现故障时切换到次服务器。如果您不介意,我有几个问题需要注意:1.当我杀死2台数据库服务器时,只留下一台服务器,客户端无法再连接,您能否介绍一下为什么?另外,我在AWS EC2上托管客户端服务器和mongo服务器,所以我想我可以分配/分配给我一个内部IP地址池,当我重新启动发生故障的服务器时,可以为其分配IP地址。 –
和关于auto_reconnect,因为客户端和数据库服务器都在AWS内部,我真的需要担心客户端无法连接到数据库服务器吗?我想,这只会在所有副本成员死亡或AWS有内部网络问题时才会发生。再次感谢您的反馈。 –
@GaryKipnis这两个有点过于宽泛,但杀害两个实例的一般情况导致我相信其余成员不再形成多数,因此没有“主要”左派。其次,始终认为连接可以消失。即使AWS在同一地区,您也无法确定实例之间是否存在网络分区,或者即使它们实际上没有确定的计划保证位于同一数据中心。您可能有更适合复制的[dba.stackexchange.com](http://dba.stackexchange.com)问题。 –