我在测试环境中运行了一个包含六个节点和一个仲裁器的 MongoDB 2.4 副本集。我测试了故障转移响应时间,结果大约为 45 秒。
请记住,读取被设置为次要优先,因此在此期间只有写入会中断。因此,这不像完全失败那么糟糕,但这是一个问题。
我做了一些研究来缩短这个时间,似乎设置这么高是为了避免在滞后连接上发生故障转移并避免“抖动”,有些人将其描述为快速发生的多次选举。除了修改源代码之外,我真的没有找到减少故障转移时间的方法。
有什么办法可以把这个时间缩短到三十秒以内吗?越短越好。
答案1
如何赋予次要的更高的优先级?
local.system.replset.members[n].priority
将主服务器设置为 5,将要进行故障转移的辅助服务器设置为 4,将第三个服务器设置为 3,依此类推。
这样,选举中出现的问题就会减少。
答案2
查看3.0 文档
副本集故障转移需要多长时间?
它会有所不同,但副本集将在一分钟内选择一个新的主副本集。
副本集的成员可能需要 10-30 秒才能声明主节点不可访问。这会触发选举。在选举期间,集群无法进行写入。
选举本身可能还需要 10 至 30 秒。