logo header
logo header
logo header
logo header
  • 2015.07.30
  • インフラ技術ブログ

うるう秒が無事に過ぎました

札幌オフィス前の大通り公園では、毎年恒例のビアガーデンが絶賛営業中です。
普段はビールを飲みませんが、ドイツビールは例外で飲みに行くkirksenchoです、こんにちは。

さて、私のインフラ系ブログ二回目は、7月の頭に実施された、うるう秒挿入についての後日談等を書きたいと思います。

今回実施されたうるう秒挿入について

今回のうるう秒挿入では、特に障害の報道も無く、平和に過ぎ去ったようで何よりでした。

Linuxの生みの親のLinusさんもWIREDの記事で、大きな問題は起きないだろうと予測されていましたが、まさにその通りになったと思います。

うるう秒挿入そのものの是非について

LinusさんがWIREDの記事でも仰られていましたが、POSIX標準にはうるう秒は無く、UTCに無理に合わせて自己矛盾を発生させているから面倒なことになっています。

上記の記事を読んで、私も宇宙関係以外は、地球の自転速度のムラによる影響を考えた調整は不要じゃないかと思いました。

数年に1秒くらい太陽が登ったり沈んだりする時間がズレても、誰も気づかないと思いますし、宇宙関係以外のコンピュータ・システムには影響しないと思います。
今回の対策で四苦八苦したインフラエンジニアの一人として、いつか廃止される事を切に願います。

今回のうるう秒挿入で起きたこと

今回のうるう秒で障害もなく無事に過ぎ去ったと書きましたが、私の管理しているクラウドでは、色々と課題が発生して、NTPに関する理解が深まりました。

一番大きい課題は、1秒の時間のズレがクライアントに伝わるタイミングによって、時刻同期が止まってしまう場合があるという事でした。

その状況になると、ログに「no servers reachable」と記録されて時刻同期が止まります。
以下のredhatの公式の記事にその場合の条件等が説明されていました。

今回、上記の条件になってしまった理由としては、2台のNTPサーバにポーリングするタイミングが同時ではないので、1秒のズレが2台の間に存在する場合が起きてしまった事が挙げられます。

具体例で書きますと、以下のようにそれぞれの時刻が進んだとします。
項番 JST時間 NTP1号機 NTP2号機 概要
1  8:59:60  9:00:00   9:00:00  うるう秒発生したが、NTPサーバは無視して進む
2  9:10:00  9:10:01   9:10:01  10分くらいではまだ1秒のズレは直っていない
3  9:15:00  9:15:00   9:15:00  15分くらい進むと、1秒のズレが一気に合う

クライアントのサーバはNTP1号機と2号機の2台を参照していますが、それぞれをポーリングで見に行くタイミングはバラバラです。

1号機を項番2のタイミングでポーリングして2号機を項番3のタイミングでポーリングしたとすると、1号機と2号機から得られた時間に1秒という大きな差が生まれます。
その状態になると、上記のredhat社の情報の通り、2台の時間に大きな差があるので、時刻同期自体が停止してしまうのです。

こうなってしまったら、手動でntpdを再起動して強制的に2台を同時にポーリングさせるしかありません。
カーネルのバグでカーネルパニックやCPU過負荷になることはありませんが、時刻同期が止まってしまうので、手動で復旧させる必要が発生してしまいました。

対策は?

うるう秒挿入をやめる!

これが一番確実です。
Linusさんの言葉の通りにするのが一番いいと思いました。

うるう秒挿入直後に全サーバのntpd再起動

同時に2台のサーバにポーリングが走るので、2台の時間が同じになっていれば、問題は起きません。
クラウドだと台数が多いので大変ですが、ntpd再起動コマンドを叩くだけなら、ansible等の便利なツールがあるので、自動化すれば一発で済みます。

古いカーネルをアップデートする

これも確実ですが、非常に手間がかかります。
アップデート&再起動だけなら、ansibleでもできますが、サービス中のサーバを停止するにはサービスの提供を一時停止しないとなりません。

また新しいカーネルでの動作検証もしないとなりませんし、Fusion-IO等のデバイスドライバの再構築が必要な場合もあり得ます。

弊社の検証用社内サーバでは、まさにデバイスドライバが動かない問題が発生して対応に苦慮しました。
そのデバイスドライバ問題の対処については、私が書いているQiitaの記事に詳細がありますので、興味の有る方は参照してみてください。

おわりに

次回のうるう秒挿入は、まだ決まっていませんが、今までのペースで予測すると、2,3年後にはまた1秒挿入という事になりそうです。

それまでに、Linusさんの意見が取り入れられて、廃止されていれば良いのですが、そうでなければ、上記の対策のどれかをやることになりそうです。

うるう秒挿入の是非について、みなさんはどうお考えでしょう?
廃止の声が多くなれば、世界を動かせるかもしれませんね。

ともに世界をアップグレードできる、そんな日を夢見て。
Upgrade the World!