Mongodb 未使用mongo优先级为0的成员
各位, 我们在MongoDB v2.6.9中看到了一个非常奇怪的问题,即优先级为Mongodb 未使用mongo优先级为0的成员,mongodb,Mongodb,各位, 我们在MongoDB v2.6.9中看到了一个非常奇怪的问题,即优先级为0的从属服务器不用于读取请求,也不作为发现的一部分返回。当将优先级更改为非零值时,可以解决问题并使这些成员可发现 将优先级设置为非零值不是所需的行为,因为此设置将允许成员成为主成员。这些成员位于单独的AWS区域,我们希望避免出现大脑分裂的情况 当前配置:(注意,我们希望西部地区始终是主要的) 使用1.4.x NodeJS驱动程序,所有读取都会转到{west}节点,而忽略{east}实例 虽然很奇怪,但我不确定这是否与
0
的从属服务器不用于读取请求,也不作为发现的一部分返回。当将优先级更改为非零值时,可以解决问题并使这些成员可发现
将优先级设置为非零值不是所需的行为,因为此设置将允许成员成为主成员。这些成员位于单独的AWS区域,我们希望避免出现大脑分裂的情况
当前配置:(注意,我们希望西部地区始终是主要的)
使用1.4.x NodeJS驱动程序,所有读取都会转到{west}节点,而忽略{east}实例 虽然很奇怪,但我不确定这是否与mongo版本有关。 然而,从您的配置来看,我认为east成员永远不会成为主要成员。 它的优先级低于其他成员,因此只有一个西方成员可以成为主要成员
每个副本集成员都有一个优先级,有助于确定其成为主副本集成员的资格。在选择中,副本集选择具有最高优先级值的合格成员作为主要成员。默认情况下,所有成员的优先级为1,并且有同等机会成为主要成员。默认情况下,所有成员也可以触发选举。我们在1.4.38 NodeJS MongoDB驱动程序中发现了一个bug,正在修复该问题。它将忽略任何被动mongodb成员。
理想情况下,隐藏的成员不应该被发现,优先级应该只与选举有关。我认为他们有两个不同的目的。不确定为什么优先级更改会使其不可发现。你检查了成员的隐藏字段了吗?我更新了我的问题。我们在NodeJS MongoDB驱动程序中发现了一个bug
rs0:PRIMARY> rs.config()
{
"_id" : "rs0",
"version" : 24,
"members" : [
{
"_id" : 7,
"host" : "west1:27017",
"priority" : 1000,
"tags" : {
"dc" : "west"
}
},
{
"_id" : 8,
"host" : "west2:27017",
"priority" : 1000,
"tags" : {
"dc" : "west"
}
},
{
"_id" : 9,
"host" : "west3:27017",
"priority" : 1000,
"tags" : {
"dc" : "west"
}
},
{
"_id" : 10,
"host" : "east1:27017",
"votes" : 0,
"priority" : 2,
"tags" : {
"dc" : "east"
}
},
{
"_id" : 11,
"host" : "east2:27017",
"votes" : 0,
"priority" : 2,
"tags" : {
"dc" : "east"
}
}
]
}