NTP(Network Time Protocol)とは
相変わらず、ついついタイトルが長くなってしまいますね。
今日は、システムにおいてこっそり縁の下で力を発揮しているものの、あまり着目されていないNTPに焦点を当ててみようと思います。
以前、全体像を把握することの重要性を説きましたが、今回も同様に、NTPのあるべき姿を考えてみたいと思います。
以前の記事はこちらから
NTPの全体像とは
NTPをさっくりまとめてみると、こんな感じですね。

先ほどから、NTP、NTPと言っていますが、そもそも、NTPって何ってところをまずは解説したいと思います。
簡単に言うと、時刻を同期するための機能です。
同期?会社の同僚的な?
違います、合わせるとか、そういった意味合いですね。
改めて簡単に言うと、時刻を正確に刻ませるということですね。
ただ、正確とは?何をもって正確なの?という、私のようなひねくれ者もいるかと思います。
なので、さらに簡単に言うと、時刻のサービスを提供しているサーバの時刻と、同じ時間を刻ませる(同期させる)ということになります。
最近では、家庭内の時計も、電波時計などがはやり、正確な時刻を刻めることが増えてきているかと思います。
あれも、電波で時刻を飛ばしていて、その飛ばしている時刻と同じにしているということになります。
また、実はこっそり、携帯電話の時刻なども、ネットワーク時刻を使用するなどの設定があり、知らないうちに時刻を合わせられてしまっています。
そんな馬鹿なと思いましたか?
こういった設定があり、ネットワーク上の時刻といつの間にか同期しています。


はい、知らず知らずにNTP使用させられてましたね。
NTPは思ったより身近にいます。
なんでそんなことするの?
NTPの存在意義として、システム内の時刻を合わせるために導入します。
なぜか?
なぜだと思います?
システム内の各サーバがそれぞれ好きな時間を刻んでいた場合、どうなるか考えてみましょう。

こういった構成の場合、APサーバで障害が発生したとします。
障害が発生した場合、まずはログを見て何が発生していたのかを確認します。
その時、Webサーバ、APサーバ、DBサーバ好き勝手に時刻を刻んでいたらどうでしょうか。
5分ずつづれていたりした場合、
APサーバでは18時12分にエラーが出ているが、Webサーバでは18時12分にはエラーが出ていないが、18時17分に出ている。
けど、WebサーバのほうがAPより手前にいるから、APサーバのあとにエラーが出るのおかしくない?
え?何が起こっているの?
となってしまいます。
なので、NTPという機能を使用して、時刻を同期(システム内で共通の時刻を刻む)して、同じ時間になるよう設定が必要となります。
NTPの必要性がお分かりになりましたでしょうか。
改めてNTPの大切さを知る
改めて、NTPの大切さがわかっていただけましたでしょうか。

NTPサーバというサーバは、インターネットから時刻を持ってきて、システム内のWebサーバや、APサーバなどにその時刻を教えてあげます。
NTPサーバはインターネットから時刻を持ってこず、NTPサーバが「俺が時刻だ!みんな従え!!」とする構成もあったりします。
その場合は、インターネットに出ることなく、NTPサーバで設定されている時刻にみんな右倣えで従うことになります。
AWS環境においては、「169.254.169.123」を設定するだけでよく、わざわざシステム内にNTPサーバの役割を持つサーバを立てる必要がなくなったのは地味だけど画期的でした。
※しかも、第4オクテットが123って、マジでハンパない。
NTPを導入するにあたり、ntpdというものがありましたが、近年では、chronyというものが主流になりつつあります。
ntpdとchronyの違いに関しては別の機会にまとめたいと思います。
なぜ、そんなに熱いのか
私がもともと、インフラエンジニアになった際に、テストの証跡(何をしたのかという結果を残すこと)をとる際に、必ず、「hostname」、「date」、「ntpq -p」を打ち、ログを残してからテストを開始するというルールになっていました。
その際に、ホストネーム、デート、エヌテーピーキューピーと発音してみると、なんか面白くないですか?
ホストの名前、ホストって繁華街にいるホスト?
デート?ホストとデート?
ピー、キューピーって発音がおもろい。
なんか、NTPというものに愛着のようなものがわいたことを思い出します。
その後、FTPやRDPなどいろいろなプロトコルと出会いますが、やはりNTPは特別な気がします。
まずは、小さい好きを見つけると、一気に興味がわくと思いますので、ぜひインフラ業務をする中で、これなんか好きというものを見つけてみると成長につながると思います。