2016.03.14

大規模システムにおける時刻同期について

初めまして、KDDIクラウドプラットフォームサービス(以下 KCPS) のインフラ担当 菊池康祐です。今回は、KCPSのインフラシステムで稼働する時刻同期システムに関する話題をご紹介したいと思います。

運用における時刻同期の重要性

1

正確なシステム時刻を持つことはアプリケーションの正常動作に欠かせませんが、各種アプリケーションやOSのログに、正確なタイムスタンプを記録するという点においても非常に重要な意味を持ちます。一例をご紹介します。近年のコンピューティングでは、処理を複数のサーバに分散することが一般的に行われております。この複数のサーバのログを比較確認するとき、ログを時系列で突き合わせる必要があります。この時、突き合わせの主キーの一つにタイムスタンプがあります。もし、いずれかのログのタイムスタンプが正しくなければ、ログの突き合わせを正しく行うことはできません。データセンタを運用する上で、システムクロックを正確に維持することは必須の要件となります。

KCPSにおける時刻同期システム

2

KCPSでは、お客様にご提供する仮想マシン環境の他に、システムを支える数多くのプラットフォームソフトウェアを稼働させる機器が存在しており、大規模なシステムが運用されています。システム内で稼働する機器に正確な時刻を供給するため、リージョンごとに複数のNTPサーバーを用意し、システムに時刻を供給しています。リージョンごとにNTPサーバを設定しているのは、一つにアクセスの遅延を小さくするためです。NTPのソフトウェアには、同期する時刻にアクセスの遅延を考慮する機能が備わっておりますが、時刻のズレにつながる要因は極力無くすという方針をとっています。また、遅延を少なくすることだけでなく、NTPクライアントからのアクセス負荷分散と障害時の影響範囲を小さくすることにも寄与します。他にKCPSでは安定的に時刻同期システムを運用するため、チューニングを実施しています。OS、ハイパーバイザー、ストレージ機器、ネットワーク機器などで稼働する時刻同期機能は、その仕様として、時刻同期先と自身の時刻差が大きくなると、同期を停止するという動きをします。この動きは各機器によって異なります。安定的に時刻同期システムを稼働させるには、各機器の時刻同期機能の仕様を把握し、各々に応じたチューニングをすることが大事だと言えます。例えばKCPSのNTPクライアントには以下のオプション設定を入れ、自身が参照するNTPサーバーとの同期を頻繁に行い、極力時刻差が発生しないように対策しています。

4

”うるう秒”対策

3最後に”うるう秒”について述べます。知らない方も多いと思いますが、人間が管理している時計は、数年に一度、任意のタイミングで秒間の補正が入ります。これが”うるう秒”と呼ばれるものです。長い月日経つと、人間が管理している時計と自然界での時計に差がわずかに生じ、それを補正するために”うるう秒”を足す、または引くということが行われます。最も近いところで、2015年7月1日 日本時間の午前9:00に”うるう秒”の挿入が行われました。コンピュータシステムの時刻同期にNTPを使っている場合、”うるう秒”実施の少し前から、NTPクライアントは、”うるう秒”を実施するという情報を上位のNTPサーバーから受け取り、”うるう秒”挿入のタイミングで自らのシステムクロックに”うるう秒”の調整をします。通常であればその機能により、システムは正常に稼働し続けるため、運用管理者は”うるう秒”の実施に合わせて何もする必要はありません。しかしながら実際はそううまくは行きません。前々回の2012年の”うるう秒”実施時には、OSのカーネルハングアップ、CPU利用率の急上昇、アプリケーションのハングアップが発生したという記事をWeb上で見かけます。”うるう秒”の実施により、システムクロックが突然1秒変化することにソフトウェアが対応していなかったことが予想されます。メジャーなソフトウェアについては、その時発生した不具合は修正されたと報告されており、2015年の”うるう秒”挿入時は特に何も対処は必要ないと考えられます。しかしながら、万が一システム内に”うるう秒”の処理が正常に行えないソフトウェアがあったとしても、KCPSでは不具合が発生しないように、”うるう秒”の影響を受けないようにする独自の対策を施しました。この対策では、NTPサーバとNTPクライアントの間に1秒間の時刻差が突然発生することになり、別途その対策は実施しなければならないものの、ソフトウェア不具合の発生を防ぐ確実な方法だと考えています。

さいごに

時刻同期、一見すると単純な仕組みではありますが、システムの規模が大きくなるほど、設計と運用は難しくなります。拡大し続けるKCPSを支えることは簡単ではありません。それに応えるためにも、新しい技術に積極的に挑戦し、KCPSと共に今後も進化させていきます。

カテゴリ
タグ

KDDI株式会社 プラットフォーム開発本部
プラットフォーム技術部

菊池 康祐

新着記事
タグ
アーカイブ
カテゴリー
Contact
TOP