mongo优先级0成员未被使用

时间:2015-06-24 17:02:26

标签: mongodb

民间,   我们已经看到MongoDB v2.6.9的一个非常奇怪的问题,当priority=0的从属没有被用于读取请求时,并且不作为发现的一部分返回。将优先级更改为非零值可解决问题并使这些成员discoverable成为可能。

使优先级为非零值不是所需的行为,因为此设置将允许成员成为主要成员。这些成员位于不同的AWS区域,我们希望避免出现裂脑情况。

当前配置:(注意我们更喜欢西部地区始终是主要的)

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"
            }
        }
    ]
}

使用1.4.x NodeJS驱动程序,所有读取都转到{west}节点,忽略{east}实例。

2 个答案:

答案 0 :(得分:1)

虽然很奇怪,但我不确定它是否与mongo版本有关。 然而,看着你的配置我不认为东方成员会成为主要成员。 它的优先级低于其他成员,因此只有一个西方成员可以成为主要成员。

http://docs.mongodb.org/manual/core/replica-set-elections/

每个副本集成员都有一个优先级,可帮助确定其成为主要成员的资格。在选举中,副本集会选择具有最高优先级值的合格成员作为主要。默认情况下,所有成员的优先级均为1,并且成为主要成员的机会相等。在默认情况下,所有成员也可以触发选举。

答案 1 :(得分:0)

我们在1.4.38 NodeJS MongoDB驱动程序中发现了一个错误,并且要求它解决问题。它忽略了任何被动的mongodb成员。 https://github.com/mongodb/node-mongodb-native/commits/V1.4.38