High Availability Cronjobs Frage High Availability Cronjobs zu Favoriten hinzufügen

Daumen hoch 1 Daumen runter

Hallo zusammen, wir haben einen Cluster wo wir mehrere Webserver haben, diese stehen hinter einem Loadbalancer. Wir wollen dabei Cronjobs laufen lassen die auch dann laufen wenn einer der Webserver ausfällt. Nun sollen diese Jobs aber nicht doppelt laufen.

Hat jemand eine Idee wie man dieses angehen könnte?

bearbeitet am 22.12.2011

Antworten


Diese Antwort als GUT bewerten 1 Diese Antwort als SCHLECHT bewerten

Was genau machen die Cronjobs denn? Vielleicht ist es ja denkbar die Aufgaben in eine MessageQueue bzw JobQueue zu stecken und dann verschiedene Worker diese Aufgaben abarbeiten zu lassen?

DIe Cronjobs erledigen Zeitgesteuerte Mechanismen. Zb erstellt ein User eine Aufgabe die 5 Min dauert, nach 5 min wird sie sozusagen als Erledigt eingestuft. Ich hoffe das erklärt das ein wenig.

felix am 15.12.2011

Sehe ich das richtig das es zwischen MessageQueue und JobQueue keinen unterschied gibt oder?

felix am 21.12.2011
Diese Antwort als GUT bewerten 1 Diese Antwort als SCHLECHT bewerten

Eventuell wäre es auch möglich Jenkins aka Hudson dafür zu benutzen. Ich benutze ihn bislang nur für CI, allerdings kann er auch Cronjobs monitoren.

http://jenkins-ci.org/

Diese Antwort als GUT bewerten 0 Diese Antwort als SCHLECHT bewerten

Kannst du irgendwo zwischenspeichern, ob ein Job bereits läuft bzw. gelaufen ist?

Falls ja, dann könntest du den Job auf mehreren Maschinen einrichten und vor der eigentlichen Aufgabe des Jobs prüfen, ob dieser Job bereits von einer anderen Maschine angestoßen wurde.

Über ein NFS greifen die Webserver auf die Dateien zu. So wird es momentan gehändelt. Es wird eine Lockdatei erstellt und danach gleich gelöscht. Manchmal sind die Jobs so schnell das trotzdem doppelt ausgeführt werden.

felix am 15.12.2011

Vielleicht startet man die Jobs verzögert auf den Maschinen? Maschine 1: 0:00 Uhr, Maschine 2: 0:02 Uhr, Maschine 3: 0:04 Uhr, usw. Zudem ist es vielleicht sinnvoll die Datei zu behalten und zu prüfen, ob (wenn der Job z.B. nur 1x pro Std. läuft) es bereits eine Datei für diese Stunde gibt.

martin am 15.12.2011

Einige Jobs laufen im 10 sek Takt, das sind eigentlich die wirklich kritischen.

felix am 16.12.2011
Diese Antwort als GUT bewerten 0 Diese Antwort als SCHLECHT bewerten

Hey Felix,

hast du es inzwischen lösen können? Würde mich interessieren wie du die Anforderung umgesetzt hast.

Leider noch nicht, momentan läuft es mit dem Dateisystem (Datei erstellen und check). Ich habe mir Beanstalkd angeschaut. Dabei war aber auch irgendwie das Problem das ich 2 mal den gleichen Job bekommen habe. Evtl lag es auch daran das die Abfragen zu schnell waren (war nur eine PHP Datei die ich 2 mal ausgeführt hatte)

felix am 21.12.2011

Deine Antwort

Registrierter User Bereits registriert? Bitte logge dich vor dem Antworten ein.

Deine Daten