Armadilloフォーラム

ntpサーバーとの同期方法

k_o

2024年1月5日 9時17分

お世話になっております。

armadilloのローカル環境上にntpサーバー(windows)を構築致しました。
ntpサーバー構築は下記URLを参考に行っております。
https://isecj.jp/manual/recorder/faq04-ntp/

armadilloから定期的(数時間間隔)に、ntpサーバーに同期する方法を教えていただけないでしょうか?

また、もしわかれば同期成功の有無の確認方法までご教授いただけると幸いです。

コメント

k_o

2024年1月12日 11時13分

お世話になっております。
いろいろ試してみたのですが下記を実施しました。

vi /etc/chrony/chrony.conf

server 192.168.13.30 iburst
maxdistance 16.0
#192.168.13.30はntpサーバーのipアドレス

persist_file /etc/chrony/chrony.conf

そしてarmadilloを再起動したところ
ntpサーバーの時刻と同期することができました。

ただ再起動後、ntpサーバーの時刻を更新した場合、
数時間まってもarmadilloの時刻が更新されませんでした。

定期的同期ができてないと思います。
定期同期するやり方をご存じでしたら教えていただけないでしょうか?

k_o

2024年1月16日 11時18分

お世話になっております。

上記いかがでしょうか?

お忙しい中大変恐縮ですが、ご回答のほどお願い致します。

at_dominique.m…

2024年1月16日 12時25分

k_o さん、

横からすみません、
マルティネです。

> ただ再起動後、ntpサーバーの時刻を更新した場合、
> 数時間まってもarmadilloの時刻が更新されませんでした。

chronyc sources, chronyc tracking で状況を確認してもらえますか。

/etc/chrony/chrony.conf を直接に編集したように見えますが、 confdir の設定を残した場合は /lib/chrony.conf.d/servers.conf からの pool.ntp.org のサーバーが残っている可能性もあります。その場合は時間がおかしいサーバーが無視されています。
(また、BaseOS の更新の際にファイルが更新されますので、persist_file -P で /etc/swupdate_preserve_files に POST で追加するか、マニュアルどおりに は /etc/chrony/conf.d/servers.conf に設定してください。/etc に servers.conf ファイルを生成することで /lib にあるファイルが読まれなくなります。分かりにくい仕様になっていてすみません。)

他のサーバーが残ってない場合でも、chrony の仕様としては jump しないで clock のスピードをはやつることで差に追いつこうとしていると思います。
chrony のデフォルトの設定ではまったく jump しません、ABOS でのデフォルト( /lib/chrony.conf.d/defaults.conf) では 「makestep 1 3」の設定で、最初の三つのアップデートだけで差が一秒を越えていた場合に jump します。

いずれにしても chronyc tracking でわかると思いますので、提供していただければ説明します。

よろしくお願いします。

k_o

2024年1月16日 13時38分

マルティネ様
お世話になっております。
ご教授ありがとうございます。

chronyc trackingを実行した結果を送付すればよろしいでしょうか?

chronyc trackingを実行するタイミングはarmadillo再起動後、

ntpサーバーと時刻同期した後、実行すればよいでしょうか?

at_dominique.m…

2024年1月16日 14時45分

k_oさん、

マルティネです。

> chronyc trackingを実行した結果を送付すればよろしいでしょうか?
>
> chronyc trackingを実行するタイミングはarmadillo再起動後、
> ntpサーバーと時刻同期した後、実行すればよいでしょうか?

「chronyc sources」と「chronyc tracking」の両方のコマンドの出力をお願いします。ホスト名/IPアドレスを削除しても構いません。

実行するタイミングですが、通常時で実行しても設定ファイルを確認できますが、せっかく問題(ntpサーバーの時間を変更しても反映されない)があるそうなので時間が充分同期できたはずのところに同期されてない時に実行していただけたらと思います。

具体的に、Armadillo 再起動直後に ntp サーバーへのアクセスが多いですが、時間が急に変わることは想定されてないので一時間ぐらい放置して状況がわかるようになってくると思います。

よろしくお願いします。

k_o

2024年1月16日 17時29分

お世話になっております。

コマンド実行した結果添付致します。

下記手順で確認を行いました。

①ntpサーバーの時刻変更
 現在時刻:2024/01/16 15:47、変更時刻:2024/01/15 14:47
②armadillo再起動
③時刻同期できていることを確認
④ntpサーバーの時刻変更
 変更時刻:2024/01/16 22:30
⑤約1時間待機
⑥chronyc sourcesとchronyc trackingを実行

お手数ですが、ご確認をお願いします。

ファイル ファイルの説明
コマンド実行ログ.txt

at_dominique.m…

2024年1月16日 17時57分

> ①ntpサーバーの時刻変更
>  現在時刻:2024/01/16 15:47、変更時刻:2024/01/15 14:47
> ②armadillo再起動
> ③時刻同期できていることを確認
> ④ntpサーバーの時刻変更
>  変更時刻:2024/01/16 22:30
> ⑤約1時間待機
> ⑥chronyc sourcesとchronyc trackingを実行

説明とログありがとうございます。

分かりにくいですが、chronyc sources で理由が分かりました:左の S 桁(ログでは「~」)はサーバーが無視されていることを意味します:
> ~ indicates a source whose time appears to have too much variability.

「chronyc selectdata」コマンドでもうちょっと詳細が表示されるはずですが、時間が急に変わると何かおかしいと判断して、時間を修正しようとしてないみたいです。

頭よすぎてテストしにくいですね…

よろしくお願いします。

k_o

2024年1月16日 18時18分

お世話になっております。

解析ありがとうございます。

我々がやりたいこと(定期的な時刻同期)は可能なのでしょうか?

可能な場合はやり方ご教授をお願いします。

at_dominique.m…

2024年1月17日 13時55分

k_oさん

マルティネです。

> 我々がやりたいこと(定期的な時刻同期)は可能なのでしょうか?

すみません、私が何か勘違いしていると思いますので、「定期的な時刻同期」について確認させてください。
先日のテスト(ntp サーバー側で日付の変更)は ntp を確認するための手段だと思ってましたが、そのサーバーで本当に定期的に時間が大きくずれることがありますか?

通常の場合は少しずれることぐらいで、対象から外されることがないので、armadillo の時間が「飛ぶ」ことなく、細かいずれは常に直されます。今の設定でそれがすでにできてます(デフォルトは最大512秒毎にサーバーに時間を確認します)。

ntp サーバーで時間が大きくずれる場合は、armadillo側にいくつかの設定を適用してテストできます:

armadillo:~# cat /etc/chrony/conf.d/servers.conf 
# iburst で chronyd 起動時に早いペースで時間を取得する
server 192.168.13.30 iburst
# サーバーの時間が100時間ずれても外さないことにする
# 確認したところ設定しなくてもいいらしいですが、設定しないとサーバーが再び信用されるまで1-2時間かかります
maxjitter 360000
maxdistance 360000
# サーバーとの時間差が1秒以上の場合に時間を急に設定する
# makestep 1 -1

makestep は有効の場合に試して、サーバーに時間を変更した再に数分で時間が設定されます(makestep でも、ntp タイムは前の数サンプルの平均なので8時間差で試した時に1分毎に1時間の差で直してくれました。差が大きければ大きいほどスキップされます)

makestep 無しでは、時間を急に変更できないのでクロックのペースをちょっと変更するだけの対応になります。
サーバーで時間を戻して試したところ、(現実の)1分の間に armadillo のクロックが56秒ぐらい進んでいますので、時刻が1時間ずれた場合は15時間ぐらいで修正されるはずです。
「遅い!」と感じてるかもしれませんが、通常にありえない差なので問題ないですし、makestep を使う場合は時刻が戻ることもありますのでアプリやログの時間なども分かりにくくなります。

なので、ntp サーバーが怪しい動きしなければ、デフォルトの設定で「server x.y.z.t iburst」だけの設定を推奨しています。

よろしくお願いします。

k_o

2024年1月17日 18時37分

お世話になっております。

私のほうも、いろいろ勘違いしておりました。

要するに急激に我々が試験で行ったようにntpサーバーの時刻を急激に変更しない限り
定期的に同期するということですね。

確かに時刻を変更せず、
chronyc sourcesを実行すると、定期的に値が変わっているので
定期同期できていると思われます。

お手数おかけしました。