NTPを導入すべく、Xen上の環境(Linux)でインストール〜動作検証を行ったのですが、見事にハマりました。
そのメモを残しておくことにします。
# 仮想OS上で起こる事象の模様ですので、XenやXenベースの商用プロダクト(Virtual Ironとか。対応されていそうだけど。)を触っている方、気をつけませう。
# VMWareでも似たようなことが起こる可能性があるみたい。
Debian GNU/Linux(etch)でntp(サーバ)をインストール。まぁ普通に以下のような感じ。
# apt-get update # apt-get install ntp ntp-doc
で、次に/etc/ntpd.confの設定。
serverやrestrictのIPアドレスは適切な値を入力してください。(ここでは4つのNTPサーバとの同期を前提とし、IPアドレスはxxx.xxx.xxx.xxxにしています)
# ntpの設定については、下記のサイトにかなり詳しく載っています。ご参考まで。
# http://www.asahi-net.or.jp/~AA4T-NNGK/ntpd.html
# /etc/ntp.conf, configuration for ntpd driftfile /var/lib/ntp/ntp.drift statsdir /var/log/ntpstats/ statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable server xxx.xxx.xxx.xxx prefer iburst server xxx.xxx.xxx.xxx iburst server xxx.xxx.xxx.xxx iburst server xxx.xxx.xxx.xxx iburst restrict default ignore restrict xxx.xxx.xxx.xxx restrict xxx.xxx.xxx.xxx restrict xxx.xxx.xxx.xxx restrict xxx.xxx.xxx.xxx restrict 127.0.0.1 restrict xxx.xxx.xxx.0 mask 255.255.255.0 nomodify notrap noquery
で、サービスのリスタート(スタート)。
# /etc/init.d/ntp restart
NTPサーバでの動作確認。
# ntpq -pn remote refid st t when poll reach delay offset jitter ================================================================================== *xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx 3 u 25 128 377 0.615 -10.414 6.128 xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx 4 u 102 128 377 0.692 -8.291 9.209 xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx 4 u 18 128 377 22.656 -11.170 11.661 xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx 4 u 109 128 377 22.393 -13.528 16.404
ここまではOK。問題はココから。
次に、サーバとは別のクライアントからntpdateを使って時刻同期をやってみたところ。。。
# ntpdateは、Debianの場合、apt-get install ntpdate あたりで。
# 下のXXX.XXX.XXX.XXXは、今回構築したXen上で稼動している仮想OSのNTPサーバ。
# ntpdate -q XXX.XXX.XXX.XXX server XXX.XXX.XXX.XXX, stratum 16, offset - 0.311207, delay 0.02571 13 Jun 14:16:09 ntpdate[6741]: no server suitable for synchronization found
ずっと、この調子。デバッグモードでは、
# ntpdate -d XXX.XXX.XXX.XXX 13 Jun 14:19:51 ntpdate[6946]: ntpdate 4.2.2p4@1.1585-o Sat Oct 21 14:37:06 UTC 2006 (1) transmit(XXX.XXX.XXX.XXX) receive(XXX.XXX.XXX.XXX) transmit(XXX.XXX.XXX.XXX) receive(XXX.XXX.XXX.XXX) transmit(XXX.XXX.XXX.XXX) receive(XXX.XXX.XXX.XXX) transmit(XXX.XXX.XXX.XXX) receive(XXX.XXX.XXX.XXX) transmit(XXX.XXX.XXX.XXX) XXX.XXX.XXX.XXX: Server dropped: strata too high server XXX.XXX.XXX.XXX, port 123 stratum 16, precision -20, leap 11, trust 000 refid [XXX.XXX.XXX.XXX], delay 0.02580, dispersion 0.00003 transmitted 4, in filter 4 reference time: 00000000.00000000 Thu, Feb 7 2036 15:28:16.000 originate timestamp: ca19fcf7.12fb9eb6 Wed, Jun 13 2007 14:19:51.074 transmit timestamp: ca19fcf7.629dd7ec Wed, Jun 13 2007 14:19:51.385 filter delay: 0.02585 0.02582 0.02629 0.02580 0.00000 0.00000 0.00000 0.00000 filter offset: -0.31117 -0.31118 -0.31144 -0.31117 0.000000 0.000000 0.000000 0.000000 delay 0.02580, dispersion 0.00003 offset -0.311175 13 Jun 14:19:51 ntpdate[6946]: no server suitable for synchronization found
このような感じ。
最後に出る「no server suitable for synchronization found」を調べてみたところ、このエラーが起こるのは、
- FW等で123番ポートがフィルタされている
- NFSサーバ側でntpdが起動して間もないので時刻の同期がまだ行われていない(しばし待て)
の状況で良く起こるものらしい。
しかし、iptablesも確認したし、
冒頭で「server XXX.XXX.XXX.XXX, stratum 16, offset -0.311207, delay 0.02571」が出ているあたり、NTPサーバへの接続は出来ているらしい。
サーバ側で、/var/log/daemon.logを確認しても、「synchronized to xxx.xxx.xxx.xxx , stratum 3」と出力されている。(上位のNTPサーバと同期してるよ、と)
うーむ。
仮想ハードウェアのレイヤが怪しいなぁと思いつつ、調べていくと核心にたどりつきました。
http://ken-etsu-tech.blogspot.com/2007/05/xendomuntp.html
以下、引用。
XenのDomUでntpdやntpdateを実行すると、時刻同期できないことがある。
これは、XenがDom0からのみ時刻を更新できるというXenの仕様による。Dom0で時刻を合わせていれば、DomUも正確な時刻を得ることができるので、通常は問題にならない。
しかし、Dom0とDomU、もしくはDomUとDomUで違う時刻源に同期しなければならない場合や、ntpdの動作をXenを使って検証する場合などでは問題になる。
大ビンゴ。
が、ちゃんと制御は出来る模様。またまた引用。
この動作は、カーネルパラメータxen.independent_wallclockにより制御できる。通常、このパラメータの値は0だが、これを1にすればDomUで独自にntpdを正常に実行できる。実行途中ならば、
# sysctl xen.independent_wallclock=1
もしくは、
# echo 1 >/proc/sys/xen/independent_wallclock
のいずれかを実行する。
起動時から動作を変更するなら、/etc/sysctl.confに以下の行を追加する。
# For ntpd on Xen DomU.xen.independent_wallclock = 1
上記の設定をした後は全く問題なく動きました。ハマるわー、これ。
# ntpdate -q XXX.XXX.XXX.XXX server XXX.XXX.XXX.XXX, stratum 4, offset -0.345743, delay 0.02573 13 Jun 14:29:14 ntpdate[10395]: adjust time server XXX.XXX.XXX.XXX offset -0.345743 sec
上記は、正しい動作時のntpdate。
- 作者: David Chisnall,日本仮想化技術(株),渡邉了介
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2008/08/20
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 61回
- この商品を含むブログ (26件) を見る