はじめに
例えばシステムに障害が起きた時など、ログを確認する時には日時が非常に重要です。
複数のサーバーでシステムを構成している場合、それぞれのサーバーの時刻がバラバラだと、障害時に状況の把握や原因究明の足枷となる可能性があります。
以下は、自宅で運用しているサーバーで使っている時刻合わせのスクリプトと、その設定方法です。
本番環境では負荷に耐えられるNTPサーバーを指定したり、時刻合わせの間隔を調整する必要があるので、スクリプトや設定を適宜修正する必要があると思いますが、何かの参考になれば幸いです。
使用した環境
- OS:CentOS 6.10
事前準備
- 時刻合わせに使うntpdateパッケージをインストールしておきます。
- ntpと異なり、ntpdateコマンドは「NTPサーバーとの時刻差が大きくてもエラーとならない」のが特徴です。
[root@kumotori ~]# yum install ntpdate -y
時刻合わせ用スクリプト
- 時刻合わせに使うNTPサーバーは、googleのPublic NTPサーバー(time.google.com)を指定しています。
-
/sbin/clock --systohc
は「ハードウェアクロックをシステムクロックに合わせる」という設定です。- ハードウェアクロック:マザーボード上で管理される時刻で、OSをシャットダウンしても消えませんが、マザーボード上の電池(ボタン電池)が切れると消えてしまいます。
- システムクロック:OSが管理する時刻で、OSがシャットダウンすると消えてしまいます。
ntpdate.sh
#!/bin/sh
/usr/sbin/ntpdate -s time.google.com
/sbin/clock --systohc
タイムゾーンの設定
スクリプトの配置
- 任意のフォルダに上記のスクリプトを配置しています。
- 私は
/root/scripts
というフォルダを作って、そこに上記のスクリプトを配置しています。
- 私は
- 配置した後、スクリプトに実行権限(x)を付けておきます。
- 最後に
crontab -e
で、crontabに「毎時30分に上記のスクリプトを実行する」と設定して完了です。
[root@kumotori ~]# chmod 744 /root/scripts/ntpdate.sh
[root@kumotori ~]# ls -l /root/scripts/
合計 4
-rwxr--r--. 1 root root 75 3月 10 15:48 2019 ntpdate.sh
crontab
### ntpdate.
30 * * * * /root/scripts/ntpdate.sh