Linuxサーバのうるう秒対応について – 2017/1/1 0:00:00(UTC)


リンクバル技術部の川畑です。今年も残すことあと2週間となりました。良い年か迎えられるよう、サーバーリソースやログに異常がないかなど確認したり、監視設定を見直しなどに日々追われております。そして来年早々にうるう秒が「2017/1/1 0:00:00(UTC)」に挿入されるので、その対応についてまとめさせて頂きます。

うるう秒とは

  • 時間というのは1日に1から3ミリ秒ぐらいずれる
  • ±0.9秒ぐらい誤差がでると時間調整のために世界一斉に1秒挿入する
  • 調整実施日は誤差がでている場合、6月末と12月末に実施する

サーバーのうるう秒対応

リンクバルではほとんどのサーバでntpdで上位NTPサーバと時間同期をしております。この場合の対策として大きく分けて2つ考えられます。

  1. うるう秒挿入前に、ntpdをslewモードで起動する
  2. ntpdを停止する

2.の方法は年末年始は問題なく過ごせそうですが、結局どこかのタイミングで時間の補正が必要となるため、1.の対応を今年中に対応することにしました。

ntpdの同期モード

ntpdの同期モードにはstepモードとslewモードがある

  • stepモード : 上位NTPサーバに問い合わせた時間にすぐに合わせる(デフォルト)
  • slewモード : システム時間の進み方(早くしたり遅くしたり)を調整する

デフォルトがstepモードのため、うるう秒が挿入された場合に強制的に1秒戻される可能性があるためslewモードにする必要がある。

slewモード変更手順

ここからは実際の設定変更手順となります。リンクバルで使用している AmazonLinux / CentOS / Ubuntu の設定変更手順となります。

AmazonLinux / CentOS

1.パッケージ最新化
yum --releasever=latest install ntp

2.ntpd停止
service ntpd stop

3.時刻ステータスクリア
ntptime -s 0

4.slewモード設定(オプション「-x」を追加するとslewモード)
vi /etc/sysconfig/ntpd
---
NTPD_OPTS='-g -x'
---

5.ntpd起動
service ntp start

6.プロセス確認(ntpdにオプション「-x」が付与された状態で起動されているか確認)
ps aux | grep ntpd

Ubuntu

1.パッケージ最新化
apt-get update
apt-get install ntp

2.ntpd停止
service ntp stop

3.時刻ステータスクリア
ntptime -s 0 -f 0

4.slewモード設定(オプション「-x」を追加するとslewモード)
vi /etc/default/ntp
---
NTPD_OPTS='-g -x'
---

5.ntpd起動
service ntp start

6.プロセス確認(ntpdにオプション「-x」が付与された状態で起動されているか確認)
ps aux | grep ntp

ということでなんとか年内には対応完了する目処はつきました。あとは「人知を尽くして天命を待つ」といった感じで、元旦早々アラートが上がらないことを祈りながら過ごすことになりそうですが、みなさま良いお年をお過ごし下さい。

リンクバルでは エンジニアを積極募集中 です。興味のある方のご応募お待ちしております。