Gut geplant ist halb gewonnen
Job-Scheduler – Die meisten Prozesse in einem typischen Unternehmen lassen sich zwar auch mit selbst entwickelten Lösungen automatisieren, aber besser und vor allem sicherer geht es mit professionellen Job-Scheduling-Suites.


Hier sind ein paar Punkte einer typischen Aufgabenliste: Das Management möchte die Logdateien der 15 Server ausgetauscht und auf CD-ROM gebrannt haben – und zwar am nächsten, einem jeden Geschäftstag folgenden Tag. Der Administrator sollte besser dafür sorgen, dass die Backups nicht fehlschlagen.
Der Verkauf möchte, dass alle Bestellungen, die über das E-Commerce-System eingehen, am Ende des Tages zum Abteilungsleiter gemailt und an die Versandabteilung gefaxt werden. Der Verkaufsleiter ist zu benachrichtigen, wenn eine dieser Aufgaben nicht erledigt wird.
Der Datenbankadministrator hat seine Systeme so konfiguriert, dass sie einen komplexen Bericht um 3.00 Uhr zu generieren beginnen, damit er spätestens um 10.00 Uhr verfügbar ist. Falls sich der Bericht verzögert, ist der Datenbankadministrator unverzüglich zu benachrichtigen.
Nun könnte die IT-Abteilung ein paar Programme zusammensuchen, mit deren Hilfe sich diese Aufgaben steuern lassen. Aber am vorteilhaftesten ist es, eine Job-Scheduling-Suite einzusetzen, die es erlaubt, Aufgaben wie die gerade erwähnten zu planen, zu automatisieren und zu überwachen, ohne dass dabei administrativ eingegriffen werden muss. Diese Aufgaben können nahezu jeden beliebigen Administrations-, Pflege- und Wartungs- sowie Geschäftsprozess umfassen, beispielsweise den Neustart von Diensten, die Rotation von Logdateien, Datensicherungen, das Löschen temporärer Dateien, das Versenden von Rechnungen und Bestellungen.
Die gerade aufgelisteten Aufgaben stellen für Job-Scheduler der Enterprise-Klasse noch keine große Herausforderung dar. Aber möglicherweise benötigt das Unternehmen ja eine Applikation, die mit komplexeren Aufgaben fertig wird. Vielleicht sind ja mehrfache Jobs sequenziell auf mehreren Maschine auszuführen. Der Administrator möchte vielleicht einen Job auf dem Datenbank-Server ausführen, um Konten abzufragen, die Ausgabe dann auf einen E-Mail-Server laden und schließlich die Kontoinhaber per E-Mail benachrichtigen. Dieser Aufgabenstrom läuft über mehrere Systeme und Abteilungen. Der Job-Scheduler sollte Fehler in der Mitte des Stroms behandeln können, selbst über mehrere Maschinen hinweg. Und ein Job-Fehler sowie der resultierende Fehler-Code aus Server A sollte beeinflussen, welche Jobs anschließend auf Server B ausgeführt werden. Ausgewachsene Job-Scheduler können das.
Die meisten Job-Scheduling-Suites arbeiten vergleichbar. Ein zentraler Scheduling-Server arbeitet mit einer Datenbank zusammen, um Jobs zu speichern und zu planen. Kommt die Zeit für einen Job, ausgeführt zu werden, nimmt der Scheduling-Server Kontakt auf mit einem leichtgewichtigen Agentenprogramm, das die Endpunkte benachrichtigt, die den Job ausführen werden. Der Agent führt dann ein Script aus und sendet Status-Codes und Fehlerinformationen an den Scheduling-Server zurück. Zusätzliche Jobs können gestartet und eine Serie von Jobs abgebrochen werden. Der Scheduler kann auch darauf warten, dass ein Operator übernimmt. Die meisten Produkte unterstützen Failover zu einem Backup-Scheduling-Server.
Cron und Perl bedeuten noch kein Job-Scheduling
Warum eine Viertelmillion Dollar für diese Programme ausgeben, wenn man Cron, Perl-Scripts, SSH und ein wenig Shell-Programmierung nutzen kann?
Sind nur einfache Standalone-Jobs auszuführen, könnte Cron ausreichen. Cron hat allerdings Einschränkungen, die dezialierte Job-Scheduler nicht haben. Cron ist wie ein Wecker. Zu einer vorgegebenen Zeit wacht es auf, wirft einen Job an und legt sich wieder schlafen, bis der nächste Job daher kommt. Ein Job lässt sich nicht mit dem nächsten korrelieren. Cron kann dem Administrator nicht sagen, dass seine Logdatei-Rotation um 2.00 Uhr in die Hose ging und er die alte Logdatei um 4.00 Uhr besser nicht löschen sollte. Es kann nicht sagen, ob ein Job früh oder spät beendet wurde oder ob der Rest des Jobs nach oben oder unten verschoben wird. Selbstgemachte Lösungen involvieren vielleicht die Einrichtung von Checkpoints und das Schreiben zusätzlicher Scripts, und sie werden früher oder später zu Skalierbarkeitsproblemen führen. Wer mit vielen unabhängigen Servern zu tun hat, wird Schwierigkeiten haben, den Status von Cron-Jobs zu sehen.
dirk.jarzyna@networkcomputing.de