我正在本地环境中对 mongodb 进行故障转移测试。我有两个 mongo 服务器(主机名 1,主机名 2)和一个仲裁器。
我的 mongoid.yml 文件中有以下配置
localhost:
hosts:
- - hostname1
- 27017
- - hostname2
- 27017
database: myApp_development
read: :primary
use_activesupport_time_zone: true
现在,当我启动我的 rails 应用程序时,一切正常,并且从主节点(主机名 1)读取数据。然后我杀死了主(hostname1)的mongo进程,所以辅助(hostname2)成为主并开始提供数据。
然后一段时间后,我启动 hostname1 的 mongo 进程,然后它成为副本集中的辅助节点。现在主要(主机名2)和次要(主机名1)工作正常。
真正的问题从这里开始。
我杀死了我的新主(hostname2)的mongo进程,但是这次,辅助(hostname1)没有成为主,并且对rails应用程序的任何进一步请求都会引发以下错误
Cannot connect to a replica set using seeds hostname2
请帮忙。提前致谢。
** 更新: **
我在 mongo repl_connection 类中输入了一些记录器,并遇到了这个。
当我启动 rails 应用程序时,我在种子数组中拥有两个主机,mongo 驱动程序会跟踪这些主机。但在第二次故障转移期间,此阵列中仅存在发生故障的主机。
因此,我还想知道,如何以及何时从种子列表中删除主机之一。