MongoDB 6 использует файл mongod.conf для настройки кластера с репликами.

Вопрос или проблема

У меня есть 3 ПК с almalinux9.5 и mongodb v6. У трех ПК следующие IP-адреса: 10.17.60.102, 10.17.60.103, 10.17.60.104.

На всех 3 ПК я отредактировал файл mongod.conf следующим образом:

# mongod.conf, Percona Server for MongoDB
# для документации ко всем параметрам, см.:
#   http://docs.mongodb.org/manual/reference/configuration-options/

storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongo/mongod.log
processManagement:
  fork: true
  pidFilePath: /var/run/mongod.pid
net:
  port: 27017
  bindIp: 0.0.0.0
replication:
  replSetName: "rs0"
security:
  authorization: enabled  
  keyFile: /etc/mongodb/keyfile

Отдельные узлы, кажется, работают нормально, я ищу способ настроить реплицированный набор внутри файла mongod.conf. Это возможно? как мне создать кластер с 3 узлами и реплицированным набором? Я попытался добавить эти строки в файл mongod.conf:

net.replicaSet.nodes = [
  "10.17.60.102:27017",
  "10.17.60.103:27017",
  "10.17.60.104:27017"
]

но это неправильный синтаксис, и он приводит к сбою mongodb.
Спасибо за ваше время и ответы.

Ответ или решение

Для настройки кластера с репликой на MongoDB v6, работающей на трех узлах с AlmaLinux 9.5, следует внимательно подойти к редактированию конфигурационного файла mongod.conf, а также к процессу инициализации и управления реплицированием.

Теория

MongoDB репликация обеспечивает высокую доступность и отказоустойчивость данных посредством дублирования. Реплика-сет состоит из нескольких серверов, что позволяет одному из них действовать как главный (primary), а остальные – как вторичные (secondary). В случае неработоспособности главного узла, один из вторичных может взять его роль.

Пример

У вас уже имеется базовая конфигурация в файле mongod.conf, которую распределенные по узлам экземпляры MongoDB используют для хранения данных и ведения журналов. Однако вы неверно попытались добавить информацию о членах реплика-сета. Это не делается в mongod.conf. Этап инициализации реплика-сета требует другого подхода.

Настройка mongod.conf:

Конфигурационный файл каждого узла уже корректно включает:

storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongo/mongod.log
processManagement:
  fork: true
  pidFilePath: /var/run/mongod.pid
net:
  port: 27017
  bindIp: 0.0.0.0
replication:
  replSetName: "rs0"
security:
  authorization: enabled  
  keyFile: /etc/mongodb/keyfile

Инициализация реплика-сета:

  1. Убедитесь, что служба MongoDB работает на всех узлах.
  2. Запустите mongo shell на одном из узлов (например, на 10.17.60.102):
    mongo --host 10.17.60.102
  3. Выполните команду для инициализации реплика-сета:
    rs.initiate({
     _id: "rs0",
     members: [
       { _id: 0, host: "10.17.60.102:27017" },
       { _id: 1, host: "10.17.60.103:27017" },
       { _id: 2, host: "10.17.60.104:27017" }
     ]
    })
  4. Проверьте состояние реплика-сета:
    rs.status()

Применение

После выполнения всех вышеуказанных шагов, ваш кластер MongoDB будет корректно настроен как реплика-сет из трех узлов. Каждый узел имеет возможность занять роль главного, если текущий главный узел выйдет из строя.

Детальное внимание к каждому шагу настройки и инициализации кластера является ключом к надежной системе. Таким образом, вы сможете эффективно управлять и поддерживать высокодоступное решение на базе MongoDB.

Оцените материал
Добавить комментарий

Капча загружается...