關閉時優雅地停止 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 提供了優雅刪除執行個體的功能。

相關內容