upstart e supervisord sono usati per la stessa cosa?


13

Ho alcuni processi basati su jvm che devo assicurarmi di avviare ogni volta che il mio server viene riavviato, e anche se si interrompe a causa di un errore imprevisto ecc.

Sto eseguendo Ubuntu 12.04 in caso di problemi.

Ho visto esempi di script upstart e mi sto piegando in quel modo, ma voglio capire quali sono le differenze con qualcosa come upstart o supervisord.

Sono utilizzati per gli stessi identici scopi o ci sono differenze nella funzionalità?

Risposte:


12

La differenza è che upstart è un sostituto di init mentre supervisord è un Process Control System. Questa spiegazione è fornita sul sito supervisord :

Condivide alcuni degli stessi obiettivi di programmi come launchd, daemontools e runit. A differenza di alcuni di questi programmi, non deve essere eseguito come sostituto di init come "ID processo 1". Invece, è pensato per essere utilizzato per controllare i processi relativi a un progetto o un cliente e deve iniziare come qualsiasi altro programma al momento dell'avvio.

Ciò significa che supervisord stesso verrebbe avviato da upstart, tramite un file di lavoro upstart o uno script init sysV. Personalmente, ho scelto di utilizzare un gestore di processi anziché un semplice init avviando per i seguenti motivi:

  1. Il servizio non esegue correttamente la demonizzazione
  2. È noto che il servizio è morto e deve essere monitorato e riavviato

Un esempio di programma non correttamente demonizzato è quando non chiude stdout e stderr e continua a scrivere dati in tali posizioni. Supervisord può gestire la registrazione di tale output.


Vedo, non sono sicuro di aver compreso appieno, ma ho pensato che l'avvio potesse anche riavviare il processo se fallisce.
Blankman

@Blankman Immagino che ci sia ancora meno ragione con i moderni sistemi init
Giordania

Vorrei notare che la soluzione corretta per un servizio che non esegue correttamente la demonizzazione sarebbe quella di correggere l'errore con detto servizio che ne impedisce la corretta demonizzazione. Concederò che qualcosa come supervisord sarebbe utile per il n. 2, però.
Shadur,

1
@shadur Non sono d'accordo che sia la soluzione migliore. Il processo potrebbe non essere di tua proprietà, quindi non puoi risolverlo. Anche se riesci a risolverlo, non importa quanti bug correggi, non puoi mai sapere che non ci sono più in agguato, e anni dopo, il tuo processo morirà di nuovo, in produzione, a causa di una situazione che non è mai stata esposta prima, come una rete insolita o una condizione del database. Preferiresti che il tuo sito rimanesse offline, frustrando gli utenti e ti costasse denaro? No. È necessario uno strumento per riavviare i servizi. Periodo.
Jonathan Hartley
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.