サーバーの管理について少し学ぶために、個人のWebサイトを実行する単純なUbuntu 14.04サーバーをセットアップしました。セキュリティ更新プログラムを自動的にインストールするように設定しましたが、他の更新プログラムは除外します。これはかなりうまくいくようです。サーバーに(sshで)ログインすると、次のようなメッセージが表示されることがあります。
*** System restart required ***
これが起こったとき、私はUbuntuを単純に再起動しましたが、すべてうまくいきました。これはシンプルな個人用Webサイトなので問題ありません。しかし、私が疑問に思っているのは、これが時間の99.9999etc%であるはずのWebサーバーに対してどのように機能するのでしょうか。彼らは単に再起動せず、セキュリティ更新プログラムがインストールされていないためにセキュリティが侵害される危険を冒しているのでしょうか(想像できませんが)。または、彼らは当然のことながらダウンタイムをとっていますか?
これが私が稼働し続けたい非常に重要な本番サーバーである場合、これをどのように処理すればよいですか?すべてのヒントは大歓迎です!
[編集]できることがわかっているcat /var/run/reboot-required.pkgs
再起動を引き起こすパッケージを一覧表示します。このコマンドは現在、次のようになります。
linux-image-3.13.0-36-generic
linux-base
dbus
linux-image-extra-3.13.0-36-generic
linux-base
しかし、再起動を行わなかった場合に深刻なセキュリティの脆弱性があるかどうかについて、更新が小さなものであるかどうかをどのようにして知ることができますか?
[編集2]さて、便利なコマンドを1つにまとめました。
xargs aptitude changelog < /var/run/reboot-required.pkgs | grep urgency=high
これで何も出力されない場合、緊急性の高いセキュリティの問題はないようです。
最後の質問ですが、low
、medium
、およびhigh
が緊急性の唯一の可能性です。または、たとえばcritical
やextremelyimportant
?
これは、行われた更新に依存するため、単純な答えではありません。カーネルに深刻なセキュリティ問題があった場合は、できるだけ早く再起動することをお勧めします。カーネルに小さな修正しかなかった場合は、再起動が延期される可能性があります。
99.9%を超える可用性が保証されている場合は、ほとんどの場合、サービスを中断せずにノードを1つずつ再起動できるクラスター化システムがあります。
したがって、最初のシステムを再起動して、クラスターに再接続します。次に2番目のように続きます。その後、サービスは利用できなくなります。
トピックソリューションのアドオン
Zabbix監視システムの「再起動要件」について同様のチェックを実行します
「トピック」ソリューションに2つの問題がある:
私の論理は:
Debianドキュメント を使用すると、 'urgency'に5つの可能な値が見つかり、equal( "=")またはセミコロン( ":")文字が後に続く可能性があることもわかりました。また、大文字と小文字を含めることができます
したがって、私は次のようになりました:
#!/bin/bash
##################################
# Zabbix monitoring script
#
# Checking urgency in changelog
# for updates which require system restart
#
##################################
# Contact:
# [email protected]
##################################
# ChangeLog:
# 20151205 initial creation
# 20151208 check uniq packages only
##################################
case "$1" in
status)
if [ -f /var/run/reboot-required ]; then
echo 1
else
echo 0
fi
;;
urgency)
if [ -f /var/run/reboot-required.pkgs ]; then
while read pkg; do
tmp=`/usr/bin/apt-get changelog $pkg | \
/bin/grep -m1 -ioP '(?<=[Uu]rgency[=:])(low|medium|high|emergency|critical)' | \
tr '[:upper:]' '[:lower:]'`
if [ -n $tmp ]; then
if [ "$tmp" == "low" ] && \
[ "$urgency" != "medium" ] && \
[ "$urgency" != "high" ] && \
[ "$urgency" != "emergency" ] && \
[ "$urgency" != "critical" ]; then
urgency=low
Elif [ "$tmp" == "medium" ] && \
[ "$urgency" != "high" ] && \
[ "$urgency" != "emergency" ] && \
[ "$urgency" != "critical" ]; then
urgency=medium
Elif [ "$tmp" == "high" ] && \
[ "$urgency" != "emergency" ] && \
[ "$urgency" != "critical" ]; then
urgency=high
Elif [ "$tmp" == "emergency" ] && \
[ "$urgency" != "critical" ]; then
urgency=emergency
Elif [ "$tmp" == "critical" ]; then
urgency=critical
break
fi
fi
done < <(sort -u /run/reboot-required.pkgs)
else
urgency=none
fi
case "$urgency" in
none) urgency=0 ;;
low) urgency=1 ;;
medium) urgency=2 ;;
high) urgency=3 ;;
emergency) urgency=4 ;;
critical) urgency=5 ;;
*) urgency=42 ;;
esac
echo $urgency
;;
esac
exit 0
結果として:
reboot_required_check.sh status
は、再起動が必要な場合は1を、必要でない場合は0を返します。reboot_required_check.sh urgency
は、最も高い「緊急度」レベル、または再起動が不要な場合は「0」を返しますそれが誰かが時間を節約するのに役立つことを願っています;)
しかし、私が疑問に思っているのは、これが時間の99.9999etc%であるはずのWebサーバーに対してどのように機能するのでしょうか。彼らは単に再起動せず、セキュリティ更新プログラムがインストールされていないためにセキュリティが侵害される危険を冒しているのでしょうか(想像できませんが)。あるいは、彼らはダウンタイムを当然のことと思っていますか(私は想像もできません)?
*システムの再起動が必要*がセキュリティ上の理由で表示された場合、大きなWebサーバーが再起動されます。
しかし、これはユーザーには透過的であり、大きなサーバーが2つまたは3つのサーバーを実行して、まったく同じファイルを格納し、同じサイトを表示するため、サイトがダウンすることはありません。最初の1つはメインサーバーですが、他の2つはセカンダリであり、メインサーバーがダウンしている場合にのみ使用されます。