2008-09-23 13 views
7

Jeder weiß, wie man einen Mongrel-Cluster über "capistrano" in einem "rollenden" Stil neu startet, zB einen Mischling nach dem anderen. Wäre toll, dort auch ein bisschen Wartezeit zu haben, damit der Mischling auch die Rails-App aufladen kann.Wie macht man einen Neustart eines Clusters von Mischlingen?

Ich habe etwas gesucht, und habe nicht zu viel gefunden, so auf der Suche nach Hilfe, bevor ich selbst in den Mixgrel_cluster Edelstein tauchen.

Danke!

Antwort

1

Wippe ist ein Juwel in der Rails Oceania Rubyforge Project gefunden, die Mongrel-Cluster diese Art von Funktionalität bietet. Jedoch kann das Projekt von einigen Bit-rot leidet kein Release seit 2007 noch einen Blick wert, auch nur kneifen die Ideen :)

1
#!/bin/bash 
for PIDFILE in /tmp/mongrel.*; do 
    PID=$(cat ${PIDFILE}) 
    kill ${PID} 
    ${RUN_MONGREL_CMD} ${PID} 
    sleep 2 
done 
3

Ich stimme mit dem Wippe Ansatz mehr als der Roll Ansatz havain hatte du suchst. Das Problem besteht darin, dass Sie in Situationen geraten, in denen der Lastausgleich Benutzer während des Übergangs zwischen verschiedenen Versionen der Anwendung hin und her bewegen kann.

Die Lösungen, die wir gefunden haben (bevor wir SeeSaw gefunden haben, das wir nicht verwenden), war die Hälfte der Mongrels aus dem Load Balancer zu entfernen. Schalte sie aus. Aktualisieren Sie sie. Starte sie auf. Setzen Sie diese Mongrels wieder online in den Load Balancer und nehmen Sie die andere Hälfte ab. Schließe die zweite Hälfte ab. Aktualisieren Sie die zweite Hälfte. Starte sie auf. Dadurch wird die Zeit minimiert, in der zwei verschiedene Versionen der Anwendung gleichzeitig ausgeführt werden. Ich schrieb eine Windows Bat-Datei, um dies zu tun. (Die Bereitstellung unter Windows wird nicht empfohlen.)

Es ist sehr wichtig zu beachten, dass Datenbankumstellungen den gesamten Ansatz ein wenig gefährlich machen können. Wenn Sie nur additive Migrationen durchführen, können Sie diese jederzeit vor der Bereitstellung ausführen. Wenn Sie Spalten entfernen, müssen Sie dies nach der Bereitstellung tun. Wenn Sie Spalten umbenennen, ist es besser, sie in eine neue Spalte zu teilen und Daten in die Migration zu kopieren, die vor der Bereitstellung ausgeführt wird, und in ein separates Skript, um die alte Spalte nach der Bereitstellung zu entfernen. In der Tat kann es gefährlich sein, Ihre regulären Migrationen in einer Produktionsdatenbank im Allgemeinen zu verwenden, wenn Sie keine besonderen Anstrengungen unternehmen, diese zu organisieren. All dies deutet auf häufigere Lieferungen hin, so dass jede Aktualisierung ein geringeres Risiko und weniger komplex ist, aber das ist ein Thema für eine andere Antwort.

+0

Danke matt, yep, ich dachte nicht, es zu erwähnen, aber ich würde mit Sicherheit auf der sicheren Seite bleiben und für fast jede Migration einen kompletteren Shutdown-migrieren-Start machen –

Verwandte Themen