Wie konvertiert man Linux-Cron-Jobs in "den Amazon-Weg"?

Für besser oder schlechter, wir haben migriert, unsere ganze LAMPE web-Anwendung vom eigenen Computer in die cloud (Amazon EC2 Maschinen). Es läuft gut so weit, aber die Art, wie wir crons ist sub-optimal. Ich habe einen Amazon-spezifische Frage, wie am besten zu verwalten, cron-jobs in der cloud mit "Amazon Art".

Das problem: Wir haben mehrere Webserver, und müssen laufen crons für batch-jobs, wie das anlegen RSS-feeds -, Trigger-E-Mails, viele verschiedene Dinge eigentlich. ABER die cron-jobs müssen nur auf einer Maschine, weil Sie oft in die Datenbank schreiben, so würde die doppelte Ergebnisse, wenn die Ausführung auf mehreren Maschinen.

So weit, wir als eines der den Webserver als "master-webserver" und es hat ein paar "Besondere" Aufgaben, die der andere Webserver nicht haben. Die trade-off für cloud computing ist die Zuverlässigkeit - wir wollen keinen "master-webserver", weil es einen single point of failure. Wir wollen, dass Sie alle identisch sein und in der Lage sein zu gehobenen und downscale ohne Erinnerung nicht zu nehmen, die der master-webserver aus dem cluster.

Wie können wir die Neugestaltung unserer Anwendung zum konvertieren von Linux-cron-jobs in vergänglichen Arbeitsaufgaben, die nicht über ein single point of failure?

Meine Ideen bisher:

  • Haben eine Maschine gewidmet, um nur die Laufenden crons. Dies wäre ein wenig mehr überschaubar, aber es würde immer noch ein single-point-of-failure, und würde verschwenden Geld haben eine extra-Instanz.
  • Einige Arbeitsplätze könnten möglicherweise verschoben werden von Linux crons zu MySQL-Veranstaltungen allerdings bin ich kein großer fan von dieser Idee, da ich nicht möchten, um die Anwendung von Logik in die Datenbank-Schicht.
  • Vielleicht können wir alle crons auf alle Maschinen, sondern ändern unser cron-Skripts, so dass Sie beginnen alle mit ein wenig Logik implementiert, dass ein locking-Mechanismus, so dass nur ein server tatsächlich tritt in Aktion, und die anderen einfach überspringen. Ich bin kein fan von dieser Idee, wie es klingt potenziell buggy, und ich würde lieber eine Amazon-best-practice-eher als rollende unsere eigenen.
  • Ich mir vorstelle, eine situation, wo die jobs werden irgendwo, einer Warteschlange Hinzugefügt und dann die Webserver-könnte jeder sein, ein Arbeiter, sagen kann "hey, I' ll take this one". Amazon Simple Workflow Service hört sich genau diese Art der Sache, aber ich derzeit nicht wissen viel über Sie, so dass keine Einzelheiten wären hilfreich. Es scheint Art von schweren Gewicht für etwas so einfaches wie ein cron? Ist es der richtige service ist oder ist es ein passender Amazon-service?

Update: Da die Frage, ich habe gesehen, das Amazon Simple Workflow Service webinar auf YouTube an und bemerkte mit 34:40 (http://www.youtube.com/watch?v=lBUQiek8Jqk#t=34m40s) ich fing einen Blick von einer Folie zu erwähnen, cron-jobs, wie eine Beispiel-Anwendung. In Ihrer Dokumentation Seite "AWS Flow Framework-Beispiele für Amazon SWF", Amazon, sagen, dass Sie Beispielcode für die crons:

...
> Cron-jobs In diesem Beispiel, eine lang laufende Workflows in regelmäßigen Abständen
führt eine Aktivität. Die Fähigkeit, auch weiterhin als neue Hinrichtungen
Ausführungen, so dass eine Hinrichtung ausführen können, für sehr lange Zeiträume
Zeit ist nachgewiesen.
...

Heruntergeladen ich das AWS SDK für Java (http://aws.amazon.com/sdkforjava/) und sicher genug, vergraben in einem lächerlich Schichten von Ordnern es gibt einige java-code (aws-java-sdk-1.3.6/samples/AwsFlowFramework/src/com/amazonaws/services/simpleworkflow/flow/examples/periodicworkflow).

Das problem ist, wenn ich ehrlich bin, bedeutet dies nicht wirklich helfen, da es nicht etwas ich kann leicht zu verdauen mit meinem skillset. Die gleiche Probe fehlt die PHP-SDK, und es scheint nicht zu sein ein tutorial, das geht, obwohl der Prozess. Also im Grunde bin ich immer noch auf der Jagd für Ratschläge oder Tipps.

Kommentar zu dem Problem

InformationsquelleAutor der Frage Tom | 2012-04-08

Schreibe einen Kommentar