2011年5月23日月曜日

EC2(CentOS)で時刻同期(NTP)

スズキです。

コチラのフォーラムでEC2の時刻同期に関して議論されていたので、
"SUZ-LAB CentOS AMI"でのNTPを利用した時刻同期を試してみました。

ただし、このAMIは、"/proc/sys/xen/independent_wallclock"が設定できるので、
この値を"0"(実はデフォルト)にすることで、
仮想サーバホストのclock(NTPで同期されている)をそのまま参照することができます。

ですので、上記設定で、NTPでの同期は必要ないといえばないと思いますが、
"/proc/sys/xen/independent_wallclock"が設定できないものもあるようなので、
そのような場合の練習もかねてです。

まずは、"/proc/sys/xen/independent_wallclock"の値を"1"にします。
(そうしないと、そもそも時刻の変更ができません)
直接書き換えてもいいのですが、設定が永続的になるように
"/etc/sysctl.conf"に下記を加えることにします。

...
# For ntpd on Xen DomU.
xen.independent_wallclock = 1

そして、次のように設定内容を反映します。

# sysctl -p
...
xen.independent_wallclock = 1

次に、NTPをインストールして、起動してみます。

# yum install -y ntp
# /etc/init.d/ntp start

すると"/var/log/messages"に下記のように出力され、起動できません。

May 23 20:23:44 suz-lab ntpd[2835]: ntpd 4.2.2p1@1.1570-o Sat Dec 19 00:58:16 UTC 2009 (1)
May 23 20:23:44 suz-lab ntpd[2836]: precision = 1.000 usec
May 23 20:23:44 suz-lab ntpd[2836]: Listening on interface wildcard, 0.0.0.0#123 Disabled
May 23 20:23:44 suz-lab ntpd[2836]: Listening on interface lo, 127.0.0.1#123 Enabled
May 23 20:23:44 suz-lab ntpd[2836]: Listening on interface eth0, 10.150.173.229#123 Enabled
May 23 20:23:44 suz-lab ntpd[2836]: kernel time sync status 0040
May 23 20:23:44 suz-lab ntpd[2836]: getaddrinfo: "::1" invalid host address, ignored
May 23 20:23:44 suz-lab ntpd[2836]: cap_set_proc() failed to drop root privileges: Operation not permitted

"::1"って記述からIPv6系の設定が悪さをしいると思い、
"/etc/ntp.conf"を下記のようにしてみました。
("restrict -6"の部分をはずしてセキュリティ関係を厳しくした感じです)

restrict default ignore
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org
server  127.127.1.0
fudge   127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift

この設定ファイルで"/etc/init.d/ntp start"すると、
"/var/log/messages"は下記のようになりました。

May 23 20:32:05 suz-lab ntpd[2890]: ntpd 4.2.2p1@1.1570-o Sat Dec 19 00:58:16 UTC 2009 (1)
May 23 20:32:05 suz-lab ntpd[2891]: precision = 1.000 usec
May 23 20:32:05 suz-lab ntpd[2891]: Listening on interface wildcard, 0.0.0.0#123 Disabled
May 23 20:32:05 suz-lab ntpd[2891]: Listening on interface lo, 127.0.0.1#123 Enabled
May 23 20:32:05 suz-lab ntpd[2891]: Listening on interface eth0, 10.150.173.229#123 Enabled
May 23 20:32:05 suz-lab ntpd[2891]: kernel time sync status 0040
May 23 20:32:06 suz-lab ntpd[2891]: cap_set_proc() failed to drop root privileges: Operation not permitted

問題は「cap_set_proc() failed to drop root privileges: Operation not permitted」ですが、
いろいろと調べてみると、コチラにあるような
カーネルモジュール(2.6.18-xenU-ec2-v1.5)の問題らしく、
解決策が見つからなかったため、下記のように"/etc/sysconfig/ntpd"を調整して逃げました。

#OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid"
OPTIONS="-x -p /var/run/ntpd.pid"
...

"-x"を指定することで、"/etc/init.d/ntp start"時に時刻同期(ntpdate)するようにもなります。
実際に"/var/log/messages"も下記のようになり、
無事、"ntpdate"と"ntpd"が機能していることがわかります。

May 23 20:37:26 suz-lab ntpdate[2952]: step time server 210.189.110.68 offset 0.001598 sec
May 23 20:37:26 suz-lab ntpd[2956]: ntpd 4.2.2p1@1.1570-o Sat Dec 19 00:58:16 UTC 2009 (1)
May 23 20:37:26 suz-lab ntpd[2957]: precision = 1.000 usec
May 23 20:37:26 suz-lab ntpd[2957]: Listening on interface wildcard, 0.0.0.0#123 Disabled
May 23 20:37:26 suz-lab ntpd[2957]: Listening on interface lo, 127.0.0.1#123 Enabled
May 23 20:37:26 suz-lab ntpd[2957]: Listening on interface eth0, 10.150.173.229#123 Enabled
May 23 20:37:26 suz-lab ntpd[2957]: kernel time sync status 0040
May 23 20:37:26 suz-lab ntpd[2957]: frequency initialized 0.000 PPM from /var/lib/ntp/drift

"/proc/sys/xen/independent_wallclock"が利用できないLinuxはNTPの設定をしなければ...
--------
http://www.suz-lab.com

0 コメント: