Comandos Supervisord para iniciar o rsyslog e o haproxy

2

Estou tentando fazer com que esses dois iniciem quando a imagem do Docker é iniciada, mas eles parecem não iniciar.

[supervisord]
nodaemon=true

[program:rsyslog]
command=/bin/bash "service rsyslog start"

[program:haproxy]
command=/bin/bash "service haproxy start"

Qual comando é necessário para começar tanto na ordem do rsyslog primeiro quanto no haproxy?

    
por Karl Morrison 25.11.2015 / 11:12

2 respostas

1

Isso não funcionará porque o comando service ... start inicia o programa como daemon e o envia em segundo plano. O supervisord não pode lidar com isso em vez disso, precisa iniciá-los como subprocesso e executá-los no forground. Veja aqui :

Programs meant to be run under supervisor should not daemonize themselves. Instead, they should run in the foreground. They should not detach from the terminal from which they are started. The easiest way to tell if a program will run in the foreground is to run the command that invokes the program from a shell prompt. If it gives you control of the terminal back, but continues running, it’s daemonizing itself and that will almost certainly be the wrong way to run it under supervisor. You want to run a command that essentially requires you to press Ctrl-C to get control of the terminal back. If it gives you a shell prompt back after running it without needing to press Ctrl-C, it’s not useful under supervisor. All programs have options to be run in the foreground but there’s no “standard way” to do it; you’ll need to read the documentation for each program.

Aqui está um exemplo de configuração de programa do "mundo real" da documentação do supervisord :

Apache 2.2.6:

[program:apache2]
command=/path/to/httpd -c "ErrorLog /dev/stdout" -DFOREGROUND
redirect_stderr=true

Os scripts de inicialização do seu programm podem ser um bom lugar para descobrir como o programa é iniciado, para uma configuração adequada.

Alguns exemplos são aqui

    
por 25.11.2015 / 11:40
-1
[supervisord]
nodaemon=true

[program:rsyslog]
command=service rsyslog start

[program:haproxy]
command=service haproxy start

No entanto, agora devo adiar o início do haproxy, pois o haproxy requer que o rsyslog seja iniciado antes da mão. No entanto, este é outro problema.

    
por 25.11.2015 / 13:25