我正在探索分片的 MongoDB 集群,但我无法理解网络分裂期间 MongoS 的行为。
我的测试环境工作正常,直到我模拟网络分裂。在“最小”网络分区中,我有:
- N 个 MongoS 服务器
- 仅有 1 个配置服务器(共 3 个),处于 SECONDARY 状态
- 和 N 个分片服务器
在此分区中:
- 首先,所有 MongoDB 服务器 + MongoS 仍然接受连接并按预期运行
- 如果我重新启动这些 MongoDB+MongoS 服务器 => MongoS 服务器启动但拒绝连接(MongoNetworkError:连接 ECONNREFUSED)。
你知道为什么吗?我肯定忽略了一些显而易见的东西。据我从启动日志中得知,MongoS{"find":"shards", "readConcern":{"level":"majority"}}
向配置服务器发送查询,这似乎在网络分裂期间肯定会失败(Command timed out waiting for read concern to be satisfied
)。
谢谢你的帮助