NTPサーバの冗長化

目次

NTPクライアントの冗長化設定

NTPクライアント側においても時刻同期の冗長化のための設計を行うことが重要です。

まず、複数のNTPサーバーを構成ファイル内に指定することが基本となります。

複数台のNTPサーバーを参照先として設定することで、一部のサーバーが使用できなくなった場合でも時刻同期が継続できます。

NTPクライアントの冗長化設定
また、NTPサーバーの選定では地理的分散を考慮し、異なるネットワークや拠点に設置されたサーバーを利用することで、ネットワーク障害による影響を最小限に抑えられます。

例えば、東京と大阪の2拠点でデータセンターの冗長化を行っているような企業であれば、東京のデータセンターのNTPサーバと大阪のNTPサーバを設定することで、東京側のNTPサーバに障害があったとしても時刻同期を継続できます。

今回の設定例はコストを度外視した冗長化設定になりますので、時刻同期に対してここまでの構成を取る必要があるかはシステム次第で検討が必要です。

例えば、決済業務を行うようなシステムでは、ミリ秒単位で正確な時刻が必要となりますが、バックアップサーバやファイルサーバなどでそこまで正確な時刻が必要かというと層ではありません。

最低限として、社内環境にNTPサーバを2台構築し、各サーバはその2台に向けて時刻同期するくらいが費用対効果的には十分なラインかもしれません。

NTPサーバの冗長構成と冗長化設定

NTPサーバ側での冗長化構成と冗長化設定では、以前の章で説明した「NTPプール」「ピア設定」が有効です。

NTPプールについては、「NTPプールの概念」を参照してください。

ピア設定

NTPにおけるピア設定は、同等の信頼性を持つNTPサーバー同士が相互に時刻情報を交換する仕組みを提供します。

通常のクライアント・サーバーモデルとは異なり、ピア関係にあるサーバー同士は対等な立場で時刻情報をやり取りし、それぞれが持つ時計の精度を向上させます。

NTPのピア設定
ピア設定を行うには、NTPの構成ファイル(通常は/etc/ntp.confなど)に「peer」ディレクティブを使用します。

例えば「peer 192.168.1.100」のように記述することで対向サーバーとのピア関係を確立できます。

この設定は双方のサーバーで行う必要があり、片側だけの設定では正しく機能しません。

ピア関係にあるサーバーは互いの時刻情報を評価し、それぞれが持つ時計源の精度や安定性に基づいて最適な時刻を算出します。

時刻源が複数ある方が時刻の精度が向上するため、ピアを組む複数のサーバが参照する上位のNTPサーバは異なることが推奨されます。

NTPのピア設定
また、このピアを設定していることにより、上位のNTPサーバとの通信がなんらかの原因で行えず時刻の問い合わせができない場合もピアから正確な時刻を受け取ることができます。

NTPのピアによる時間補完
これによりネットワーク内での時刻同期の冗長性が高まり、一部のサーバーが利用できなくなった場合でも時刻同期の継続性が保たれます。

NTPプールとピアの組み合わせ

NTPの冗長化構成として、ピア設定とNTPプールを組み合わせることが冗長化構成としては最適です。

この構成では、ピアによるNTP間の整合性チェックと上位NTPとの通信障害に対する耐障害性を提供します。

ピアにより耐障害性を高めた複数のNTPサーバをNTPプールとして論理的にグルーピングすることで、NTPクライアントに対して冗長機能の提供とNTPサーバの負荷分散が可能になります。

NTPプールとピアの併用
この構成ではかなりの耐障害性を持たせることが可能です。

NTPプールとピアの併用による耐障害性
ただし、デメリットとして運用コストと構築難度が高くなる点があります。

NTPサーバを複数台稼働させることによる機器コストと監視やメンテナンス作業も同様に増加します。

初期構築においても、単純なNTPサーバの構築に加えて、ピア設定、NTPプール作成などの追加作業が発生します。

このような初期構築の複雑さや運用コストの増加はあるものの、時刻同期の信頼性向上というメリットが大きく、特に時刻同期が業務クリティカルな環境では検討に値する構成と言えます。

まとめ

NTPサーバの冗長構成について解説しました。

時刻同期に関しては、クリティカルなシステムとみなされないことも多く、実環境の中でも軽視されがちです。

ただし、ひとたび問題が起きるてしまうと、時刻同期を頼っているNTPクライアント達の全員が時刻を狂わせてしまうという重要なシステムでもあります。

インフラエンジニアとしては、時刻同期についても軽視せずしっかりとした設計を心がけて行きたいですね。