[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


On Thu, Dec 09, 2010 at 10:23:03AM +0100, Alexander Holler wrote:
> >Gibt es eine *einfache* Loesung basierend auf NFS?
> 
> Ich wuerde das eigentliche Problem beseitigen. D.h. die offensichtlich 
> zentrale Aufgabe (sonst waere Mehrfachausfuehrung ja wohl kein Problem), 
> zentral erledigen lassen, oder die Problemstellung so angehen, dass 
> Mehrfachausfuehrung kein Problem ist.

Mehrfachausfuehrung 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 duerftigen 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 unabhaengig voneinander aber erfuellen die
gleiche Funktion. Falls ein System ausfaellt oder aus anderen Gruenden
nicht laeuft, 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) ueberschreibt halt 
die Datei vom ersten. Im Ergebnis nicht weiter schlimm. 

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

Unterm Strich schaff ich mir hier mit cron mehr Probleme als ich loese.

Was ich hier brauche ist ein Scheduler, der eine Aufgabe an einen von
mehreren gleichartigen Workern delegiert und die Ausfuehrung ueberwacht 
und somit a) die regelmaessige Ausfuehrung und b) die Ausfallsicherheit 
des Dienstes sicherstellt. 

"cron" ist fuer solche Faelle gaenzlich ungeeignet. 

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

Falls ich eine Loesung dafuer habe, poste ich sie hier. Falls jemand eine
Idee hat, was ich mir mal anschauen koennte, gerne ... 

Gruss
Raphael

-- 
Raphael Eiselstein <rabe@xxxxxxxxx>               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/