Как работает dong replicaset в Azure

Я развернул набор реплик Mongo DB, используя этот шаблон mongodb-replica-set-centos.

Монго БД ВМ 1 (основной):

PS Aux | Греп Монго

root      10161  0.7  0.5 797140 40900 ?        SLl  05:18   0:05 mongod --dbpath /var/lib/mongo/ --replSet repset --logpath /var/log/mongodb/mongod.log --fork --config /etc/mongod.conf
sshuser   10347  0.0  0.0 112640   960 pts/0    S+   05:29   0:00 grep --color=auto mongo

База данных Mongo DB: -

 mongo -u mongoadmin -p mongoadmin admin
MongoDB shell version: 3.2.19
connecting to: admin
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2018-03-23T05:18:21.137+0000 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2018-03-23T05:18:21.137+0000 I CONTROL  [initandlisten] 
repset:PRIMARY> rs.status()
{
    "set" : "repset",
    "date" : ISODate("2018-03-23T07:38:45.694Z"),
    "myState" : 1,
    "term" : NumberLong(1),
    "heartbeatIntervalMillis" : NumberLong(2000),
    "members" : [
        {
            "_id" : 0,
            "name" : "52.170.83.3:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 8426,
            "optime" : {
                "ts" : Timestamp(1521782318, 3),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2018-03-23T05:18:38Z"),
            "electionTime" : Timestamp(1521782318, 1),
            "electionDate" : ISODate("2018-03-23T05:18:38Z"),
            "configVersion" : 2,
            "self" : true
        },
        {
            "_id" : 1,
            "name" : "10.0.1.5:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 8407,
            "optime" : {
                "ts" : Timestamp(1521782318, 3),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2018-03-23T05:18:38Z"),
            "lastHeartbeat" : ISODate("2018-03-23T07:38:45.538Z"),
            "lastHeartbeatRecv" : ISODate("2018-03-23T07:38:42.546Z"),
            "pingMs" : NumberLong(1),
            "configVersion" : 2
        }
    ],
    "ok" : 1
}

Монго БД ВМ 2 (вторичная):

PS Aux | Греп Монго

root      10115  0.4  0.5 447908 37892 ?        SLl  05:11   0:17 mongod --dbpath /var/lib/mongo/ --config /etc/mongod.conf --replSet repset --logpath /var/log/mongodb/mongod.log --fork
sshuser   10269  0.0  0.0 112640   960 pts/0    S+   06:21   0:00 grep --color=auto mongo

База данных Mongo DB: -

mongo -u mongoadmin -p mongoadmin admin
MongoDB shell version: 3.2.19
connecting to: admin
2018-03-23T07:38:54.311+0000 E QUERY    [thread1] Error: Authentication failed. :
DB.prototype._authOrThrow@src/mongo/shell/db.js:1441:20
@(auth):6:1
@(auth):1:2

exception: login failed

Монго БД ВМ 3(вторичная):-

PS Aux | Греп Монго

root      10122  0.6  0.5 795472 40420 ?        SLl  05:12   0:26 mongod --dbpath /var/lib/mongo/ --config /etc/mongod.conf --replSet repset --logpath /var/log/mongodb/mongod.log --fork
sshuser   10381  0.0  0.0 112640   960 pts/0    S+   06:21   0:00 grep --color=auto mongo

База данных Mongo DB: -

 mongo -u mongoadmin -p mongoadmin admin
MongoDB shell version: 3.2.19
connecting to: admin
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2018-03-23T05:12:19.613+0000 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2018-03-23T05:12:19.613+0000 I CONTROL  [initandlisten] 
repset:SECONDARY> rs.status()
{
    "set" : "repset",
    "date" : ISODate("2018-03-23T07:39:04.009Z"),
    "myState" : 2,
    "term" : NumberLong(1),
    "heartbeatIntervalMillis" : NumberLong(2000),
    "members" : [
        {
            "_id" : 0,
            "name" : "52.170.83.3:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 8425,
            "optime" : {
                "ts" : Timestamp(1521782318, 3),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2018-03-23T05:18:38Z"),
            "lastHeartbeat" : ISODate("2018-03-23T07:39:02.571Z"),
            "lastHeartbeatRecv" : ISODate("2018-03-23T07:39:03.573Z"),
            "pingMs" : NumberLong(1),
            "electionTime" : Timestamp(1521782318, 1),
            "electionDate" : ISODate("2018-03-23T05:18:38Z"),
            "configVersion" : 2
        },
        {
            "_id" : 1,
            "name" : "10.0.1.5:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 8806,
            "optime" : {
                "ts" : Timestamp(1521782318, 3),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2018-03-23T05:18:38Z"),
            "infoMessage" : "could not find member to sync from",
            "configVersion" : 2,
            "self" : true
        }
    ],
    "ok" : 1
}

Вопросы:-

  1. Почему я не могу войти в Mongo DB VM 2?
  2. Будет ли Mongo DB VM 2 после завершения работы с БД Mongo DB 3 действовать как дополнительный узел?
  3. Если я выключу Mongo DB VM 1, будет ли какой-либо из вторичных узлов выступать в качестве основного узла?

1 ответ

На все три вопроса отвечает один и тот же факт: БД VM2 не является частью набора реплик. Из информации rs.status() ясно, что только два узла зарегистрированы как часть набора реплик, VM1 и VM3.

Последствия таковы:

  1. На БД VM2 она не является частью набора реплик, поэтому у нее нет учетных данных аутентификации, с которыми вы пытаетесь войти
  2. Нет, БД VM2 не будет действовать как вторичный узел; потому что он не является частью набора реплик
  3. В текущей настройке, с только 2 узлами в наборе реплик, если вы отключите один из узлов (VM1 или VM3), тогда другой узел не выберет себя первичным, потому что он не может командовать большинством на выборах.

Взгляните на документы по выборам комплектов реплик, чтобы понять, что такое большинство и почему это важно; и посмотрите на базу данных VM2, чтобы понять, почему она не является частью вашего набора реплик. Вы когда-нибудь добавляли это?

Другие вопросы по тегам