シャットダウン時にApacheを正常に停止する

シャットダウン時にApacheを正常に停止する

AWS で実行されている ec2 インスタンスがいくつかあり、これらは自動スケール ポリシーによってスケールアップおよびスケールダウンされています。マシンのスケールアップとスケールダウンは問題なく行われています。ただし、スケールダウンすると、終了するインスタンスで処理されているリクエストが、終了中に途中で失われるという問題があります。

私がやりたいのは、シャットダウン信号をキャッチし、Apache に正常なシャットダウンを要求し、その後シャットダウンを続行することです。

答え1

私はそれを見つけました。それは一種のハックですが、私の場合はうまく機能しているようです。

システムがシャットダウン信号を受信すると、/etc/rc0.d フォルダー内のスクリプトが実行されます。これには、Apache を含むすべてのサービスをシャットダウンするスクリプトが含まれます。スクリプトのシャットダウンに時間がかかりすぎる場合は、AWS の電源がオフになりますが、どれくらいの時間が長すぎるのかはわかりません。

とにかく、私がやったことは、/etc/rc0.d/K09apache2ファイルを編集したことです

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

突然の停止を正常な停止に変更し、正常に終了するように 15 秒間スリープさせます。

更新 - 現在、Amazon ELB はインスタンスの正常な削除を機能として提供しています。

関連情報