UpstartとSupervisorは同じことをするのに使われますか?

UpstartとSupervisorは同じことをするのに使われますか?

いくつかのjvmベースのプロセスがあり、サーバーが再起動されたとき、予期しないエラーなどによって停止したときにそのプロセスが起動することを確認する必要があります。

万が一に備えてUbuntu 12.04を実行しています。

私はサンプルのupstartスクリプトを見て、このアプローチにどの程度傾いていますが、upstartやsupervisordなどの違いが何であるかを理解したいと思います。

それらはまったく同じ目的で使用されますか、それとも機能的な違いがありますか?

答え1

違いは、upstartがinitを置き換えるのに対し、SupervisordはProcess Control SystemSupervisordにあることです。場所:

launchd、daemontools、runit などのプログラムと同じ目標の一部を共有します。これらのプログラムの一部とは異なり、「プロセスID 1」を使用してinitを置き換えて実行されるわけではありません。むしろ、プロジェクトやクライアントに関連するプロセスを制御するために使用され、他のプログラムのように起動時に実行されるように設計されています。

これは、Supervisord自体がupstartジョブファイルまたはsysV initスクリプトを介してupstartによって開始されることを意味します。個人的には、私は次の理由で単純な初期化を開始する代わりにプロセスマネージャを使用することを選択しました。

  1. サービスが正しくデーモン化されていません。
  2. サービスが終了したことが知られている監視と再起動が必要です。

正しくデーモン化されないプログラムの例は、stdoutとstderrを閉じずにこれらの場所にデータを書き続ける場合です。 Supervisordはこの出力のロギングを処理できます。

関連情報