0

我们在 AWS 上部署了一个带有 3 个分片的 MongoDB 分片集群。每个分片都有一个包含 3 个成员、1 个配置服务器和 3 个 mongos 的副本集。

[ shard 1 ] [ shard 2 ] [ shard 3 ]
[ mongos0 ] [ mongos1 ] [ mongos2 ]
[ config0 ] [ config1 ] [ config2 ]
[ (p) md0 ] [ (s) md0 ] [ (s) md0 ]
[ (s) md1 ] [ (p) md1 ] [ (s) md1 ]
[ (s) md2 ] [ (s) md2 ] [ (p) md2 ]

以及分片在 3 个 EC2 实例上的分布方式

[   md0   ][   md1   ][   md2   ]
[ shard 1 ][ shard 1 ][ shard 1 ]
[ shard 2 ][ shard 2 ][ shard 2 ]
[ shard 3 ][ shard 3 ][ shard 3 ]
[ mongos0 ][ mongos1 ][ mongos2 ]
[ config0 ][ config1 ][ config2 ]

您可以看到 replicaSet 成员不在同一个实例上。

但是当例如md0宕机时,我们的 API(Parse Server)与集群的连接松散,尽管md1仍然md2存在并且已经选择了一个新的主节点。由于复制,所有 EC2 实例都拥有所有集合的副本,包括分片集合。

连接字符串看起来像这样

mongodb://user:password@mongos0:27017,mongos1:27017,mongos2:27017/mydb

您认为这是集群/分片配置的问题,还是与 API 相关的问题,它保持连接而不是尝试连接到其他 mongos?

4

0 回答 0