Wie konvertiere ich Linux-Cron-Jobs auf Amazon?

Zum Guten oder Schlechten haben wir unser ganzes migriertLAMPE Webanwendung von dedizierten Maschinen in die Cloud (Amazon EC2-Maschinen). Bisher läuft es großartig, aber so wie wir es tuncrons ist nicht optimal. Ich habe eine Amazon-spezifische Frage, wie ich Cron-Jobs in der Cloud am besten mit "Amazon" verwalten kann.

Das Problem: Wir haben mehrere Webserver und müssen Cron für Batch-Jobs ausführen, z. B. für das Erstellen von RSS-Feeds, das Auslösen von E-Mails und vieles mehr. ABER die Cronjobsmüssen nur auf einer Maschine laufen da sie häufig in die Datenbank schreiben, würden sie die Ergebnisse duplizieren, wenn sie auf mehreren Computern ausgeführt würden.

Bisher haben wir einen der Webserver als "Master-Webserver" bezeichnet und er hat einige "spezielle" Aufgaben, die die anderen Webserver nicht haben. Der Kompromiss für Cloud Computing ist Zuverlässigkeit - wir wollen keinen "Master-Webserver", da dies eine einzige Fehlerquelle ist. Wir möchten, dass sie alle identisch sind und hoch- und runterskaliert werden können, ohne daran zu denken, den Master-Webserver nicht aus dem Cluster herauszunehmen.

Wie können wir unsere Anwendung neu gestalten, um Linux-Cron-Jobs in vorübergehende Arbeitselemente zu konvertieren, die keinen einzigen Fehlerpunkt haben?

Meine bisherigen Ideen:

Lassen Sie eine Maschine nur zum Laufen bringen. Dies wäre etwas einfacher zu handhaben, aber immer noch ein Single-Point-of-Failure und würde Geld verschwenden, wenn es eine zusätzliche Instanz gäbe.Einige Jobs könnten möglicherweise von Linux-Benutzern nach verschoben werdenMySQL-Ereignisse Ich bin jedoch kein großer Fan dieser Idee, da ich die Anwendungslogik nicht in die Datenbankebene integrieren möchte.Vielleicht können wir alle Cron auf allen Rechnern ausführen, aber unsere Cron-Skripte so ändern, dass sie alle mit einer Logik beginnen, die einen Sperrmechanismus implementiert, sodass nur ein Server tatsächlich Maßnahmen ergreift und die anderen einfach überspringen. Ich bin kein Fan dieser Idee, da sie möglicherweise fehlerhaft klingt, und ich würde es vorziehen, eine Amazon-Best-Practice zu verwenden, anstatt unsere eigene zu entwickeln.Ich stelle mir eine Situation vor, in der Jobs irgendwo geplant und in eine Warteschlange gestellt werden und die Webserver dann jeweils Arbeiter sein könnten, die sagen können: "Hey, ich nehme diese".Amazon Simple Workflow Service klingt genau so, aber ich weiß momentan nicht viel darüber, daher wären alle Einzelheiten hilfreich. Es scheint ein bisschen schwer für etwas so Einfaches wie ein Cron? Ist es der richtige Service oder gibt es einen passenderen Amazon-Service?

Aktualisieren: Seitdem ich die Frage gestellt habe, habe ich das gesehenAmazon Simple Workflow Service Webinar auf YouTube und bemerkte um 34:40 (http://www.youtube.com/watch?v=lBUQiek8Jqk#t=34m40s) Ich habe einen Blick auf eine Folie geworfen, in der Cron-Jobs als Beispielanwendung erwähnt wurden. In ihrer Dokumentation Seite, "AWS Flow Framework-Beispiele für Amazon SWF", Amazon sagt, sie haben Beispielcode für crons:

...> Cron Jobs In diesem Beispiel führt ein lang laufender Workflow regelmäßig eine Aktivität aus. Es wird gezeigt, dass Ausführungen als neue Ausführungen fortgesetzt werden können, sodass eine Ausführung über einen sehr langen Zeitraum ausgeführt werden kann. ...

Ich habe das AWS SDK für Java heruntergeladen (http://aws.amazon.com/sdkforjava/) und sicher genug in lächerlichen Ordnerebenen versteckt ist ein 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, dass dies nicht wirklich hilft, da ich es mit meinen Fähigkeiten nicht leicht verdauen kann. Dasselbe Beispiel fehlt im PHP SDK und es scheint kein Tutorial zu geben, das den Prozess durchläuft. Im Grunde bin ich immer noch auf der Suche nach Ratschlägen oder Tipps.

Antworten auf die Frage(12)

Ihre Antwort auf die Frage