Вступление
Прежде чем углубляться в детали настройки наборов реплик MongoDB, позвольте мне кратко рассказать об этом:
- Набор реплик — это функция, предоставляемая базой данных Mongodb для обеспечения высокой доступности и автоматического перехода на другой ресурс.
- Это своего рода традиционная конфигурация ведущий-ведомый, но с возможностью автоматического переключения при сбое.
- В основном это группа / кластер экземпляров mongod, которые обмениваются данными друг с другом, реплицируются друг с другом для обеспечения высокой доступности и автоматического переключения при сбое.
- По сути, в наборах реплик существует минимум 2 и максимум 12 экземпляров Mongod.
- В наборе реплик существуют следующие типы серверов. из всех, один сервер всегда является основным.
- Основной: он хранит данные, все операции записи / чтения отправляются на этот сервер с любого клиента.
- Вторичный: сначала он хранит данные, во-вторых, эти серверы синхронизируются с основным, если основной сервер выходит из строя, то эти серверы предназначены для переключения на основной.
- Резервное копирование : хранит резервные данные и, как следует из названия, предназначено только для резервного копирования, хотя оно никогда не становится основным
- Арбитр: он хранит данные без данных, он предназначен только для участия в выборах при сбое.
- Он обеспечивает автоматическое переключение при сбое, что означает, что ему не нужно вмешательство человека, чтобы сделать другой сервер основным, и у него есть внутренний механизм выбора нового основного сервера.
- В наборе реплик, если первичный сервер выходит из строя из-за сетевой ошибки или другие серверы в наборах реплик не могут связаться с первичным сервером или первичный перестает отвечать на запросы, то внутренне на всех серверах запускается механизм выбора для выбора нового первичного сервера, и все это очень автоматически ,
В этой статье я собираюсь показать вам конфигурацию набора из 3 элементов / узлов кластера в 4 простых шага. В этой конфигурации набора реплик мы создадим два сервера данных, в которых один будет основным, другой будет вторичным, а другой — сервером без данных, который будет арбитром. Итак, давайте продолжим и настроим реплику в следующие 4 шага:
Шаг 1: Настройте каждый экземпляр набора реплик
Создайте и настройте 3 новых экземпляра экземпляра сервера mongodb, как я обсуждал в прошлой статье со следующей информацией, но не запускайте эти экземпляры сервера:
- Сервер-1
1
2
3
4
5
|
port = 27017 directory path =< dir path>\ rs1 E.g.directory structure : I:\workspace\mongo\rs1\bin |
- Сервер-2
1
2
3
4
5
|
port = 26017 directory path =< dir path>\ rs2 E.g.directory structure I:\workspace\mongo\rs2\bin |
- Сервер—
1
2
3
4
5
|
port = 25017 directory path =< dir path>\ rs2 E.g.directory structure I:\workspace\mongo\rs3\bin |
Шаг 2: измените файл mongodb.conf, включив в него информацию о наборе реплик
Измените mongod.conf каждого сервера, чтобы включить следующие свойства:
- replSet = уникальное имя для набора реплик, который предоставляется всем членам
- rest = включить интерфейс отдыха для веб-страницы администратора
Вы можете дать любое имя наборам реплик, но убедитесь, что оно одинаково для всех участников. Давай, давай любое имя, какое захочешь. Здесь я использую имя «Деймон»
Например, добавить следующее в файл mongod.conf
1
2
|
replSet=damon rest= true |
Шаг 3: запустите весь сервер
После необходимой настройки, запустите сервер в любом порядке.
1
2
3
|
rs1 >> mongod -f \rs1\mongod.conf rs2 >> mongod -f \rs2\mongod.conf rs3 >> mongod -f \rs3\mongod.conf |
Шаг 4: настроить серверы для включения в набор реплик
Теперь все серверы работают, но они не связаны друг с другом. Другими словами, они не являются частью набора реплик. Итак, для этого нам нужно сделать следующее. Опять же, мы собираемся создать два сервера данных: один основной, другой дополнительный и один сервер-арбитр. Теперь подключитесь к любому серверу, используя оболочку mongo, предоставляемую в двоичных файлах MongoDB.
Вот. позволяет подключиться к серверу rs1 с помощью оболочки mongodb
1
|
rs1 > /rs1/bin/mongo .exe --port 27017 |
После этого вы получите приглашение для оболочки mongo, как показано на следующем рисунке:
Для настройки реплики оболочка mongo предоставляет предопределенный объект rs, который содержит следующие функции для конфигурации:
- initiate () => создает конфигурацию набора реплик на текущем сервере
- status () => дает текущее состояние реплики, к которой относится сервер
- add (serverInfo) => добавляет новый сервер (предоставляется как параметр) в набор реплик.
- addArb (serverInfo) => специализированная функция для добавления арбитра в набор реплик
Сначала нам нужно создать конфигурацию набора реплик на одном из серверов. Перейти и нажать следующую команду в оболочке Монго:
1
|
> rs.initiate() |
После вы увидите следующее в подсказке:
Это создаст необходимые наборы реплик локально для этого сервера, и вы заметите, что подсказка меняется с первоначального ‘>’ на ‘damon: STARTUP2>’, что указывает на <replicaSetName: State of server>
Вы можете ввести rs.status () в командной строке, чтобы проверить количество серверов в наборе реплик:
Как видите, у нас только один добавленный сервер в наборе реплик, это текущий сервер, состояние которого является основным.
Другой способ проверки членов в реплике — использовать следующий URL в адресной строке браузера http: //
Обратите внимание, что это требует, чтобы rest = true был включен в конфигурационном файле (и мы уже сделали это!). Этот может быть предпочтительным способом проверки состояния серверов в наборах реплик.
Теперь у нас есть один сервер, добавленный в реплику, давайте добавим остальные серверы.
Для методов add () и addArb () мы предоставим строковый параметр, который содержит <machine / host-name>: <port-no-of-server>
(Обратите внимание, что если вы хотите указать имя машины, используйте команду hostname в dos или bash shell)
1
|
rs.add(“<machine /host-name >:26017”) |
1
|
rs.addArb(“<machine /host-name >:25017”) |
Давайте проверим, добавлен ли узел / член с помощью команды rs.status () :
или используя браузер на основе:
И здесь мы настроили кластер базы данных MongoDB из 3 узлов. Хотя эта порция информации может быть применена для настройки любой нет. узла в наборе реплик.