web-dev-qa-db-ja.com

upstartとsupervisordは同じものに使用されていますか?

サーバーが再起動するたびに、また予期しないエラーなどで停止した場合に必ず起動する必要がある、いくつかのjvmベースのプロセスがあります。

念のため、Ubuntu 12.04を実行しています。

私はアップスタートスクリプトのサンプルを見てきましたが、そのように傾いていますが、アップスタートやスーパーバイザーのようなもので何が違うのかを理解したいと思います。

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

13
Blankman

違いは、upstartはinitの置き換えであるのに対し、supervisordはProcess Control System。この説明は、監視対象の サイト で行われます。

これは、launchd、daemontools、runitなどのプログラムの同じ目標の一部を共有します。これらのプログラムの一部とは異なり、「プロセスID 1」としてのinitの代わりとして実行することは意図されていません。代わりに、プロジェクトまたは顧客に関連するプロセスを制御するために使用することを意図しており、ブート時に他のプログラムと同様に開始することを意図しています。

これは、監視対象自体が、upstartジョブファイルまたはsysV initスクリプトを介して、upstartによって開始されることを意味します。個人的には、以下の理由から、単純なinitではなくプロセスマネージャを使用することにしました。

  1. サービスが適切にデーモン化しない
  2. サービスは、監視および再起動する必要があるために死ぬことがわかっています

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

12
jordanm