Отредактировано 2 Несколько недель назад от ExtremeHow Редакционная команда
КонфигурацияРеплика сетЛинуксMongoDBБаза данныхНастройкаРазработкаВысокая доступностьКластерСинхронизация
Перевод обновлен 2 Несколько недель назад
Создание реплицированного набора MongoDB — важная часть обеспечения высокой доступности и избыточности данных в ваших приложениях, зависящих от MongoDB. В этом руководстве мы подробно объясним, как настроить реплицированный набор MongoDB на системе на базе Linux. Это объяснение охватывает несколько тем, включая понимание того, что такое реплицированный набор, предварительные требования, установку, настройку, тестирование и многое другое. Это подробное руководство охватывает все, что вам нужно знать для настройки реплицированного набора с нуля на простом английском языке.
Прежде чем углубляться в техническую настройку, важно понять, что такое реплицированный набор MongoDB. Реплицированный набор в MongoDB — это группа узлов базы данных MongoDB, которые поддерживают один и тот же набор данных, обеспечивая таким образом избыточность данных и высокую доступность. Типичный реплицированный набор состоит как минимум из трех экземпляров или узлов MongoDB:
Реплицированные наборы позволяют обеспечить беспрепятственный переход на резервный узел. Это означает, что если основной узел выходит из строя, один из вторичных узлов может быть назначен основным, что позволяет вашему приложению продолжать работу с минимальными перебоями.
Чтобы настроить реплицированный набор MongoDB, вам необходимы следующие предварительные требования:
Первым шагом является установка MongoDB на все ваши машины на Linux. В зависимости от дистрибутива Linux, команды установки могут различаться.
Для Ubuntu (с использованием apt):
sudo apt update
sudo apt install -y mongodb
Для CentOS (с использованием yum):
sudo yum install -y mongodb-org
Убедитесь, что MongoDB запущен на каждой машине:
sudo systemctl start mongod
sudo systemctl enable mongod
После установки и запуска MongoDB на каждом узле, вы должны настроить каждый экземпляр, чтобы он был частью реплицированного набора. Отредактируйте файл конфигурации MongoDB, который обычно находится в /etc/mongod.conf
, с помощью вашего любимого текстового редактора.
Найдите строку, начинающуюся с replication:
, и задайте replSetName
. Убедитесь, что имя одинаково на всех узлах в вашем реплицированном наборе. Добавьте или измените раздел следующим образом:
replication:
replSetName: "myReplicaSet"
Сохраните и закройте файл. Затем перезапустите службу MongoDB на всех узлах, чтобы применить изменения:
sudo systemctl restart mongod
Теперь, когда экземпляры MongoDB сконфигурированы, перейдите на сервер, который вы хотите назначить основным.
Запустите оболочку MongoDB:
mongo
В оболочке MongoDB используйте следующую команду для инициализации реплицированного набора:
rs.initiate()
Эта команда инициирует реплицированный набор на вашем основном сервере.
После инициализации реплицированного набора вы можете добавить другие узлы (вторичные узлы и, опционально, арбитр) в реплицированный набор с помощью команды rs.add()
.
Например, чтобы добавить вторичный узел:
rs.add("hostname2:27017")
Замените hostname2:27017
на фактический адрес и порт вторичного узла.
Повторите процесс для дополнительных вторичных узлов, если они есть:
rs.add("hostname3:27017")
Если вы хотите добавить узел-арбитр:
rs.addArb("hostname4:27017")
Проверьте статус реплицированного набора, используя следующую команду:
rs.status()
Эта команда предоставит подробный отчет, показывающий статус каждого узла в реплицированном наборе. Убедитесь, что каждый узел находится в ожидаемом состоянии (основной, вторичный, арбитр).
После настройки реплицированного набора важно протестировать его функциональность, чтобы убедиться, что он ведет себя правильно при сбоях. Вот некоторые тесты, которые вы можете выполнить:
Остановите службу MongoDB на текущем основном узле:
sudo systemctl stop mongod
Проверьте статус реплицированного набора на любом вторичном узле:
mongo
Затем выполните в оболочке MongoDB:
rs.status()
Теперь один из вторичных узлов должен стать новым основным узлом. Перезапустите MongoDB на оригинальном основном узле и убедитесь, что он вновь вступил в реплицированный набор как вторичное количество.
Когда выбран новый основной узел, вставьте в него данные и проверьте, реплицируются ли эти данные на вторичные узлы.
use testDB
db.testCollection.insert({"name": "Тест репликации"})
Затем проверьте наличие данных на одном из вторичных узлов, выполнив следующее:
rs.slaveOk()
db.testCollection.find()
В сценариях, в которых у вас есть арбитр, вы можете проверить его функциональность, намеренно остановив узел и проверив, что арбитр помогает выбрать новый основной узел.
Остановите и перезапустите одну из вторичных служб MongoDB:
rs.status()
Убедитесь, что ваш арбитр присутствует и выполняет свою роль должным образом, когда требуется голосование.
Проблемы часто возникают из-за неправильной сетевой конфигурации; убедитесь, что все узлы могут общаться друг с другом, а все брандмауэры настроены для разрешения связи на порту 27017 (или любом другом порту, который настроен на использование MongoDB).
Если аутентификация включена, убедитесь, что вы создаете соответствующие роли пользователей и учетные данные, позволяющие узлам реплицированного набора аутентифицироваться друг с другом.
Поймите, как работают уровни согласованности чтения и записи в MongoDB, чтобы вы могли настроить их в соответствии с потребностями вашего приложения, особенно в сценариях реплицированного набора.
Настройка реплицированных наборов MongoDB на системах Linux имеет решающее значение для приложений, требующих высокой доступности и надежности. Следуя этому подробному руководству, вы сможете эффективно настроить реплицированные наборы, понимая важность каждого шага. Запуск реплицированного набора обеспечивает репликацию данных на нескольких узлах, что делает вашу систему баз данных более устойчивой к сбоям и хорошо подготовленной для работы в приложениях реального мира.
Помните, всегда следите за состоянием и производительности вашего реплицированного набора MongoDB и настраивайте конфигурацию в соответствии с изменяющимися требованиями приложения. При правильной настройке и обслуживании реплицированные наборы MongoDB могут предоставить надежное решение для баз данных для критически важных приложений.
Если вы найдете что-то неправильное в содержании статьи, вы можете