pare o apache normalmente no desligamento

pare o apache normalmente no desligamento

Eu tenho algumas instâncias ec2 em execução na AWS, que são dimensionadas por uma política de escalonamento automático, está tudo bem, as máquinas aumentam e diminuem muito bem. No entanto, uma falha que temos é que, quando ele reduz, as solicitações processadas nas instâncias (a serem encerradas) são perdidas no meio enquanto o encerramento ocorre.

O que eu gostaria de fazer é capturar o sinal de desligamento e pedir ao Apache para desligar normalmente e depois deixar o desligamento continuar.

Responder1

Eu descobri, é uma espécie de hack, mas parece estar funcionando para mim.

Quando o sistema recebe um sinal de desligamento, os scripts da pasta /etc/rc0.d são executados, o que envolve scripts para desligar todos os serviços inclusive o Apache; caso o script demore muito para desligar, o AWS será desligado, não sei quanto tempo é muito longo.

De qualquer forma, foi isso que eu fiz, editei o arquivo /etc/rc0.d/K09apache2

Na função apache_stop apache_stop() {

if $APACHE2CTL configtest > /dev/null 2>&1; then
            # if the config is ok than we just stop normaly
            #$APACHE2CTL stop 2>&1 | grep -v 'not running' >&2 || true
            echo "stopping the apache gracefully"
            $APACHE2CTL -k graceful-stop 2>&1 | grep -v 'not running' >&2 || true
            sleep 15

Mude a parada abrupta para parada graciosa e durma por 15 segundos para ter certeza de que ela morre normalmente.

Atualização – agora o Amazon ELB oferece a remoção elegante de instâncias como um recurso.

informação relacionada