Назад | Перейти на главную страницу

Распределенный cron

Я обслуживаю много серверов и имею следующие требования

  1. Запустить процесс unix в заданное время
  2. Запустите процесс unix во время загрузки и продолжайте его работу (на случай, если он умрет)
  3. Отключить запущенный процесс

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

Есть ли механизм распределенного cron? Было бы хорошо, если бы конфигурация "cron" хранилась в базе данных, чтобы я мог получить к ней доступ через веб-интерфейс.

Использовать система управления конфигурацией, лайк Повар или Кукольный. Попросите сервер управления конфигурацией передать соответствующие конфигурации cron / Upstart / monit / любые конфигурации на различные узлы в зависимости от их ролей. Да, установка этого, вероятно, требует больше вложений, чем разбрасывание файлов crontab повсюду вручную, но в итоге вы получите централизованную точку контроля над всеми серверами, которыми вы пытаетесь управлять.

  1. Использовать cron

  2. Использовать inittab

  3. Если под управлением inittab -- редактировать inittab,
    Если управляется запуском системы (/etc/init.d & /etc/rc[0-6].d) - используйте chkconfig или service

Из man inittab

   respawn
          The  process  will  be  restarted  whenever  it terminates (e.g.
          getty).

Чтобы поддерживать их в многосистемной реплицированной системе, я могу думать только о чем-то вроде rsync. Я не знаю, можно ли было бы использовать что-то вроде NIS / YP. Возможно, вы ищете решение более корпоративного уровня.

Для обновлений cron вы можете разместить копию своих файлов cron на веб-сервере, и ваши машины будут обновлять свои файлы cron на основе содержимого файлов, хранящихся на веб-сервере. Это позволит вам делать обновления cron в одном месте. Обратной стороной является то, что все ваши компьютеры будут безопасны только на уровне веб-сервера, поскольку любой, кто может манипулировать содержимым веб-сервера, может запускать произвольные команды в любой из ваших систем.

Вы можете использовать puppet (программное обеспечение для централизованного управления конфигурацией) для управления заданиями cron. Здесь есть документация http://docs.puppetlabs.com/references/stable/type.html (ищите cron по этой ссылке).

Похоже, ucron достаточно хорошо соответствует вашим требованиям. Сам не пробовал. http://siag.nu/ucron/ Может что нибудь?