当辅助站点无法访问时,与PHP的MongoDB副本集的连接需要一分钟+

mep*_*123 10 php failover mongodb replicaset

我有一个由5个成员组成的副本集:服务器1上的主服务器+仲裁服务器,服务器2上的辅助服务器+仲裁服务器,服务器3上的隐藏辅助服务器(备份节点).我希望如果一台服务器出现故障或暂时失去连接,此配置将起作用.

但是,当服务器2关闭时(具有辅助+仲裁节点的服务器),我遇到了一个奇怪的问题.与PHP副本集的任何连接都需要一分多钟.我尝试修改连接字符串以从中排除已关闭的服务器(辅助节点),但它没有帮助.

同时通过mongo控制台连接工作得很好.主节点仍然是主节点.PHP错误日志不包含任何错误.

唯一有帮助的是删除服务器上从副本集中删除的节点.

但是,我现在担心配置的故障转移.正如我现在所知,如果具有辅助+仲裁节点的服务器将关闭,整个配置将停止正常工作.有什么办法可以避免吗?无论辅助+仲裁服务器是否可用,我都需要PHP客户端能够连接到主服务器.怎么实现呢?

mongo PHP客户端库的版本是1.6.x,服务器的版本是3.0.

wdb*_*ley 1

如果服务器 2 出现故障,您的配置将不起作用。您的副本集有 3 个投票节点,其中两个位于服务器 2 上。如果服务器 2 出现故障,则该集有 1/3 的成员可用,因此无法维护或选举主节点。您需要 2/3 能够互相交谈才能选举初选。

您对问题的描述与副本集的行为方式不一致 - 当 2/3 关闭时通过 shell 连接到主数据库不会显示主数据库剩余的主数据库。它将降级为二级。您确定您有正确的症状吗?