Вопрос или проблема
У меня есть 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
Инициализация реплика-сета:
- Убедитесь, что служба MongoDB работает на всех узлах.
- Запустите mongo shell на одном из узлов (например, на 10.17.60.102):
mongo --host 10.17.60.102
- Выполните команду для инициализации реплика-сета:
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" } ] })
- Проверьте состояние реплика-сета:
rs.status()
Применение
После выполнения всех вышеуказанных шагов, ваш кластер MongoDB будет корректно настроен как реплика-сет из трех узлов. Каждый узел имеет возможность занять роль главного, если текущий главный узел выйдет из строя.
Детальное внимание к каждому шагу настройки и инициализации кластера является ключом к надежной системе. Таким образом, вы сможете эффективно управлять и поддерживать высокодоступное решение на базе MongoDB.