MongoDB Replica Set вторичный узел (недоступен / исправен) - PullRequest
0 голосов
/ 30 ноября 2018
  • Элемент списка

В настоящее время у меня запущен набор реплик MongoDB с 1x Первичным, 1x Вторичным и 1x Арбитром, все они размещены в инстансах AWS EC2.Я недавно снял Secondary для обновления оборудования.При перезагрузке у него был другой IP-адрес (как и ожидалось).

После перезагрузки я перезапустил mongod на вторичном сервере и обновил наш DNS, так что mongo2. **************. Com теперь указывает на новый IP-адрес.

Я могу подключиться от первичного к вторичному

mongo1.**************.com:~$ curl -ik mongo2.**************.com:27017
HTTP/1.0 200 OK
Connection: close
Content-Type: text/plain
Content-Length: 84

It looks like you are trying to access MongoDB over HTTP on the native driver port.

То же самое работает с и от вторичного.

Однако, когда я делаю rs.status(), пока подключенк набору реплик, я ошибка в подключении к вторичному.

{
    "set" : "myReplicaSet",
    "date" : ISODate("2018-11-30T14:29:43.308Z"),
    "myState" : 1,
    "term" : NumberLong(-1),
    "heartbeatIntervalMillis" : NumberLong(2000),
    "members" : [ 
        {
            "_id" : 23,
            "name" : "mongo1.**************.com:27017",
            "health" : 1.0,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 13108,
            "optime" : Timestamp(1543588183, 6),
            "optimeDate" : ISODate("2018-11-30T14:29:43.000Z"),
            "electionTime" : Timestamp(1543575397, 1),
            "electionDate" : ISODate("2018-11-30T10:56:37.000Z"),
            "configVersion" : 788876,
            "self" : true
        }, 
        {
            "_id" : 24,
            "name" : "mongoarb.**************.com:27017",
            "health" : 1.0,
            "state" : 7,
            "stateStr" : "ARBITER",
            "uptime" : 12785,
            "lastHeartbeat" : ISODate("2018-11-30T14:29:41.491Z"),
            "lastHeartbeatRecv" : ISODate("2018-11-30T14:29:43.056Z"),
            "pingMs" : NumberLong(0),
            "configVersion" : 788876
        }, 
        {
            "_id" : 25,
            "name" : "mongo2.**************.com:27017",
            "health" : 0.0,
            "state" : 8,
            "stateStr" : "(not reachable/healthy)",
            "uptime" : 0,
            "optime" : Timestamp(0, 0),
            "optimeDate" : ISODate("1970-01-01T00:00:00.000Z"),
            "lastHeartbeat" : ISODate("2018-11-30T14:29:41.754Z"),
            "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00.000Z"),
            "pingMs" : NumberLong(0),
            "lastHeartbeatMessage" : "Our replica set configuration is invalid or does not include us",
            "configVersion" : -1
        }
    ],
    "ok" : 1.0
}

Вот выход rs.conf() при подключении к набору реплик через Robo 3T

{
    "_id" : "myReplicaSet",
    "version" : 788876,
    "members" : [ 
        {
            "_id" : 23,
            "host" : "mongo1.**************.com:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1.0,
            "tags" : {},
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        }, 
        {
            "_id" : 24,
            "host" : "mongoarb.**************.com:27017",
            "arbiterOnly" : true,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1.0,
            "tags" : {},
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        }, 
        {
            "_id" : 25,
            "host" : "mongo2.**************.com:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1.0,
            "tags" : {},
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        }
    ],
    "settings" : {
        "chainingAllowed" : true,
        "heartbeatIntervalMillis" : 2000,
        "heartbeatTimeoutSecs" : 10,
        "electionTimeoutMillis" : 10000,
        "getLastErrorModes" : {},
        "getLastErrorDefaults" : {
            "w" : 1,
            "wtimeout" : 0
        }
    }
}

Я могу установить прямое соединение с вторичным устройством через Robo 3T.

В журналах первичного узла я вижу следующую ошибку:

2018-11-30T15:29:17.519+0000 I REPL [ReplicationExecutor] Error in heartbeat request to mongo2.**************.com:27017; InvalidReplicaSetConfig: Our replica set configuration is invalid or does not include us

Все узлы работают под управлением Mongo версии 3.2.19

Как получить набор реплик для подключения к дополнительному устройству?

...