MongoDB副本集和HA

时间:2014-10-25 01:25:17

标签: mongodb high-availability

我创建了一个两个成员的MongoDB副本集。 根据rs.status(),两个成员都已成功连接。

会员A使用端口27018。 成员B使用端口27019。

如果成员A出现故障,我希望我的客户自动故障转移到成员B. 如何让客户端执行此操作? 它如何知道它需要切换到端口27019?

1 个答案:

答案 0 :(得分:4)

您的副本集中只有2个成员,您将无法做到这一点。

当主要版本发生故障时(我假设您的成员A是主要成员),其他成员必须选择新的主要成员。要成为新的小学,成员必须获得大多数选票,意味着超过50%。如果你只有2名成员,而其中一名成员只剩下一名成员,那就意味着无法获得大多数选票(2)。

您要做的是添加另一个辅助成员,因此如果您的主要成员发生故障,另外两个成员将能够在他们之间选出一个新的主要成员。或者你可以添加一个Arbiter,它是一个轻型mongod进程(可能共享另一个服务器),其功能只是参与选举。

无论如何,我认为当选择新的Primary时,如果你正确构建你的应用程序,那么交换机应该是透明的:当你实例化你的驱动程序时,你传递一个服务器列表和副本集的名称正在运行,所以如果一个失败,它将切换到第二个。但那时我可能错了......

有关此内容的更多信息:http://docs.mongodb.org/manual/core/replica-set-high-availability/