背景:
在自己主机上开3个虚拟机,用桥接模式,固定IP,确保可以联网。搭建副本集,测试可行。
问题描述:
为了学习mongodb操作的方便(我只要能找到主节点,能连到数据库即可),所以我只开启两台虚拟机:1主+1仲裁,理论上可以正常工作,但没有备份,即无法实现高可用。问题来了:两台虚拟机开启后,开始时可以正常选主。但当我主动重启仲裁节点(模拟副本集中一个节点宕机的情形)后,主节点会频繁的变为从节点(SECONDARY),查看副本集信息,显示:
过几分钟后,又能够正常选主。不过持续时间很短,接着重复上述主变从的情况。
分析:
1、防火墙问题:考虑可能是重启仲裁节点后,防火墙也自动开了,导致连不上。
尝试:开端口,关闭防火墙都不能解决问题。
2、网络问题:可能是网络不通。
尝试:在主和仲裁间相互ping,可以ping通。(悲剧的开始,事实上是间歇性ping通,而我ping的时候刚刚好,网络是通的。。。)所以排除了网络问题。
3、没办法就Google:
尝试:以下是网上搜的内容,讲的很详细,和我遇到的问题很像,但不一样,所以把我带坑里了,,,让我坚信是mongodb自身的tcp链接的bugÿ