CentOS 7 で chrony を利用した NTP サーバ構築

ntp と chrony について

CentOS 7 では ntp パッケージ( ntpd )も残っているものの、chrony という新しいパッケージを採用しています。個人的には chorosync と chrony クライアントの chronyc が似ていて悩ましいです。特徴としては速いというのが良い点ではないだろうか。ntpd の時刻同期はシステムに影響を与えないように徐々に時刻同期していくが、この動作はたとえば cron などによるバッチ処理などへの配慮である(一気に時刻同期するとバッチがスキップされてしまうかもしれない)とはいえ、システム起動時に時間がかかったり、仮想マシン環境などシステムクロックが不安定な環境では結局時間がずれたままで困った・・・ということにもなりかねない。この辺は用途によるのかもしれませんので従来どおり ntpd を利用するのも有りかと思います。

chrony の短所

  • NTPバージョン3までの対応である
  • RFC5096 で定義されている認証スキームに対応していない(らしい。詳しく読んではいない)
  • マルチキャスト、ブロードキャストでの同期はサポートされない

chrony の長所

  • 時刻同期速度が速くて正確
  • 大幅な時刻ずれにも適切に対応でき、特にシステムクロックが正確ではない仮想マシン環境で利用価値が高い(ntpd だと冒頭に書いたような理由で大幅に時刻がずれているような場合に調整できない)

chrony のインストール

インストールはいつもどおり。インストール後に firewall-cmd で利用するネットワーク内からの利用を許可するルールを追加します。

# yum install chrony
# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="10.1.0.0/16" service name=ntp accept'
success
# firewall-cmd --reload
success

chrony の設定

設定ファイルは /etc/chrony.conf でサーバーリストだけ変更してます。
# vi /etc/chrony.conf

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server ntp.nict.jp iburst
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst

chrony で時刻同期

# chronyc sources
506 Cannot talk to daemon

おうっ、デフォルトでサービス有効だけど起動はしないのね。

# systemctl list-unit-files -t service | grep chrony
chrony-wait.service disabled
chronyd.service enabled

# systemctl start chronyd
# chronyc sources
210 Number of sources = 4
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp-b2.nict.go.jp 1 6 17 7 -171us[ -102us] +/- 7453us
^- v157-7-235-92.z1d6.static 2 6 17 7 -1774us[-1706us] +/- 35ms
^+ 60-56-214-78f2.kns1.eonet 1 6 17 7 +58us[ +126us] +/- 12ms
^- sv2.localdomain1.com 2 6 17 7 -250us[ -250us] +/- 22ms

お、一発で * ついてる!というわけで終了です。おつかれさまでした。

雑談

ちなみに、時刻同期は相手サーバとの通信の遅延具合を計測して時間情報を補正するといった動作をしているそうですが、ネットワークが大規模になってくると、「時間を計測した時点から、その情報が相手に通知されるまでの時間」の遅延も無視できない状態になる(笑)そのため、RFC5096 で NTPv4 が制定されるなど結構バージョンアップもされているのであった。結構難しそうな計算ですな。。

NTP による時刻同期も DNS と同じように階層構造が採用されていて、その階層のことを stratum と呼んでいる。stratum 0 が最上位で最下層が stratum 16 なので stratum 16 のサーバからは時刻同期することができない。そもそも stratum 16 のサーバーって見たことがありませんが。あるところにはあるのかもしれない。

私は情報通信研究機構の公開 NTP サーバ ntp.nict.jp を利用させてもらっていますが、ここは日本標準時直結の stratum 1 です。FPGAにより全てハードウェア化されたサーバを利用することでリクエスト捌けるようになっているそうです。

スポンサーリンク

シェアする

フォローする

スポンサーリンク