Подтвердить что ты не робот

Добавление членов в реплику на MongoDb

Я пытаюсь создать набор реплик с помощью MongoDb, имена хостов серверов:

имя хоста имя хоста-1 имя хоста-2

У каждого из них есть все соответствующие имена хостов, подробно описанные в файле /etc/hosts (они все запустили Ubuntu 10.04 64-bit)

Когда я делаю rs.initiate на одном node, все, кажется, начинается хорошо. Запуск rs.status(); показывает:

{
    "set" : "vega",
    "date" : ISODate("2012-01-22T19:15:55Z"),
    "myState" : 1,
    "members" : [
        {
            "_id" : 0,
            "name" : "hostname:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "optime" : {
                "t" : 1327254848000,
                "i" : 1
            },
            "optimeDate" : ISODate("2012-01-22T17:54:08Z"),
            "self" : true
        }
    ],
    "ok" : 1
}

Проблема возникает, когда я пытаюсь добавить новый член в набор реплик. Я использую команду rs.add(hostname-1); и я получаю следующую ошибку:

{
    "assertion" : "need most members up to reconfigure, not ok : vega-1:27017",
    "assertionCode" : 13144,
    "errmsg" : "db assertion failure",
    "ok" : 0
}

Я пробовал множество комбинаций использования имени хоста, IP-адреса, как с номером порта, так и без него, и я всегда получаю ту же проблему. Имя хоста разрешается, я пробовал ping hostname-1, и он отлично работает.

Есть ли у кого-нибудь идеи относительно того, что может вызвать эту проблему?

К сожалению, в документации Mongo нет примеров настройки набора реплик в реальном мире, только используя три экземпляра на той же машине, которая явно бесполезна.

Заранее благодарим за помощь!

4b9b3361

Ответ 1

Удалите это в своей конфигурации:

bind_ip = 127.0.0.1

Эта опция в настоящее время несовместима с наборами реплик mongodb.

Ответ 2

Эта ошибка возникает, когда вы добавляете узлы, которые не являются "вверх" (пока). Похоже, что либо "hostname-1" недоступен (не в /etc/hosts, ни DNS), либо он доступен, но не работает mongodb с параметром конфигурации replSet

Ответ 3

{
    "errmsg" : "exception: need most members up to reconfigure, not ok : server2:27017",
    "code" : 13144,
    "ok" : 0
}

Я столкнулся с вышеуказанной ошибкой в ​​Mongo 2.4.9. Моя ошибка здесь в том, что я не указал replSet в конфигурации mongo нового члена реплики. rs.add("server2:27017") работал хорошо после.

Ответ 4

К сожалению, в документации Mongo нет примеров настройки набора реплик в реальном мире, только используя три экземпляра на той же машине, которая явно бесполезна.

Согласен, он довольно беден. Этот пример должен быть полностью удален из документов.

Существует другой способ запустить набор реплик, а именно с помощью команды rs.configure(). Вы также можете указать сразу все три узла, а затем выпустить rs.inititiate().

См. здесь для примера указания всех узлов перед началом.

Подробнее см. здесь для различных команд.

Ответ 6

Вам может потребоваться проверить, что mongod работает на втором node, прежде чем добавить второй node в node1. Если он запускает rs.add(), а затем проверяет rs.status().