Help us understand the problem. What is going on with this article?

うるう秒がやってくる

More than 3 years have passed since last update.

うるう秒が近づいてきて、そわそわしているサーバ管理者のみなさま、こんにちは。
この記事は、さくらインターネット Advent Calender 2016 その2 の15日目の記事です。

今年もやってきた

来る2017年1月1日、うるう秒がやってきます。なんと元日です。
(ちなみにうるう秒が挿入される日は、1月1日か7月1日のどちらかに決まっています。)

うるう秒の挿入にあたり、さくらインターネットでは以下とおり注意喚起を行っています。
2017年1月1日の「うるう秒」挿入に際する注意喚起

本稿では、さくらインターネットで実施している対策、ならびにクライアント側でできる対策についてまとめました。

うるう秒の挿入とは

通常、59秒の次は0秒がやってきますが、59秒の次に60秒が挿入されるのがうるう秒です。

しかしLinuxでうるう秒が挿入される場合、59秒の次にまた59秒がやってきます。

8:59:58 → 8:59:59 → 8:59:59 → 9:00:00

※ただし特殊なタイムゾーン(例えばright/Asia/Tokyo)を利用すると8:59:60という時刻が刻まれます。

59秒が2度繰り返されるということは、ミリ秒単位で考えたとき、時刻が巻き戻って見えることを意味します。
※例えば 8:59:59.500 の900ミリ秒後は 8:59:59.400 となります。

ただし、この時刻の巻き戻りはクライアント側の設定で防止することができます。

NTPクライアントのslewとstepモード

NTPクライアント(ntpd)の時刻同期モードには、stepslewの2つのモードがあります。

 step : 時刻のずれが発生した場合、すぐにその時刻にあわせる
 slew : 時間を巻き戻すようなことはせず、ゆっくりと時間を調整しつつあわせる

stepモードの場合、NTPサーバより過去の時刻が通知されたとしてもそのまま時刻を合わせてしまうため、注意が必要です。
そのため、クライアント側で実施するうるう秒対策としてはslewモードで動作させるのが良いでしょう。

NTPサーバ側での対応

全てのNTPクライアントがslewモードで動作していれば影響はそんなに無いのですが、ntpdのデフォルトモードはstepのため、そうもいきません。
ということで、NTPサーバ側でも対策を行う必要があります。

leap smear

leap smearは、NTPサーバ側でうるう秒挿入に起因するトラブルを避ける技術で、ざっくり以下のような動作をします。

  • そもそもうるう秒予告は通知しない
  • うるう秒挿入によってずれた1秒は、NTPサーバ側でゆっくり追加して補正する
  • クライアントにはゆっくり補正された時刻を通知する

このような動作を行うことで、NTPサーバから通知される時刻が巻き戻ることは無くなり、仮にクライアントがstepモードであったとしても、時刻の巻き戻りが無くなります。
※しかし、あくまでもクライアント側ではslewモードとすることをおすすめします。

また、2012年のうるう秒挿入の際に発生したトラブルは、「うるう秒予告」に起因していたので、そもそも予告を通知しないこと自体が対策となり得ます。
(参考)「うるう秒」挿入実施に伴うサービスへの影響について

冒頭の注意喚起にも記載しているとおり、さくらインターネットのお客様向けに提供している ntp1.sakura.ad.jpでは、leap smearを採用し、時間をかけてゆるやかに時刻補正する仕組みを採用しています。
※実は、leap smearは2015年7月1日に挿入されたうるう秒のときから採用を続けています。

leap smearの注意点

いっけんleap smearは万能のようにも思えますが、そうともいえません。

NTPクライアントでは、複数のNTPサーバから時刻同期するように設定していた場合、その中でも信頼の高いものを採用するという動きをします。
このとき、leap smearを行うNTPサーバと、通常どおりうるう秒が挿入されるNTPサーバ両方を設定していた場合、leap smearを行うNTPサーバはゆっくり補正する都合上、1秒ずれて見えてるため、信頼性の低いNTPサーバ(falseticker)として扱われてしまいます。
falsetickerとなってしまうと、そのNTPサーバから通知された時刻が採用されることがなくなるため、うるう秒が挿入されるNTPサーバの時刻が採用されることになってしまいます。

何はともあれ、まずはクライアント側でslewモードに設定するのが良いでしょう。

まとめ

昨年、うるう秒がなくなるかも...という報道もあり期待していたのですが、結局無くならず存続が決まっています。

「うるう秒」当面存続 国際機関で決定
http://www.nikkei.com/article/DGXLASGM19H6H_Z11C15A1FF2000/

少なくとも2023年まではうるう秒の存続が決まっているので、仲良くお付き合いしていきたいです。

pitan
インフラやったりネットワークやったりアプリ書いたりする人
sakura_internet
さくらレンタルサーバ、さくらのVPS、 さくらのクラウド、さくらの専用サーバなどのインターネットサービス・ITプラットフォームを提供しています。
https://www.sakura.ad.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away