wird upstart und supervisord für dasselbe verwendet?

13

Ich habe einige JVM-basierte Prozesse, die ich unbedingt starten muss, wenn mein Server neu gestartet wird, und auch, wenn er aufgrund eines unerwarteten Fehlers anhält usw.

Ich verwende Ubuntu 12.04 für alle Fälle.

Ich habe Beispiel-Upstart-Skripte gesehen und lehne mich auf diese Weise an, aber ich möchte verstehen, was die Unterschiede mit so etwas wie Upstart oder Supervisord zu tun haben.

Werden sie genau für den gleichen Zweck verwendet oder gibt es Unterschiede in der Funktionalität?

Blankman
quelle

Antworten:

12

Der Unterschied besteht darin, dass Emporkömmling ein Init-Ersatz ist, während Supervisord ein Init ist Process Control System. Diese Erklärung finden Sie auf der Supervisord- Site :

Es teilt einige der gleichen Ziele von Programmen wie launchd, daemontools und runit. Im Gegensatz zu einigen dieser Programme soll es nicht als Ersatz für init als "Prozess-ID 1" ausgeführt werden. Stattdessen soll es zur Steuerung von Prozessen im Zusammenhang mit einem Projekt oder einem Kunden verwendet werden und soll wie jedes andere Programm beim Booten gestartet werden.

Dies bedeutet, dass Supervisord selbst von upstart entweder über eine upstart-Jobdatei oder ein sysV-Init-Skript gestartet wird. Persönlich habe ich mich aus folgenden Gründen für die Verwendung eines Prozessmanagers anstelle eines einfachen Init entschieden:

  1. Der Dienst dämonisiert nicht ordnungsgemäß
  2. Der Dienst muss überwacht und neu gestartet werden

Ein Beispiel für ein Programm, das die Daemonisierung nicht ordnungsgemäß durchführt, ist, dass stdout und stderr nicht geschlossen werden und weiterhin Daten an diese Speicherorte geschrieben werden. Supervisord kann die Protokollierung dieser Ausgabe übernehmen.

Jordanien
quelle
Ich verstehe nicht, ob ich es richtig verstanden habe, aber ich dachte, dass upstart den Prozess auch neu starten kann, wenn er fehlschlägt.
Blankman
@Blankman Ich denke, es gibt noch weniger Gründe mit modernen Init-Systemen
Jordan
Ich stelle fest, dass die richtige Lösung für einen Dienst, der nicht ordnungsgemäß dämonisiert wird, darin besteht, den Fehler mit diesem Dienst zu beheben, der dazu führt, dass er nicht ordnungsgemäß dämonisiert wird. Ich gebe aber zu, dass so etwas wie Supervisor für # 2 nützlich wäre.
Shadur
1
@shadur Ich bin nicht einverstanden, dass die beste Lösung ist. Der Prozess befindet sich möglicherweise nicht in Ihrem Besitz und kann daher nicht repariert werden. Selbst wenn Sie es beheben können, egal wie viele Fehler Sie beheben, können Sie nie wissen, dass es nicht mehr lauert, und Jahre später wird Ihr Prozess in der Produktion aufgrund einer Situation, die noch nie aufgedeckt wurde, erneut zum Erliegen kommen B. ein ungewöhnlicher Netzwerk- oder Datenbankzustand. Möchten Sie, dass Ihre Website offline bleibt, die Nutzer frustriert und Sie Geld kostet? Nein, Sie benötigen ein Tool, um die Dienste neu zu starten. Zeitraum.
Jonathan Hartley