é upstart e supervisord usado para a mesma coisa?

12

Eu tenho alguns processos baseados em jvm que eu preciso ter certeza de iniciar sempre que meu servidor for reinicializado, e também se ele parar por causa de um erro inesperado etc.

Estou executando o Ubuntu 12.04 em caso de problemas.

Eu tenho visto exemplos de scripts iniciantes e estou meio que me inclinando dessa forma, mas quero entender quais são as diferenças com algo como upstart ou supervisord.

Eles são usados exatamente para os mesmos propósitos ou existem diferenças na funcionalidade?

    
por Blankman 28.12.2012 / 03:48

1 resposta

12

A diferença é que o upstart é um substituto do init, enquanto o supervisord é um Process Control System . Essa explicação é dada no site :

It shares some of the same goals of programs like launchd, daemontools, and runit. Unlike some of these programs, it is not meant to be run as a substitute for init as “process id 1”. Instead it is meant to be used to control processes related to a project or a customer, and is meant to start like any other program at boot time.

Isso significa que o próprio supervisord seria iniciado pelo upstart, seja por meio de um arquivo de trabalho upstart ou de um script init sysV. Pessoalmente, escolhi usar um gerenciador de processos em vez de um init simples, começando pelos seguintes motivos:

  1. O serviço não daemoniza corretamente
  2. O serviço é conhecido por morrer e precisa ser monitorado e reiniciado

Um exemplo de um programa que não é daemonizing corretamente é quando ele não fecha stdout e stderr e continua gravando dados nesses locais. A Supervisord pode lidar com o registro dessa saída.

    
por 28.12.2012 / 07:00