サーバー時刻を自動的に補正する方法

サーバー時刻はあまり正確ではなく、少しずつずれていき、年間で約10分ずれます。時刻がずれるとアプリやAIの動作に影響があるので必ず正確な時刻に補正しましょう。

今回はntpdを利用して自動的に補正します。

サーバー時刻がずれていることの問題点

サーバー時刻がずれているといろいろヤバイです

過去に自分が経験した事例としては

  1. 正確なログ調査ができない。
  2. 複数台化構成で時刻がずれてるとデータの並び替えにずれが起きる(レコードのcreate_dateをnow()ではなく、アプリ側で日付を作り登録する仕様だとこうなります。)
  3. 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

シェアする

  • このエントリーをはてなブックマークに追加

フォローする