Outgrowing Cron: Was ist der nächste Scheduler? [geschlossen]


30

Wir haben cron so lange benutzt, wie ich mich erinnern kann, alle unsere Aufgaben zu erledigen. Von Speicherklonen / Snapshots über Berichte über Datenbanken bis hin zu täglichen Systemberichten und Überwachungsprüfungen wird alles über cron auf mehreren hundert Servern geplant.

Die Nachteile liegen auf der Hand: Es ist schwierig, Jobs zu verwalten, es ist nicht einfach, Abhängigkeiten zu erstellen (insbesondere auf verschiedenen Servern), und natürlich ist es unvermeidlich, dass jemand einen Job "vorübergehend" überspringt, aber später vergisst, den Kommentar zu entfernen.

Wir haben ein kommerzielles Angebot ausprobiert, aber am Ende wurde es als zu teuer erachtet, um Cron zu ersetzen.

Ich sehe andere Optionen, wie SLURM, Oracle Grid Engine, Drehmoment / Maui, Quarz, DIET und Condor, die auf größere, homogenere Clusterumgebungen mit Jobs ausgerichtet zu sein scheinen, die auf einer beliebigen Anzahl ähnlicher Knoten ausgeführt würden: Grid Computing und dergleichen. Unsere Umgebung ist ziemlich gemischt (verschiedene Linuxe, AIX und FreeBSD), und wir müssen Abhängigkeiten zwischen verschiedenen Systemtypen erstellen (z. B. muss für einen Job auf einer Linux-Box möglicherweise festgelegt werden, ob ein Job auf einer AIX-Box ausgeführt werden soll).

Hat jemand Erfahrung mit dem Wechsel von Cron zu einem zentral verwalteten Angebot? Irgendwelche Tipps zur Auswahl der Software oder ob es besser ist, Open Source oder kommerziell zu gehen?

Antworten:


11

Condor, OGE und Torque können Sie alle dahin bringen, aber nur Condor verfügt mit seinem DAGMan-Tool über ein integriertes Abhängigkeitsmanagement . Mit DAGMan können Sie ein gerichtetes, azyklisches Diagramm erstellen , das Ihren Arbeitsablauf beschreibt, und der Manager kümmert sich darum, die Jobs in Ihrem Arbeitsablauf zu durchlaufen und die Bestehen- / Nichtbestehen-Ergebnisse bei jedem Schritt im Arbeitsablauf zu bewerten. Condor ist relativ plattformunabhängig, was bedeutet, dass DAGMan dies auch ist. Unter AIX kann auf jeden Fall ein untergeordneter Schritt ausgeführt werden, wenn der übergeordnete Schritt unter Linux oder Windows ausgeführt wird. DAGMan kümmert sich nicht darum, wo Jobs ausgeführt werden, nur darum, ob Exit-Codes erfolgreich sind oder nicht.

Irgendwelche Tipps zur Auswahl der Software oder ob es besser ist, Open Source oder kommerziell zu gehen?

Mit ein paar Einschränkungen denke ich, dass es sich lohnt, sich die freien Communities in diesem Bereich anzusehen.

OGE ist jetzt in einem seltsamen Raum. Es ist nicht mehr kostenlos, die von Oracle produzierte GE-Variante auszuführen, und Oracle steuert keinen Code mehr bei, den es in den GE-SCC zurückschreibt. Es gibt jedoch mehrere Code-Forkes, die versuchen, als freie Open-Source-Projekte zu agieren. Vor allem Univa hat die Aufgabe übernommen , Ex-Sun-GE-Entwickler einzustellen, die weiterhin an einer frei verfügbaren Open-Source-GE-Variante arbeiten. Die Grid Engine bietet zwei Vorteile: Sie ist einfach einzurichten und kann Aufträge mit kurzer Laufzeit (<2 Minuten) verarbeiten, ohne dass der Zeitaufwand für die Aufträge, die den Durchsatz verlangsamen, erheblich ist. Der große Nachteil ist, dass Windows nicht sehr gut unterstützt wird. Einige von uns haben vor vielen Jahren einige Anstrengungen unternommen, um es für Cygwin zu portieren, aber es ist nicht so gut wie einheimisch, das ist sicher.

Nun ist Condor mein Favorit unter den drei Technologien, die Sie erwähnt haben. Es gibt eine starke Community um Condor und die Software ist sehr ausgereift (> 20 Jahre alt). Die native Unterstützung von Windows und POSIX OS bedeutet, dass es überall sehr gut läuft. Der oben erwähnte DAGMan ist nur eines der vielen großartigen Stücke, die mit Condor geliefert werden. Das Einrichten kann ein bisschen kompliziert sein, aber sobald es läuft, ist es absolut stabil. Es verfügt über eine unglaublich flexible Sprache, mit der Sie den Job <-> maschinellen Abgleich durchführen und Ihre Verwendungsregeln für Ihre Ressourcen erstellen können. Darüber hinaus wird die dynamische Bereitstellung auf Computern unterstützt, sodass Jobs auswählen können, wie viele Maschinenressourcen sie benötigen, und der Unterschied als noch verfügbar angezeigt wird. Es unterstützt globale Ressourcenzähler, sodass Sie sich auf Dinge wie Softwarelizenzen beschränken können. Und natürlich, Es verfügt über DAGMan, ein unglaublich leistungsfähiges Tool für das Workflow-Management. Der Nachteil von Condor besteht darin, dass der Planungsaufwand für kurzfristige Aufträge sehr hoch sein kann. Sie möchten Jobs, die idealerweise länger als 2 Minuten ausgeführt werden, da sonst die Planung einen großen Teil der Jobzeit im System ausmacht.

Drehmoment ist ein bisschen mehr Nische. Ich fürchte, ich weiß weniger darüber. Es vergleicht mehr mit Grid Engine als mit Condor. Es gibt kostenpflichtige Add-Ons, die @warren erwähnt hat und die erweitern können, was das grundlegende, freie Drehmoment leisten kann.

Wenn Sie die drei Technologien ausprobieren möchten und sehen möchten, wie sie mit Ihren spezifischen Workloads funktionieren, kann CycleCloud sichere, virtualisierte Pools aufbauen, die mit Condor, GridEngine oder Torque vorkonfiguriert sind Ihrerseits. Es wäre ein paar Dollar wert, kleine Pools für jede Technologie aufzubauen und sie mit repräsentativen Workloads zu testen. (Haftungsausschluss: Ich arbeite für Cycle Computing, wir machen CycleCloud)


Danke für die Information. Condor scheint wirklich auf größere Sammlungen von Maschinen ausgerichtet zu sein, die alle einen bestimmten Auftrag ausführen können. Das Problem, das ich habe, besteht eher darin, eine Reihe von Jobs zu haben, die an ganz bestimmten Orten ausgeführt werden, aber ich muss Jobs miteinander verketten, um sie in einer bestimmten Reihenfolge auszuführen. Kann Condor das auch, oder wird es weh tun, wenn es so funktioniert?
Cakemox

1
Condor kann mit Ihrer Situation umgehen. Sie können Jobs von DAGs auf vielfältige Weise einschränken, sodass sie auf bestimmte Computer oder Hardware in Ihren Pools abzielen.
Ian C.

6

Chronos sieht sehr vielversprechend aus.

Chronos ist Airbnbs Ersatz für Cron. Es ist ein verteilter und fehlertoleranter Scheduler, der auf Apache Mesos läuft. Sie können damit Jobs orchestrieren. Es unterstützt sowohl benutzerdefinierte Mesos-Executoren als auch den Standardbefehls-Executor. Daher führt Chronos standardmäßig sh-Skripte (auf den meisten Systemen bash) aus. Chronos kann zur Interaktion mit Systemen wie Hadoop (inkl. EMR) verwendet werden, auch wenn auf den Mesos-Slaves, auf denen die Ausführung erfolgt, Hadoop nicht installiert ist. Mit den enthaltenen Wrapper-Skripts können Sie Dateien übertragen und im Hintergrund auf einem Remotecomputer ausführen sowie asynchrone Rückrufe verwenden, um Chronos über die Beendigung oder den Ausfall von Aufträgen zu benachrichtigen.

Ich habe auch großen persönlichen Erfolg damit, Jenkins als Ersatz für Cron zu verwenden. Es erledigt die Ausführung von Jobs auf entfernten Servern recht gut. Hier ist eine Beschreibung: http://www.22ideastreet.com/blog/2014/05/02/replace-local-cron-with-jenkins/


4

In den letzten 4,5 Jahren habe ich mit der Server Automation-Plattform von HP (geborene Opsware) und dem Rest der Business Technology Optimization-Suite (Netzwerkautomatisierung, Operations Orchestration usw.) gearbeitet.

In einer ausreichend großen Umgebung ist die Auftragsverwaltung über SA ein äußerst praktikables (und wünschenswertes) Tool. In Verbindung mit OO können Jobs über Change Control Management, Ticketing usw. gesteuert werden.

Hier ist der nicht so lustige Teil: Es ist teuer (sehr teuer). Sie könnten einige der Vorschläge in einer ähnlichen Frage überprüfen, die ich vor einiger Zeit gestellt habe: FLOSS Server Management- und Audit-Tools .

Ich würde auch sagen, dass Torque / Maui / Moab (von Adaptive Computing ) sehr cool sind: Wir sind uns nicht sicher über die Preisgestaltung, aber sie sind auch hochflexible Werkzeuge.


Haftungsausschluss - Ich arbeite für einen Partner von HP BTO und Adaptive


2

HINWEIS Das Problem ganz anders angehen !

cron ist in gewisser Hinsicht alt und klobig.

Wenn Sie in der Tat nach neuen Möglichkeiten für die Planung suchen, würde ich ein Ereignis ausprobieren, das auf einer Messaging-Middleware basiert. Denken Sie an RabbitMQ mit Clients auf jedem Server.

Abhängigkeiten zwischen Hosts können durch "Benachrichtigungswarteschlangen" gelöst werden.

"Echte" zeitbasierte Ereignisse sind etwas kniffliger, genau dafür ist cron gedacht (und zumindest in kleinen Umgebungen ziemlich gut geeignet). Wo es schwierig wird, an die Idee zu kommen, ist es, Pannen zu vermeiden. Wie in: Mache jeden Abend um 01:00 Uhr einen Schnappschuss. In diesem Moment können durch die gesamte Infrastruktur einige Lastspitzen oder viele fehlgeschlagene Anmeldungen auftreten. Wenn Sie einen Ansatz haben, der auf einer Warteschlange basiert, erhalten Sie mindestens eine kostenlose Abweichung (obwohl dies nicht garantiert ist - es sei denn, eine Logik implementiert dies).

Das Problem ist, dass Sie sich ohne Echtzeit-Jobs nicht auf Folgendes verlassen können: Ja, meine Backups beginnen um 02:00 Uhr, und wenn sie immer noch um 04:00 Uhr ausgeführt werden, stimmt etwas nicht. Es ist einfacher, sicherzustellen, dass keine 2 störenden Jobs gleichzeitig ausgeführt werden. Erstellen Sie einfach einen Blocker, der jeweils nur einen Job verbraucht.

Der verwaltende Teil wäre ein nettes Webinterface, über das Jobs entweder bei Bedarf übermittelt werden könnten, oder - jetzt geht es zurück zu "cron" oder Ihrer Lieblingsimplementierung - der Java-Quarz-Scheduler verfügt über eine Sekunden-AFAIK-Granularität für das zeitbasiertes teil benutze einfach guten alten cron :)

Bitte lehnen Sie mich nicht als OT ab - es ist ein ziemlich grobes Konzept, aber da die Frage kein Geld ausschließt, kann man das Geld auch ausgeben, um die Lösung für die genauen internen Anforderungen zu finden, indem man etwas schafft, anstatt etwas auszugeben das Geld durch den Kauf von etwas, wo ein Anbieter denkt, dass es einige Anforderungen erfüllt :)


Dies ist interessant für die Verteilung großer Aufträge, aber meine Aufträge sind viel zeitlicher. Ich habe zwar einige Jobs, die so in die Warteschlange gestellt werden könnten, aber ich werde dies für diese berücksichtigen.
Cakemox

1

Ich habe Espresso (Cybermation) von CA verwendet. Ich bin mir nicht sicher, wie sie es jetzt nennen. Ich habe auch UC4 verwendet. Sie beide arbeiten, kosten eine Menge Geld (nach meinem Verständnis) und können ein Bär sein, um zu unterhalten, aber sie tun, was es verspricht. / Edit - vermisst, dass Sie sagen, dass kommerzielle Apps zu teuer sind. Ich kann dem definitiv zustimmen, aber für einige Unternehmen lohnt es sich, besonders wenn es sich um Geschäftsanwendungen handelt, die Geld verdienen.


1

Ich habe mit dem Open Source Job Scheduler als Option gearbeitet, um eine zentrale Crontab mit über 2000 Zeilen in einer Produktionsumgebung zu ersetzen. Bei cron wurden die Dinge so kompliziert, dass wir nicht feststellen konnten, welche Ausfallzeitfenster es gab oder wie wir mit Abhängigkeiten zwischen Servern umgehen sollten. Dieses Produkt hat geholfen, war aber etwas kompliziert einzurichten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.