サーバー時刻を自動的に補正する方法
January 12, 2014
サーバー時刻はあまり正確ではなく、少しずつずれていき、年間で約10分ずれます。時刻がずれるとアプリやAIの動作に影響があるので必ず正確な時刻に補正しましょう。
今回はntpdを利用して自動的に補正します。##サーバー時刻がずれていることの問題点
サーバー時刻がずれているといろいろヤバイです
過去に自分が経験した事例としては
-
正確なログ調査ができない。
-
複数台化構成で時刻がずれてるとデータの並び替えにずれが起きる(レコードのcreate_dateをnow()ではなく、アプリ側で日付を作り登録する仕様だとこうなります。)
-
5〜10分近くずれるとAPIでエラーが起こることもある(前にRoute53で登録に失敗したことがあったような)
などなど、とにかく単にログだけではなくアプリの動作にも影響する可能性もありますので、必ず正確な時刻に合わしておく必要があります。
Chefでntpを入れよう
cookbooks/ntp/recipes/default.rb
%w{ ntp }.each do |package| package package do action :install end end
template “ntp.conf” do path “/etc/ntp.conf” owner “root” group “root” mode 0644 source “ntp.conf.erb” notifies :restart, “service[ntpd]” end
service “ntpd” do action [ :enable, :start] supports :status => true, :restart => true, :reload => true end
cookbooks/ntp/templates/default/ntp.conf.erb NTPサーバーは日本標準時刻にあわせるため、日本のサーバーを使用します。
Permit time synchronization with our time source, but do not
permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery
Permit all access over the loopback interface. This could
be tightened as well, but to do so would effect some of
the administrative functions.
restrict 127.0.0.1 restrict -6 ::1
Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
Use public servers from the pool.ntp.org project.
Please consider joining the pool (http://www.pool.ntp.org/join.html).
server -4 ntp.nict.jp server -4 ntp1.jst.mfeed.ad.jp server -4 ntp2.jst.mfeed.ad.jp server -4 ntp3.jst.mfeed.ad.jp
#broadcast 192.168.1.255 key 42 # broadcast server #broadcastclient # broadcast client #broadcast 224.0.1.1 key 42 # multicast server #multicastclient 224.0.1.1 # multicast client #manycastserver 239.255.254.254 # manycast server #manycastclient 239.255.254.254 key 42 # manycast client
Undisciplined Local Clock. This is a fake driver intended for backup
and when no outside source of synchronized time is available.
server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 10
Drift file. Put this in a directory which the daemon can write to.
No symbolic links allowed, either, since the daemon updates the file
by creating a temporary in the same directory and then rename()‘ing
it to the file.
driftfile /var/lib/ntp/drift
Key file containing the keys and key identifiers used when operating
with symmetric key cryptography.
keys /etc/ntp/keys
Specify the key identifiers which are trusted.
#trustedkey 4 8 42
Specify the key identifier to use with the ntpdc utility.
#requestkey 8
Specify the key identifier to use with the ntpq utility.
#controlkey 8
初回は手動で補正しよう
ntpdは時間がずれ過ぎているといきなり補正しないしようとのことなので、初回は手動で補正するのが早いです
/etc/rc.d/init.d/ntpd stop ntpdate ntp.nict.jp /etc/rc.d/init.d/ntpd start