アプリケーションとデータベースが正常に停止する前に、RHEL 6.4 サーバーがあまりにも速く信号を送信している状況があります。Upstart が sysv-rc スクリプトに制御を早めに渡しているようTERM
です。KILL
この問題を解決するために、 Upstart 構成にコマンドsleep
とコマンドを追加してみました。 スタンザは syslog に書き込まれますが、システムが 10 秒以内に再起動するため、スリープは完了しません。 また、無視される も 追加しました。logger
pre-script
kill timeout
# 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
Upstart はブート/停止プロセスを並列化することになっていることは知っていますが、デバッグの試みが麻痺するだけです。
RHEL 6 では、発行後に実行されるスクリプトの最終的な順序は何ですか。 shutdown -r now
?
shutdown -r now
?????
/etc/init/rc.conf
(アップスタート)/etc/rc.d/rc
(sysv-rc)?????
/etc/rc3.d/K*
(sysv-rc)/etc/rc6.d/S*
(sysv-rc)?????
他の /etc/init/*.conf スクリプトはどこで呼び出されますか?
更新: を解析すると/etc/rc.d/rc
、 の場合touch /var/run/confirm
、プロセスが対話モードに入り、その後 sleep および logger コマンドが実行されるようです。これは私を困惑させます。なぜなら、その時点で Upstart は sysv-rc に制御を渡したと思っていたからです。
答え1
この回答は、RHEL 6 のシャットダウン中に実行されるスクリプトの順序については触れていませんが、プロセスが正常に停止される前にシステムがプロセスを強制終了するという問題は解決します。
/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
鍵となるのは を変更することですstart on starting rc RUNLEVEL=[016]
。 の起動中にこのスクリプトを開始すると/etc/init/rc.conf
、 sysv-rc スクリプトが実行されるまで 5 分間ブロックされます。その 5 分間に、すべての ArcSight データベースとアプリケーションが正常に停止されることが期待されます。テストでは、すべてが 3 分以内に停止したことが示されたため、5 分は安全な遅延であると考えられます。
数百万ドルの価値がある製品に顧客のハッキングが必要になるのは、いつもうれしいことです。