supervisionar o apache com daemontools

3

Estou tentando configurar daemontools para dois apaches em um servidor. um apache 2.2 escutando na porta 80 solicitação de proxy para um segundo apache 1.3 escutando na porta 8888./run script da seguinte forma:

#!/bin/sh
# apache 1.3
exec /apache_1_3/apache/bin/httpd -F

#!/bin/sh
# apache 2.2
exec /apache_2_2/apache/bin/httpd -D FOREGROUND

O daemontools monitora o apache bem. no entanto, se eu parar o apache2.2 (usando svc -t ou apachectl), o apache 1.3 verá o seguinte erro no error_log

[crit] (98)Address already in use: make_sock: could not bind to port 8888

Eu tive que manualmente apachectl parar o apache1.3 para parar a mensagem de erro atrapalhar o arquivo de log.

Não existe tal problema antes de usar daemontools.

alguma ideia de por que isso está acontecendo?

    
por perlwle 24.02.2010 / 04:22

1 resposta

1

Você não deve definir dois daemons dentro de um único script. Você está executando dois daemons, mas acredito que o Daemontools só irá monitorar o segundo daemon exec 'd.

Veja o que acredito que está acontecendo:

  • Seu script gera dois processos
    • Daemontools inicia o primeiro processo e o segundo processo, mas monitorará apenas o segundo processo. O primeiro processo é ignorado.
  • Você mata o segundo processo. O primeiro processo, o Apache 1.3 ainda está em execução.
  • A Daemontools percebe que o segundo processo está inativo e, portanto, executa novamente o script run .
  • Seu script tenta gerar dois processos novamente.
    • O processo do Apache 1.3 falha ao iniciar novamente, porque o Apache já está em execução e escutando nessa porta.
    • O processo do apache2.2 começa bem.
por 19.10.2010 / 01:58

Tags