Настройка High Availability MongoDB Replica Set

Replica Set – это набор/группа серверов, которые обслуживают один и тот же набор данных
В такой группе содержится один мастер(первичный) и несколько слейв(вторичный) серверов.
Также в Replica Set может использоваться арбитр. Это сервер, на котором нет базы данных, а его назначение – участвовать в голосовании при выборе нового мастера, создавать кворум необходимый для голосования.

Первичный/мастер сервер обслуживает все запросы на запись, а также записывает эти запросы в свой лог-файл(oplog).
Вторичные/слейв сервера реплицируют oplog первичного сервера и применяют операции к своим наборам данных. Репликация является асинхронной.
Если первичный сервер не общается с другими членами реплики в течение времени ,определенного параметром electionTimeoutMillis (по умолчанию 10 секунд), то в результате голосования выбирается новый первичный сервер из состава текущих вторичных серверов.
Replica set не может обслуживать запросы на запись, до тех пор, пока выборы и назначение нового мастера не закончатся успешно.
С настройками по умолчанию среднее время на выбор нового мастера составляет 12 секунд
Это включает обнаружение недоступности мастера(10 секунд по умолчанию) и выбор нового мастера.
При необходимости можно изменить значение параметра electionTimeoutMillis.

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

В схеме один мастер(первичный), один слейв (вторичный) и один арбитр
Master db01.mydomain.com 192.168.100.1
Slave db02.mydomain.com 192.168.100.2
Арбитр advisor.mydomain.com 192.168.100.3

Настройка мастера db01

Имя реплики — rs0

Настройка Mongodb на прослушивание запросов на всех интерфейсах

Конфигурационный файл mongodb на сервере db01

Настройка слейв db02

Настройка арбитра

Запускаем MongoDB и добавляем в автозагрузку на всех серверах

На мастере db01 выполняем

1.Инициируем создание реплики

2.Добавляем Slave-сервер

3.Проверяем конфигурацию Replica Set

4.Проверяем статус Replica Set

5.Добавляем арбитра

6. Проверяем конфигурацию Replica Set

Начиная с версии MongoDB 3.6 арбитр всегда имеет приоритет 0

7. Проверяем статус Replica Set
Выполняем команду на мастере db01

 

Тестируем репликацию
На mongo Master вставляем тестовые данные в тестовую базу

На Mongo Slave(Secondary) проверяем

По умолчанию запросы на чтение не разрешены на Secondary(для избежания проблем с получением клиентами устаревших данных)
Разрешим Secondary-реплике обрабатывать запросы на чтение.
Это разрешение будет действовать до окончания текущей mongo-shell-сессии(т.е. после отключения/выхода с mongo-сеанса значение снова станет дефолтным — запрещающим)

Останавливаем mongodb на мастере db01 и проверяем статус Replica Set на db02-сервере, который автоматически стал мастером(Primary)

В логах db02-сервера

После запуска mongod на db01
Нода db01 становится слейвом(Secondary) проходя через такие состояния

Синхронизируясь/реплицируя данные с текущего мастера db02-сервера
Содержание лога ноды db01 в этот момент

Проверка состояния Replica Set с выполнением команды на слейве – сервере db01

Проверка отставания репликации на Slave(db01)

 

Источник:
https://docs.mongodb.com/manual/replication
https://www.linode.com/docs/databases/mongodb/create-a-mongodb-replica-set
http://www.linux-admins.net/2016/05/deploying-mongodb.html

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.

Яндекс.Метрика