Невозможно создать набор реплик в mongoDB: "ok": 0 - PullRequest
0 голосов
/ 11 февраля 2020

Я использую Oracle Virtualbox для размещения 3 виртуальных машин, работающих под управлением CentOS 7.

Настройка сети Vbox:

primary-db Adapter1: режим NAT, нет правил пересылки в настройках сети & Adapter2: режим моста, случайный режим = Разрешить все

primary-db1 Adapter1: режим NAT, нет правил пересылки в настройках сети & Adapter2: режим моста, случайный режим = Разрешить все

вторичный-db2 Адаптер 1: режим NAT, без правил пересылки в сетевых настройках & Адаптер 2: режим моста, случайный режим = Разрешить все

  1. Я добавил порт 27017 в брандмауэр. (Я также добавил 27018 для тестирования)
  2. Создан /data/db.
  3. Я добавил все IP-адреса хоста в файл каждого сервера / etc / hosts и прокомментировал 127.0. 0.1 строка
  4. Я настроил все файлы mon go .conf следующим образом:
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true

processManagement:
  fork: true  
  pidFilePath: /var/run/mongodb/mongod.pid 
  timeZoneInfo: /usr/share/zoneinfo

net:
  port: 27017
  bindIp: 192.168.1--.---,127.0.0.1

replication:
  replSetName: "replica01"

Проблема:

Теперь, когда я запускаю

# mongo -host <secondary-db server/192.168.---.---> -port 27017

На основном сервере, я могу войти в оболочку mon go вторичных серверов

Но когда я пытаюсь использовать

rs.add('secondary-db1')

или

rs.add('secondary-db1:27017') 

Я продолжаю получать это:

replica01:PRIMARY> rs.add('secondary-db')
{
        "operationTime" : Timestamp(1581381570, 1),
        "ok" : 0,
        "errmsg" : "Either all host names in a replica set configuration must be localhost references, or none must be; found 1 out of 2",
        "code" : 103,
        "codeName" : "NewReplicaSetConfigurationIncompatible",
        "$clusterTime" : {
                "clusterTime" : Timestamp(1581381570, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        }
}
replica01:PRIMARY>

Я даже пытался прокомментировать строку bindIP для проверки, но она дает мне тот же результат. я что-то посмотрел? Я использовал этот учебник в качестве моей справки.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

, если ваш вопрос заключается в настройке узлов - безусловно, да - каждый из них должен быть отдельным и отличным портом, и они должны находиться в отдельных папках dir ....

, если ваш вопрос о брандмауэре / внешнем интерфейсе: я больше работаю на стороне данных с запросами, а не на внешнем интерфейсе ... но это набор реплик, и если первичный выходит из строя, ваше приложение должно работать с любым из вторичных (каких) (в зависимости от того, что избирается Первоначальный случайный выбор)….

Пн go имеет бесплатный университет, и курс M103 специально посвящен раскрутке наборов реплик - вы можете смотреть видео довольно быстро, чтобы набрать скорость ....

0 голосов
/ 11 февраля 2020

только для проверки работоспособности:

у каждого узла есть отдельный / отличающийся порт, у каждого узла есть отдельная / отличающаяся папка dir

это не ясно из вашего поста. ... через брандмауэр вы указываете только 1 порт, но каждому узлу нужен свой собственный порт, папка - они все разделены и параллельны ....

войти непосредственно на 1 узел и сначала выполнить: rs. initiate ()

, затем выполните rs.add для двух других узлов

, это сгруппирует их в набор реплик

...