У меня установлена реплика 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)
}
}
}