RHEL6 Upstart: Fluxo de Eventos Durante a Reinicialização

1

Eu tenho uma situação em que um servidor RHEL 6.4 está enviando TERM e KILL sinais muito rapidamente, antes de os aplicativos e bancos de dados terem tido a chance de parar normalmente. Parece que o Upstart está entregando o controle aos scripts sysv-rc prematuramente.

Para solucionar isso, eu tentei adicionar os comandos sleep e logger na configuração do Upstart. A sub-rotina pre-script está gravando no syslog, mas a suspensão nunca é concluída porque o sistema é reinicializado em 10 segundos. Eu também adicionei um kill timeout que é ignorado.

# cleanup at system shutdown
# Does stop all on apps, stops monit instances, then does a clean.
start on runlevel [016]

console output
kill timeout 120

task

pre-start script
    logger -s -t "arcsight-services-stopall" "Running pre-start..."
    /etc/init.d/arcsight_services stop
    sleep 60
end script

script
    logger -s -t "arcsight-services-stopall" "Running script..."
    /etc/init.d/arcsight_services shutdown monit
    /etc/init.d/arcsight_services clean all
end script

Sei que o Upstart deveria paralelizar o processo de inicialização / parada, mas apenas paralisou minhas tentativas de depuração.

No RHEL 6, qual é a ordem definitiva dos scripts executados após a emissão: shutdown -r now ?

  1. shutdown -r now
  2. ?????
  3. /etc/init/rc.conf (Upstart)
  4. /etc/rc.d/rc (sysv-rc)
  5. ?????
  6. /etc/rc3.d/K* (sysv-rc)
  7. /etc/rc6.d/S* (sysv-rc)
  8. ?????

Onde os outros scripts /etc/init/*.conf são chamados?

ATUALIZAÇÃO: Ao dissecar /etc/rc.d/rc , descobri que, se eu touch /var/run/confirm , o processo entra em um modo interativo e, em seguida, meu sleep & comandos logger parecem executar. Isso me deixa perplexo, porque eu pensei, nesse ponto, o Upstart passou o controle para o sysv-rc.

    
por skohrs 23.12.2013 / 21:16

1 resposta

1

Embora essa resposta não resolva a ordem dos scripts que são executados durante um desligamento do RHEL 6, ela resolve o problema dos processos de eliminação do sistema antes que eles sejam interrompidos normalmente.

/etc/init/arcsight-services-stopall.conf:

# cleanup at system shutdown
# Does stop all on apps, stops monit instances, then does a clean.

start on starting rc RUNLEVEL=[016]

task
kill timeout 330

pre-start script
    logger -s -t "ArcSight" "ArcSight ESM shutdown initiated..."
    /etc/init.d/arcsight_services shutdown all
    /etc/init.d/arcsight_services shutdown monit
    /etc/init.d/arcsight_services clean all
    sleep 300
end script

script
    logger -s -t "ArcSight" "ArcSight ESM shutdown complete."
end script

A chave estava modificando start on starting rc RUNLEVEL=[016] . Ao iniciar este script enquanto /etc/init/rc.conf está apenas começando, ele bloqueia por 5 minutos, antes que os scripts sysv-rc sejam executados. Esperemos que, durante esses 5 minutos, todos os bancos de dados e aplicativos da ArcSight estejam normalmente parados. Os testes indicaram que tudo foi interrompido em 3 minutos, portanto, 5 minutos devem ser um atraso seguro.

É sempre bom ver um produto multimilionário exigir uma invasão de clientes.

    
por 26.12.2013 / 19:09

Tags