rudenkovk
@rudenkovk
DevOps, sysadmin

Вернуть у mongodb primary на место

Всем привет.

Сразу предупреждаю, что нагуглить решение у меня не получилось. А самому писать, немного «дорого», потому, что JS дается тяжело. :)

У меня на Hetzner живет кластер реплика-сет из N машин mongodb. Периодами у хетцнера вылетают машины, и соответственно арбитры перекидывают primary на другой сервер, и обратно потом не возвращают (или я не знаю как это сделать...).

Мой вопрос: нет у кого в закромах родина шаблона скрипта для mongo, который может… ну скажем по крону проверять кто primary, и если нужно возвращать primary обратно, как сервер станет доступен?
  • Вопрос задан
  • 3581 просмотр
Решения вопроса 1
subvillion
@subvillion
Не надо костылей в виде крона, есть приоритеты нод и их нужно расставить, без приоритетов все ноды равнозначны и арбитр не возвращает желаемому мастеру мастера после возобновления его работы.

На текущем мастере нужно выполнить:
cfg = rs.conf()
cfg.members[0].priority = 2.5
cfg.members[1].priority = 1
cfg.members[2].priority = 1
rs.reconfig(cfg, { force: true } )

Где members[0]… [2] это номер ноды в replicaset, чем больше значение приоритета, тем «главнее» сервер.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
rudenkovk
@rudenkovk Автор вопроса
DevOps, sysadmin
«На текущем мастере нужно выполнить:» — я умею читать документацию.

Текущий мастер упал, мастер переехал. Я утром пришел, нашел текущий мастер, выполнил на нем процедуру и снова спать до нового падения. Именно это я хочу автоматизировать.
Ответ написан
rudenkovk
@rudenkovk Автор вопроса
DevOps, sysadmin
Это ясно, детали. Я не о том.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы