大神好,我有些疑问,按mongodb官方的说话,当多于2个节点时。推荐副本集成员为奇数个成员,而不使用仲裁。
这个奇数个成员数量是指副本集初始化的数量吧? 还是有节点挂掉后参与选举的数量?
比如我部署一个副本集3个成员包括一个master,两个secondary?如果master 挂 了,还剩下两个secondary,这两个secondary会完成选举出来个master来么?
如果是不按官方推荐,我部署偶数个,4台机,1个master 3个secondary。master挂掉后,剩下 三个secondary难道选举不出一个Master?
我认为不管你部署多少台机(只讨论2台以上不需要仲裁的情况),最重要的是有成员(不管master or secondary)挂掉后,剩下未挂的机子能成功选举就可,所以跟部署多少台机关系不大。就算你一开始部署奇数台,如果挂掉一台,剩下的机子一样是偶数。
--后面补充:
后来我在网上看了一些文章,这个奇数个节点的建议应该是在跨机房部署时才有意义的,因为如果两个房机A,B,4台机AB中平衡分布也就是两边各2台,当网络故障时,AB会中的节点们会同时进行各自选举?因为没有达到4台机中的过半数量,AB两机房中的节点们都选举失败(或选举不会发生)这时如果不是4台机而是5台,那么其中有一个机房是3台机,达到了过半,选举则成功。这个理解对吗?
有没有哪个大神给我举个例子说明一下。在同一个机房中 节点数量与选举是否成功的关系 ?