ブロックチェーン・AI・システム開発の株式会社INDETAIL

うるう年ならぬ、うるう秒が来ます

2015.06.15
kirksencho

初めまして、こんにちは、今回からインフラ関連のブログを書くことになりました、kirksenchoです。
第一回目は、今月末に迫ったうるう秒について書きたいと思います。

うるう秒とは?

普段うるう年はよく聞くと思いますが、うるう秒はあまり聞き慣れないと思います。
一般の生活に直接は関わってきませんが、コンピュータ社会ではかなり影響の大きい問題となっています。

次回のうるう秒は、日本時間では2015年7月1日の午前9時0分ですが、協定世界時のUTCでは、6月30日と7月1日の境目に、時間が1秒挿入されます。

地球が一周する時間を24時間として私達は生活していますが、実はきっかり24時間ではなくムラもあるので、ズレが検出されると時間を足したり引いたりして調整が行われます。
このズレは、国際地球回転・基準系事業が決定します。

今までは、毎回1秒足される調整が行われてきました。

どんな影響が?

3年前の2012年7月1日の、うるう秒挿入時に事件は起きました。
一部のカーネルバージョンのLinuxサーバで、カーネルパニックや、CPU使用率の急上昇と高負荷張り付きなどが発生しました。

さくらインターネットさんでは、以下の様な発表がありました。

サーバに障害が起きてしまうと、サービスが停止してしまうという大事故に繋がりますので、対策は必須となります。

どんな対策が?

私が関わっている業務の一つに、幾つかのクラウドのインフラ構築管理があります。
その各クラウド全てで対策必須という事で色々と検討した結果、全ての対象LinuxサーバのLinuxカーネルをバージョンアップするのは非常に難しい為、ntpdとchronydを合わせた代理NTPサーバを立てて、恒久的解決を図ろうという事になりました。

その対策方法の詳細については、最近私がデビューしたQiitaのブログに記載していますので、興味のある方は参照してみてください。

さて、今回のブログで紹介したいのは、うるう秒対策を検証する為に使用した、簡易SNTPプログラムの利用方法です。

プログラムは、NICTの時空標準研究室のサイトで公開されています。

perlで書かれていますが、うるう秒を指定した時間に自由に発生させられるSNTPサーバを立てられるという便利なプログラムです。
ただ、うるう秒発生の指定方法など、割と分かりにくい感じでしたので、具体的な事例を元にご紹介したいと思います。

うるう秒テスト用SNTPサーバ

公開されているperlのソースコードは以下です。

この中で修正すべき行は以下の3行です。

1行目は以下のように修正します。

次回のうるう秒挿入は7/1なので、その一日前をUTC基準で記載します。

2行目は以下のように修正します。

実際にうるう秒が挿入される時間をUTC基準で記載します。

3行目は、実際にうるう秒を発生させたい時間が、日本時間で6/15の15時0分だった場合は、以下のように修正します。

UTCで記載するので、15時の9時間前の6時で記載します。

ここまで編集が終わったら、sntp-server.plと名前を付けて保存し、以下のコマンドで実行します。

プログラムに実行権限を追加して実行していますが、最後に&を付けてバックグラウンドジョブにしています。
こうする事によって、このコマンドを打ち込んだコンソールを引き続き別の事に使用できます。
もし&を付けていないと、プログラムを終了させるまでは、実行したコンソール画面で別のコマンドは実行できなくなります。

なお、以下のコマンドで現在バックグラウンドで動いているジョブが確認できます。

これでうるう秒を発生させる簡易SNTPサーバが立ち上がりました。
あとは検証したいサーバのntpdの設定で、簡易SNTPサーバのIPアドレスを設定し、うるう秒が来るのを待つだけです。

色々と条件を変えて、何度もうるう秒を起こさないとならないと思いますが、その場合は上記修正対象の3行目だけを変えていけばOKです。
検証したいサーバの準備もあるので、15分から20分くらいは未来の時間を指定すると良いでしょう。

おわりに

今回は、うるう秒を自由に発生させられる便利なperlプログラムの使い方について、解説してみました。
うるう秒対策が捗る助けになれば幸いです。
次回のブログはうるう秒が過ぎた後になる予定なので、後日談などがあれば掲載したいと思います。

kirksencho

主な職種:インフラエンジニア ハードからソフトまであらゆるインフラ面を担当させていただいてます。 社内では、ダーツ部、ボウリング部、フィッシャー部、肉部、スイーツ部、写真部等に所属しています。 ブログは主に地味なインフラ関連の記事を書いています。 宜しくお願いしますm(_ _)m

コメントを残す

「いいね」ボタンを押すと、最新情報をすぐに確認できます。