Набор реплик MongoDB не выбирает новый основной после того, как основной остановлен вручную - PullRequest
0 голосов
/ 27 октября 2018

У меня установлена ​​реплика mongoDB 4.0.1 с настройкой 4 узлов со следующей конфигурацией

  var cfg = {
    "_id": "rs0",
    "version": 1,
    "members": [
        {
            "_id": 0,
            "host": "mongo-1:27017",
            "priority": 3
        },
        {
            "_id": 1,
            "host": "mongo-2:27017",
            "priority": 2
        },
        {
            "_id": 2,
            "host": "mongo-3:27017",
            "priority": 1
        },
        {
            "_id": 3,
            "host": "mongo-4:27017",
            "arbiterOnly": true
        }
    ]
};
rs.initiate(cfg, { force: true });
rs.reconfig(cfg, { force: true });
rs.status();

Это все на локальном хосте, и подключение в порядке, и это нормально. Я в основном проверяю, что при отключении основного монго-1 (через 10-12 секунд) оставшиеся узлы выбирают новый первичный идеально-монго-2, так как его приоритет выше.

Но если я уберу контейнер mongo-1, остальные 3 узла будут продолжать пытаться подключиться к mongo-1 бесконечно. Я даже ждал более 10 минут, но все журналы показывают попытки подключения host-unreachable бла-бла.

Если у кого-то есть идеи по поводу того, что мне не хватает, или конфигурации, которую я не настраиваю, пожалуйста, не стесняйтесь комментировать или предлагать решение этой проблемы. Спасибо!

EDIT Вот мой вывод rs.status(), он немного загроможден, но его легко прочитать в форматере JSON:)

rs0: PRIMARY> rs.status () { "set": "rs0", «date»: ISODate («2018-10-27T00: 47: 23.582Z»), "myState": 1, «термин»: NumberLong (4), "syncingTo": "", "syncSourceHost": "", "syncSourceId": -1, "heartbeatIntervalMillis": NumberLong (2000), "optimes": { "lastCommittedOpTime": { "ts": метка времени (1540601235, 1), "t": NumberLong (4) }, "readConcernMajorityOpTime": { "ts": метка времени (1540601235, 1), "t": NumberLong (4) }, "applyOpTime": { "ts": метка времени (1540601235, 1), "t": NumberLong (4) }, "durableOpTime": { "ts": метка времени (1540601235, 1), "t": NumberLong (4) } }, "lastStableCheckpointTimestamp": отметка времени (1540601162, 1), "члены": [ { "_id": 0, "имя": "монго-1: 27017", «здоровье»: 1, «состояние»: 1, "stateStr": "ПЕРВИЧНЫЙ", «uptime»: 227, "optime": { "ts": метка времени (1540601235, 1), "t": NumberLong (4) }, "optimeDate": ISODate ("2018-10-27T00: 47: 15Z"), "syncingTo": "", "syncSourceHost": "", "syncSourceId": -1, "infoMessage": "не удалось найти участника для синхронизации", «lectionTime »: отметка времени (1540601173, 1), "lectionDate ": ISODate (" 2018-10-27T00: 46: 13Z "), "configVersion": 1, "Я": правда, "lastHeartbeatMessage": "" }, { "_id": 1, "имя": "монго-2: 27017", «здоровье»: 1, «состояние»: 2, "stateStr": "ВТОРИЧНЫЙ", «uptime»: 31, "optime": { "ts": метка времени (1540601235, 1), "t": NumberLong (4) }, "optimeDurable": { "ts": метка времени (1540601235, 1), "t": NumberLong (4) }, "optimeDate": ISODate ("2018-10-27T00: 47: 15Z"), "optimeDurableDate": ISODate ("2018-10-27T00: 47: 15Z"), "lastHeartbeat": ISODate ("2018-10-27T00: 47: 22.085Z"), "lastHeartbeatRecv": ISODate ("2018-10-27T00: 47: 22.295Z"), "pingMs": NumberLong (0), "lastHeartbeatMessage": "", "syncingTo": "mongo-1: 27017", "syncSourceHost": "mongo-1: 27017", "syncSourceId": 0, "infoMessage": "", "configVersion": 1 }, { "_id": 2, "имя": "монго-3: 27017", «здоровье»: 1, «состояние»: 2, "stateStr": "ВТОРИЧНЫЙ", «uptime»: 225, "optime": { "ts": метка времени (1540601235, 1), "t": NumberLong (4) }, "optimeDurable": { "ts": метка времени (1540601235, 1), "t": NumberLong (4) },"optimeDate": ISODate ("2018-10-27T00: 47: 15Z"), "optimeDurableDate": ISODate ("2018-10-27T00: 47: 15Z"), "lastHeartbeat": ISODate ("2018-10-27T00: 47: 21.677Z"), "lastHeartbeatRecv": ISODate ("2018-10-27T00: 47: 22.491Z"), "pingMs": NumberLong (0), "lastHeartbeatMessage": "", "syncingTo": "mongo-1: 27017", "syncSourceHost": "mongo-1: 27017", "syncSourceId": 0, "infoMessage": "", "configVersion": 1 }, { "_id": 3, "имя": "монго-4: 27017", «здоровье»: 1, «состояние»: 7, "stateStr": "ARBITER", «uptime»: 225, "lastHeartbeat": ISODate ("2018-10-27T00: 47: 21.657Z"), "lastHeartbeatRecv": ISODate ("2018-10-27T00: 47: 21.804Z"), "pingMs": NumberLong (0), "lastHeartbeatMessage": "", "syncingTo": "", "syncSourceHost": "", "syncSourceId": -1, "infoMessage": "", "configVersion": 1 } ], «хорошо»: 1, «operationTime»: метка времени (1540601235, 1), "$ clusterTime": { «clusterTime»: метка времени (1540601235, 1), "подпись": { "hash": BinData (0, "AAAAAAAAAAAAAAAAAAAAAAAAAAA ="), "keyId": NumberLong (0) } } }

...