Статус набора реплик MonogoDB не меняется с запуска на дополнительный

Я установил набор реплик MongoDB с 3 узлами (на VM работает CentOS). Один узел стал основным, два других застряли в автозагрузке. Когда эти 2 узла изменят свое состояние с запуска на вторичное.

aryabhata:PRIMARY> rs.status()
{
    "set" : "aryabhata",
    "date" : ISODate("2016-04-30T08:10:45.173Z"),
    "myState" : 1,
    "members" : [
            {
                    "_id" : 0,
                    "name" : "localhost.localdomain:27017",
                    "health" : 1,
                    "state" : 1,
                    "stateStr" : "PRIMARY",
                    "uptime" : 69091,
                    "optime" : Timestamp(1461935462, 1),
                    "optimeDate" : ISODate("2016-04-29T13:11:02Z"),
                    "electionTime" : Timestamp(1461934754, 1),
                    "electionDate" : ISODate("2016-04-29T12:59:14Z"),
                    "configVersion" : 459192,
                    "self" : true
            },
            {
                    "_id" : 1,
                    "name" : "repset1.com:27017",
                    "health" : 1,
                    "state" : 0,
                    "stateStr" : "STARTUP",
                    "uptime" : 92,
                    "optime" : Timestamp(0, 0),
                    "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
                    "lastHeartbeat" : ISODate("2016-04-30T08:10:44.485Z"),
                    "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                    "pingMs" : 0,
                    "configVersion" : -2
            },
            {
                    "_id" : 2,
                    "name" : "repset2.com:27017",
                    "health" : 1,
                    "state" : 0,
                    "stateStr" : "STARTUP",
                    "uptime" : 68382,
                    "lastHeartbeat" : ISODate("2016-04-30T08:10:43.974Z"),
                    "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                    "pingMs" : 0,
                    "configVersion" : -2
            }
    ],
    "ok" : 1
}

person Sathibabu    schedule 30.04.2016    source источник


Ответы (3)


Из первичного проверьте, можете ли вы подключиться к вторичному

mongo --host repset1.com --port 27017

Когда вышеперечисленное не работает, может быть проблема с брандмауэром или BindIP.

Проверьте bind_ip (должно быть 0.0.0.0, изменение в mongodb.conf - 127.0.0.1):

netstat -plunt | grep :27017 | grep LISTEN

Посмотрите лог-файлы вторичных серверов, почему они застряли. Получили ли они детали конфигурации?

Попробуйте перенастроить, см. перенастройку репликации mongo

person achuth    schedule 30.04.2016
comment
Спасибо за ответ. мои вторичные устройства не получили детали конфигурации - person Sathibabu; 02.05.2016

Для меня проблема заключалась в том, что на первичном сервере была включена авторизация. В этом случае вторичные компоненты всегда оставались в STARTUP.

Для использования авторизации необходимо указать keyFile в конфигурационном файле всех узлов (первичного и вторичного).


Создайте ключевой файл mongodb в Linux:

openssl rand -base64 741 > mongodb.key
chmod 600 mongodb.key
chown mongod:mongod mongodb.key

файл mongod.conf:

replication:
  replSetName: rs0

security:
  authorization: enabled
  keyFile: /home/mongodb.key

Исходный набор реплик MongoDB с простой парольной аутентификацией

person Mathias    schedule 20.07.2018

Моя проблема исправлена ​​с установкой IP-адреса для основного вместо имени хоста

cfg = rs.conf()
cfg.members[0].host = "public-or-private-primary-ip:27017" 
rs.reconfig(cfg)

после этого вторичного изменения состояния на STARTUP2

person Ramin    schedule 14.11.2020