为 MongoDB 副本集中的写操作分配专用的主节点

问题描述 投票:0回答:1

我的 MongoDB 集群由 15 个节点组成,分布在 3 个不同的数据中心,分布如下: `数据中心 1:

Router-1
ConfigServer-1
Shard1Node1 [Primary]
Shard2Node2 [Secondary]
Shard3Node2 [Secondary]

DataCenter 2:

Router-2
ConfigServer-2
Shard1Node2 [Secondary]
Shard2Node1 [Primary]
Shard3Node3 [Secondary]

DataCenter 3:

Router-3
ConfigServer-3
Shard1Node3 [Secondary]
Shard2Node3 [Secondary]
Shard3Node1 [Primary]`

我正在运行应用程序实例,连接到三个数据中心中每个数据中心的本地 MongoDB 路由器。这些实例使用区域分片执行写入操作,将它们定向到各自数据中心的主节点。为了从其他分片读取数据,它们利用位于各自数据中心的辅助节点。

数据中心1与其他数据中心失去连接的场景,针对数据中心1;在继续读取其他分片的辅助节点的同时,我需要继续写入已与副本集断开连接的主节点。然而,在 3 节点副本集中,剩余的主节点放弃其主节点状态并成为辅助节点,拒绝写入操作。

如何解决这个问题?

mongodb sharding high-availability replicaset
1个回答
0
投票

不太清楚你的意思,PRIMARY节点始终是属于大多数成员的节点。

如果数据中心 1 丢失,则将从数据中心 2 或数据中心 3 中选出新的初选节点。

您可以通过在数据中心 2 和数据中心 3 的节点上将成员设置为

{priority: 0, votes: 0}
来更改它,但是这样您将失去大部分高可用性。

© www.soinside.com 2019 - 2024. All rights reserved.