Вопрос: Как сделать cronjobs доступным?


Что было бы хорошим решением для создания пары отказоустойчивости с несколькими работами cronjobs, чтобы избежать запуска процессов в два раза?

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

Я мог бы написать сценарий для этого, но кто-то должен был исправить это уже, или это такой необычный запрос?


6
2018-01-27 15:34


Источник


Чтобы добавить к вопросу, что делать, если мастер не работает во время выполнения задания? Есть ли способ, чтобы раб заметил его и повторил? - skinp


Ответы:


Если у вас есть какое-то кластерное решение для обеспечения высокой доступности, это довольно просто сделать.

Мы установили все задания cron для обоих (или всех) узлов в кластере. Каждое задание начинается с выполнения небольшого скрипта, который работает, если это главный узел в кластере или нет (путем проверки плавающего IP-адреса кластера). Если это не главный узел, скрипт check_for_master завершается с ошибкой, которая приводит к сбою всего задания cron. Если этот узел является ведущим, скрипт check_for_master выполняет задание как обычно.

Содержимое скрипта check_for_master действительно зависит от используемого вами программного обеспечения кластера и операционной системы, в которой вы работаете.

Например, вот пример записи crontab:

00 04 * * * /usr/local/bin/check_for_master /usr/local/bin/program-you-want-to-run >/tmp/logfile.out 2>&1

5
2018-01-27 15:53





Вы можете использовать 'rcron'для этой конкретной проблемы. Rcron предлагает вам файл состояния, который просто говорит «активный» или «пассивный», и если он активен, ваш cron будет работать на определенной машине. Если файл состояния установлен в пассивный, он не будет запущен. Просто как тот.

Ваши задания cron, которые раньше выглядели:

* * * * *    root    echo "foobar"

необходимо будет изменить:

* * * * *    root    rcron echo "foobar"

вот и все.


2
2018-03-07 21:04





Я думаю, что вы ищете скорее некоторую систему планирования заданий (как используется в вычислительных кластерах). Разумеется, вам не понадобится больше всего этого, но настройка cron для выполнения необходимых действий - это, вероятно, больше работы, чем оценка такого инструмента.


-1
2018-01-27 15:42



К сожалению, у меня нет роскоши менять систему, но я буду помнить об этом, когда для этой цели настроен новый кластер. - Bas Grolleman