我将为使用MongoDB的生产环境使用2服务器解决方案。
如果我理解正确,我可以拥有1个副本集,其中包含2个节点,每个服务器一个节点。 现在,为了使容错能够重新分配新的主节点,我需要一个仲裁节点。
由于我仍然想使用2台服务器,如果持有仲裁节点的服务器出现故障,则无法设置新的主服务器。
我提出的解决方案是拥有3个仲裁节点。 1在一台服务器,另外2在另一台服务器。这样,如果任何服务器出现故障,另一台服务器的非仲裁节点将成为主服务器。
这是对的吗? 我应该使用其他解决方案吗?
谢谢! 伊格纳西奥。
答案 0 :(得分:0)
你的方法也不会奏效。如果具有2个仲裁器的机器发生故障,另一台机器将只能为其副本投两张票。但是在这种配置中需要三票才能选出主要票。这并不比挑选其中一台机器来托管单个仲裁器更好。
使用偶数个节点无法保证初选。您必须要么容忍在应用程序中没有主数据库(进入只读模式),或者添加第三台机器。
只有两台机器,我会考虑把仲裁器放在两台机器上(这应该是托管主机器)。在此设置中,
我发现方案3比方案2更常见。为了解决这个问题,您可以考虑使用MongoMMS(或其他方式)来监控群集,以便任何节点不可用(特别是方案3)都可以尽快调查。