Job Scheduler (was: Re: File-Locking in Shellscripten auf NFS)

Autor: Raphael Eiselstein <rabe_at_uugrn.org>
Datum: Sun, 12 Dec 2010 02:26:48 +0100
On Thu, Dec 09, 2010 at 10:23:03AM +0100, Alexander Holler wrote:
> >Gibt es eine *einfache* Lösung basierend auf NFS?
> 
> Ich würde das eigentliche Problem beseitigen. D.h. die offensichtlich 
> zentrale Aufgabe (sonst wäre Mehrfachausführung ja wohl kein Problem), 
> zentral erledigen lassen, oder die Problemstellung so angehen, daß 
> Mehrfachausführung kein Problem ist.

Mehrfachausführung ist in diesem konkreten Fall kein *Problem* aber sinnlos.
 
> Dazu Dateien zu nutzen ist, wie bereits festgestellt, mehr oder weniger 
> ungeeignet, zumindest wenn das Locking des Dateisystems nicht zur 
> Synchronisation missbraucht werden kann.
> 
> Mehr kann man aufgrund der dürftigen Problembeschreibung nicht sagen.

Im konkreten Fall geht es darum, dass auf 2 Systemen Copyjobs laufen,
die z.B. per rsync Daten von rsyncd-Quellen auf NFS kopieren. Das Ganze
erfolgt mehrmals pro Stunde, per cron (und das ist auch das eigentliche
Problem, dazu unten mehr). Beide Kopiersysteme sind mehr oder weniger
identisch anzusehen, sie laufen unabhängig voneinander aber erfüllen die
gleiche Funktion. Falls ein System ausfällt oder aus anderen Gründen
nicht läuft, werden dennoch Files kopiert. Die cronjobs sind zeitlich so
eingestellt, dass zB einer auf System A um hh:10 und der andere auf
System B um hh:40 startet, effektiv alle 30min. Das ist *normal* kein 
Problem, weil die einzelnen Jobs nur <2min lang laufen, die kommen 
sich also praktisch nie ins Gehege und falls sie doch mal parallel 
laufen, gibt schlimmstenfalls 2 parallele Transfers der gleichen Datei 
und der job, der zuletzt fertig wird (mv $tmp $target) überschreibt halt 
die Datei vom ersten. Im Ergebnis nicht weiter schlimm. 

Das eigentliche Problem ist, dass hier cron verwendet wird. Lock/PIDfiles
sind ein Workaround für cron, die Lockfile-Problematik auf NFS
(verteilt) mit der Erkennung abgebrochener Jobs (PID checken) ist ein
Workaround für verteiltes Locking etc etc.

Unterm Strich schaff ich mir hier mit cron mehr Probleme als ich löse.

Was ich hier brauche ist ein Scheduler, der eine Aufgabe an einen von
mehreren gleichartigen Workern delegiert und die Ausführung überwacht 
und somit a) die regelmäßige Ausführung und b) die Ausfallsicherheit 
des Dienstes sicherstellt. 

"cron" ist für solche Fälle gänzlich ungeeignet. 

Nur: woher mal eben einen Job-Scheduler hernehmen? Und wie betreibt man
diesen Scheduler dann wiederum hochverfügbar?

Falls ich eine Lösung dafür habe, poste ich sie hier. Falls jemand eine
Idee hat, was ich mir mal anschauen könnte, gerne ... 

Gruß
Raphael

-- 
Raphael Eiselstein <rabe@uugrn.org>               http://rabe.uugrn.org/
xmpp:freibyterægmx.de  | https://www.xing.com/profile/Raphael_Eiselstein   
GnuPG:                E7B2 1D66 3AF2 EDC7 9828  6D7A 9CDA 3E7B 10CA 9F2D
.........|.........|.........|.........|.........|.........|.........|..


-- 
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/

Empfangen am 12.12.2010

Dieses Archiv wurde generiert von hypermail 2.2.0 : 12.12.2010 CET