RHEL6 Upstart: 再起動時のイベントの流れ

RHEL6 Upstart: 再起動時のイベントの流れ

アプリケーションとデータベースが正常に停止する前に、RHEL 6.4 サーバーがあまりにも速く信号を送信している状況があります。Upstart が sysv-rc スクリプトに制御を早めに渡しているようTERMです。KILL

この問題を解決するために、 Upstart 構成にコマンドsleepとコマンドを追加してみました。 スタンザは syslog に書き込まれますが、システムが 10 秒以内に再起動するため、スリープは完了しません。 また、無視される も 追加しました。loggerpre-scriptkill 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?

  1. shutdown -r now
  2. ?????
  3. /etc/init/rc.conf(アップスタート)
  4. /etc/rc.d/rc(sysv-rc)
  5. ?????
  6. /etc/rc3.d/K*(sysv-rc)
  7. /etc/rc6.d/S*(sysv-rc)
  8. ?????

他の /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 分は安全な遅延であると考えられます。

数百万ドルの価値がある製品に顧客のハッキングが必要になるのは、いつもうれしいことです。

関連情報