Stoppen Sie Apache elegant beim Herunterfahren

1

Ich habe einige ec2-Instanzen in AWS, die durch eine Autoscale-Richtlinie skaliert werden. Alles ist in Ordnung, die Maschinen skalieren ganz gut auf und ab. Wir haben jedoch die Panne, dass beim Herunterskalieren der Anforderungen, die an (zu beendenden) Instanzen verarbeitet werden, diese in der Mitte verloren gehen, während die Beendigung stattfindet.

Was ich tun möchte, ist, das Abschaltsignal abzufangen und Apache zu bitten, ordnungsgemäß herunterzufahren und dann das Herunterfahren fortzusetzen.

Brij Raj Singh - MSFT
quelle

Antworten:

0

Ich habe es gefunden, es ist eine Art Hack, aber es scheint für mich zu funktionieren.

Wenn das System ein Shutdown-Signal erhält, werden die Skripte im Ordner /etc/rc0.d ausgeführt. Dies beinhaltet Skripte zum Herunterfahren aller Dienste einschließlich Apache. Falls das Herunterfahren des Skripts zu lange dauert, wird AWS ausgeschaltet. Ich weiß nicht, wie lange es zu lang ist.

Wie auch immer, so habe ich die Datei /etc/rc0.d/K09apache2 bearbeitet

Bei apache_stop Funktion 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

Ändern Sie den abrupten Stopp in einen würdevollen Stopp, und warten Sie 15 Sekunden, um sicherzustellen, dass er ordnungsgemäß stirbt.

Update - Jetzt bietet Amazon ELB das ordnungsgemäße Entfernen von Instanzen als Feature.

Brij Raj Singh - MSFT
quelle