Выращивание cron: какой следующий планировщик? [закрыто]

30

Мы уже давно используем cron, насколько я помню, для удовлетворения всех наших потребностей в планировании работы. Все, от клонов / снимков хранилища до отчетов по базам данных, ежедневных системных отчетов и контрольных проверок, запланировано на нескольких сотнях серверов через cron.

Недостатки очевидны: сложность в управлении заданиями, отсутствие простого способа создания зависимостей (особенно на разных серверах) и, конечно, неизбежно, что кто-то «временно» пропускает задание, но позже забывает удалить комментарий.

Мы попробовали коммерческое предложение, но, в конце концов, оно оказалось слишком дорогим по сравнению с cron.

Я вижу другие варианты, такие как SLURM, Oracle Grid Engine, Torque / Maui, Quartz, DIET, Condor, которые, как представляется, ориентированы на более крупные, более однородные кластерные среды с заданиями, которые будут выполняться на любом количестве похожих узлов: грид-вычисления и тому подобное. Наша среда довольно смешанная (различные Linux, AIX и FreeBSD), и нам нужно создавать зависимости между различными типами систем (например, заданию на блоке Linux может потребоваться определить, должно ли выполняться задание на блоке AIX).

У кого-нибудь есть опыт перехода от cron к более централизованно управляемому предложению? Любые советы по выбору программного обеспечения или лучше ли пойти с открытым исходным кодом или коммерческим?

Cakemox
источник

Ответы:

11

Condor, OGE и Torque могут помочь вам, но только Condor имеет встроенное управление зависимостями с помощью инструмента DAGMan . DAGMan позволяет вам настроить направленный, ациклический график, который описывает ваш рабочий процесс, а менеджер позаботится о том, чтобы выполнять задания в вашем рабочем процессе и оценивать результаты « годен / негоден» на каждом этапе процесса. Кондор относительно независим от платформы, что означает, что DAGMan тоже, и вы, безусловно, можете запустить один дочерний шаг в AIX, когда родительский запущен в Linux или Windows. DAGMan не заботится о том, где выполняются задания, просто о том, что коды выхода проходят или не проходят

Любые советы по выбору программного обеспечения или лучше ли пойти с открытым исходным кодом или коммерческим?

С некоторыми оговорками, я думаю, что бесплатные сообщества в этом пространстве стоит посмотреть.

НГЕ сейчас в странном пространстве. Он больше не может запускать вариант GE, созданный Oracle, и Oracle больше не предоставляет код, который он записывает обратно в GE SCC, но существует несколько форков кода, которые существуют в качестве бесплатных проектов с открытым исходным кодом. В частности, Univa взяла на себя ответственность , нанимая бывших разработчиков Sun GE для продолжения работы над свободно доступным вариантом GE. У Grid Engine есть две вещи: проста в настройке, он может обрабатывать краткосрочные (<2 минуты) задания, не тратя много времени на планирование работ, что замедляет пропускную способность. Это большой недостаток в том, что не очень хорошая поддержка Windows. Некоторые из нас приложили некоторые усилия, чтобы перенести его на Cygwin много лет назад, но это точно не так хорошо, как в native.

Теперь Кондор - мой любимый из трех упомянутых вами технологий. Вокруг Кондора существует сильное сообщество, и программное обеспечение очень развито (> 20 лет). Встроенная поддержка ОС Windows и POSIX означает, что она отлично работает везде. Вышеупомянутый DAGMan - это лишь одна из многих замечательных вещей, которые поставляются с Condor. Это может быть сложное в настройке прикосновение, но как только оно будет запущено и запущено, оно станет надежным. Он обладает невероятно гибким языком для выполнения работы <-> машинного соответствия и построения правил использования для ваших ресурсов. Он также поддерживает динамическое выделение ресурсов на компьютерах, позволяя заданиям выбирать, сколько ресурсов компьютеров им нужно, а затем повторно объявлять разницу как доступную. Он поддерживает глобальные счетчики ресурсов, поэтому вы можете ограничиться такими вещами, как лицензии на программное обеспечение. И, конечно же, у него есть DAGMan, который является невероятно мощным инструментом для управления рабочим процессом. Недостатком Condor является то, что планирование непродолжительных работ может быть обременительным. В идеале вы хотите, чтобы задания выполнялись дольше 2 минут, в противном случае планирование начинает занимать большую часть времени работы в системе.

Крутящий момент немного больше ниши. Я знаю об этом меньше, я боюсь. Это больше похоже на Grid Engine, чем на Condor. @Warren упоминает о платных дополнениях, которые могут расширить возможности базового бесплатного Torque.

Если вы хотите опробовать эти три технологии и посмотреть, как они работают с вашими конкретными рабочими нагрузками, CycleCloud может ускорить создание защищенных виртуализированных пулов, которые предварительно сконфигурированы с помощью Condor, GridEngine или Torque, - поэтому не нужно тратить время на выяснение этих вещей. с вашей стороны. Было бы несколько долларов, чтобы раскрутить небольшие пулы каждой технологии и попробовать их с репрезентативной рабочей нагрузкой. (Отказ от ответственности: я работаю на Cycle Computing, мы делаем CycleCloud)

Ян С.
источник
Спасибо за информацию. Кондор, похоже, действительно ориентирован на большие коллекции машин, способных выполнять определенную работу. У меня проблема, скорее, в том, что у меня есть куча заданий, которые выполняются в очень специфических местах, но мне нужно объединить задания, чтобы они выполнялись в определенном порядке. Это то, что может сделать Кондор, или это будет больно, чтобы заставить это работать таким образом?
Cakemox
1
Кондор может справиться с вашей ситуацией. Вы можете ограничивать задания из групп DAG различными способами, чтобы они предназначались для очень специфических машин или оборудования в ваших пулах.
Ян С.
6

Хронос выглядит очень перспективно.

Chronos - это замена Airbnb для cron. Это распределенный и отказоустойчивый планировщик, работающий поверх Apache Mesos. Вы можете использовать его для организации работы. Он поддерживает пользовательских исполнителей Mesos, а также исполнителя команд по умолчанию. Таким образом, по умолчанию Chronos выполняет sh (на большинстве систем bash) сценарии. Chronos можно использовать для взаимодействия с такими системами, как Hadoop (включая EMR), даже если на подчиненных устройствах Mesos, на которых происходит выполнение, не установлен Hadoop. Включенные сценарии-оболочки позволяют передавать файлы и выполнять их на удаленном компьютере в фоновом режиме и использовать асинхронные обратные вызовы для уведомления Chronos о завершении задания или сбоях.

Я также добился большого личного успеха, используя Дженкинс в качестве замены хрон. Он прекрасно справляется с выполнением заданий на удаленных серверах. Вот рецензия на нее: http://www.22ideastreet.com/blog/2014/05/02/replace-local-cron-with-jenkins/

Грег Шеремета
источник
4

В течение последних 4,5 лет я работал с платформой HP Automation Server (nee Opsware) и остальной частью пакета Business Technology Optimization (Network Automation, Operations Orchestration и т. Д.).

Для достаточно большой среды управление заданиями через SA является жизнеспособным (и желательным) инструментом. В сочетании с ОО, заданиями можно управлять с помощью управления изменениями, создания билетов и т. Д.

Вот не такая веселая часть: это дорого (очень дорого). Вы можете проверить некоторые предложения в аналогичном вопросе, который я задал некоторое время назад: инструменты управления и аудита FLOSS Server .

Я бы также сказал, что Torque / Maui / Moab (от Adaptive Computing ) очень крутые: не уверены в ценах, но они также очень гибкие инструменты.


Отказ от ответственности - я работаю на партнера HP BTO и Adaptive

кроличий садок
источник
2

ВНИМАНИЕ! Совсем другое решение проблемы!

хрон является старым и неуклюжим в определенных условиях.

Если вы действительно ищете новые способы составления расписаний, я бы попробовал что-то событие, основанное на промежуточном программном обеспечении для обмена сообщениями. Подумайте RabbitMQ с клиентами на каждом сервере.

Зависимости между хостами можно решить с помощью «очередей уведомлений».

«Реальные» события, основанные на времени, немного сложнее, вот для чего и нужен cron (и он хорош, по крайней мере, в отношении небольших сред). Сложно заполучить идею - предотвратить взлеты. Как в: каждую ночь в 01:00 сделать снимок. Вы можете увидеть некоторые скачки нагрузки или множество неудачных входов в систему в этот самый момент через всю вашу инфраструктуру. Если у вас есть подход, основанный на очереди, вы получите, по крайней мере, некоторое отклонение бесплатно (хотя это не гарантировано - если в какой-то логике это не реализовано).

Суть в том, что без работы в реальном времени нельзя полагаться на такие вещи, как: да, мои резервные копии начнутся в 02:00, а если они все еще будут работать в 04:00, что-то не так. Что легче сделать, так это убедиться, что не выполняется одновременно 2 задания, которые мешают работе. Просто создайте блокирующий агент, который будет использовать только одну работу за раз.

Управляющей частью мог бы быть какой-то приятный веб-интерфейс, где задания можно было бы отправлять либо по требованию, либо - теперь он возвращается к «cron» или вашей любимой реализации - у java-кварцевого планировщика есть детализация по секундам AFAIK - для основанная на времени часть просто использует старый добрый cron :)

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

serverhorror
источник
Это интересно для распределения больших рабочих мест, но моя работа намного более временна. У меня есть некоторые работы, которые могут быть поставлены в очередь, как это, хотя, так что я буду помнить это для тех.
Cakemox
1

Я использовал Espresso (Cybermation) из CA. Не уверен, что они сейчас это называют. Я также использовал UC4. Они оба работают, стоят больших денег (насколько я понимаю) и могут быть мишкой в ​​обслуживании, но они делают то, что сказано на банке. / Edit - пропустил, что вы говорите, что коммерческие приложения слишком дороги. Я могу определенно согласиться, но для некоторых компаний это того стоит, особенно когда это для бизнес-приложений, которые делают деньги.

mfinni
источник
1

Я работал с планировщиком заданий с открытым исходным кодом в качестве опции для замены 2000+ строк центрального crontab в производственной среде. С cron все стало так сложно, что мы не могли определить, какие были окна простоя или как справляться с межсерверными зависимостями. Этот продукт помог, но был немного сложен в настройке.

ewwhite
источник