今からでも間に合う!うるう秒対策(2017/01/01、検証付き)

投稿者: | 2016/12/28


ほとんどの人は昨日か今日で仕事納めかと思います。私も本日で仕事納めです。
短い年末年始をゆっくり過ごしたいところですが、2017年の元日はうるう秒が挿入されるということでシステム管理者はその対応に追われていたり、当日に待機になっているのではないかと思います。

プレスリリース | 「うるう秒」挿入のお知らせ | NICT-情報通信研究機構

前回のうるう秒が2015年7月1日だったのですが、その時にも対応していました。
今回は、前回の対応があるから特に対応が不要かなと思っていたら、最近サーバをリプレイスしたり新規稼働させていたのを失念していたため、慌てて対応しました。

そんな自分みたいに慌てて対応に迫られている方もいるかもしれませんし、次にうるう秒が来た場合の備忘録も兼ねて対応方法を本記事にまとめました。
また、検証としてうるう秒を挿入させて挙動を確認してみました。

Amazon Linux

デフォルトのNTPクライアントがntpdだったので起動オプションを変更するだけで完了です。

バージョン

設定ファイル

再起動、確認

CentOS 7

CentOS 7からデフォルトのNTPクライアントはntpdからchronyに変わりました。
leapsecmodeslew に指定する必要があります。

Ubuntu 14.04 LTS

こちらもChronyが入っていたので、CentOS 7と対応方法は同じですが、インストールされているバージョンが古いため、leapsecmodeが使えません。そのため、2.1.1 にバージョンを上げます。

設定変更はCentOS 7と同じですが、設定ファイルの場所が異なるので注意が必要です。

Ubuntu 16.04 LTS

Ubuntu 14.04 LTSと同じです。また、Chronyのバージョンも2.1.1になっているのでアップデートの必要もありません。

うるう秒を検証する

うるう秒が差し込まれるとどうなるのかを実際に検証してみました。

簡易SNTPサーバをたてる

うるう秒を発生させる簡易的なSNTPサーバをたてます。
今回はAmazon Linuxでつくります。

AMI: AMI amzn-ami-hvm-2016.09.1.20161221-x86_64-gp2 (ami-9f0c67f8)

SNTPサーバのスクリプトは、Perl版SNTPサーバ うるう秒テスト用バージョン 2005.12.01からコピペして持ってきます。

このままだとタイムゾーンがUTCで不便なので、2015年うるう秒の検証方法と検証結果 (Amazon Linux, CentOS) – tkuchikiの日記からパッチを持ってきます。

シバンで指定されている-Tが使えないみたいです。
以下のような変更になりました(NICTのオリジナルスクリプトとの差分)。
また、今回のうるう秒に合わせて日時も修正しています。

タイムゾーン変更

実行

UDP 123番ポートを使うので、ntpdを止めます。また、ウェルノウンポートなのでsudoが必要です。

検証サーバ側の設定

時刻サーバの設定変更

NTPサーバの向き先を先ほどの簡易版SNTPサーバのIPアドレスに変更します。

再起動後、強制的に同期させます。

時刻推移を見るスクリプト

時刻推移を見るには、公開されているスクリプトを使った方が確認しやすいです。

結果

Stepモード

Slewモードに変更する前に検証した結果です。

08:59:59 が2回差し込まれたことが分かります。
また、Leap status を見ると、08:59:59から09:00:00あたりでNormalからInsert Secondに変わったのでLeap Indicatorを受信したようです(しばらくしてNormalに戻りました)。

Slewモード

08:59:59は1回のみ刻まれていました。
また、Leap Statusは09:00:00になる前からInsert Secondに変わっており、09:00:00を過ぎたあたりからNormalに戻りました。

最後に

うるう秒の対策および検証方法を紹介しました。何事もなく新年を迎えられるといいですね。

参考URL

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*