pare o apache graciosamente no desligamento

1

Eu tenho algumas instâncias do ec2 em execução no AWS, que são dimensionadas por uma política de escalonamento automático, tudo está bem, as máquinas aumentam e diminuem muito bem. No entanto, uma falha que temos é que, quando diminui os pedidos sendo processados em (para ser encerrado), as instâncias são perdidas no meio, enquanto a terminação acontece.

O que eu gostaria de fazer é pegar o sinal de desligamento, e pedir ao apache um desligamento normal e deixar o desligamento continuar.

    
por Brij Raj Singh - MSFT 05.12.2013 / 10:45

1 resposta

0

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

Quando o sistema recebe um sinal de desligamento, os scripts na pasta /etc/rc0.d são executados, o que envolve scripts para desligar todos os serviços inclusos do Apache; Caso o script demore demais para desligar, a AWS irá desligar, não sei quanto tempo é muito longo.

De qualquer forma, então foi isso que eu fiz, eu 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 uma parada suave e dê um sono de 15 segundos para ter certeza de que ela morrerá graciosamente.

Atualizar - agora, o Amazon ELB oferece a remoção adequada de instâncias como um recurso.

    
por 13.12.2013 / 07:32