RHEL6 Upstart: flujo de eventos durante el reinicio

RHEL6 Upstart: flujo de eventos durante el reinicio

Tengo una situación en la que un servidor RHEL 6.4 envía TERMseñales KILLdemasiado rápido, antes de que las aplicaciones y las bases de datos hayan tenido la oportunidad de detenerse correctamente. Parece que Upstart está entregando el control a los scripts sysv-rc prematuramente.

Para solucionar este problema, intenté agregar comandos sleepy loggeren la configuración de Upstart. La pre-scriptestrofa escribe en syslog, pero la suspensión nunca se completa porque el sistema se reinicia en 10 segundos. También agregué un kill timeoutque se ignora.

# 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

Sé que se suponía que Upstart paralelizaría el proceso de inicio/detención, pero solo ha paralizado mis intentos de depuración.

Según RHEL 6, ¿cuál es el orden definitivo de los scripts que se ejecutan después de su emisión? shutdown -r now?

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

¿Dónde se llaman los otros scripts /etc/init/*.conf?

ACTUALIZACIÓN: Al analizar /etc/rc.d/rc, descubrí que si lo hago touch /var/run/confirm, el proceso ingresa a un modo interactivo y luego mis comandos de suspensión y registro parecen ejecutarse. Esto me desconcierta, porque pensé que, en ese momento, Upstart había pasado el control a sysv-rc.

Respuesta1

Si bien esta respuesta no aborda el orden de los scripts que se ejecutan durante un apagado de RHEL 6, sí resuelve el problema del sistema que cancela los procesos antes de que se detengan correctamente.

/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

La clave fue modificar start on starting rc RUNLEVEL=[016]. Al iniciar este script mientras /etc/init/rc.confrecién se inicia, se bloquea durante 5 minutos, antes de que se ejecuten los scripts sysv-rc. Con suerte, durante esos 5 minutos, todas las bases de datos y aplicaciones de ArcSight se detendrán correctamente. Las pruebas indicaron que todo se detuvo en 3 minutos, por lo que 5 minutos debería ser un retraso seguro.

Siempre es agradable ver que un producto multimillonario requiere un truco por parte del cliente.

información relacionada