同一个程序运行在多台服务器上时,有时需要这些服务器的时钟相同,但是当服务器运行一定时间之后,各个服务器上的时钟会有一定差异,此时就需要让所有服务器自动校准各自时钟。
NTP是一个很方便的时钟服务,可以用此来进行时钟同步。
(以下解决应用于不连接外网的局域网,需求是同步所有服务器时钟。)
1. 选定其中一台服务器192.168.10.1作为基准服务器,即提供时钟服务。
(1)首先确定ntp是否存在,若不存在则通过以下命令安装:
yum
或者使用rpm安装,下载地址:(找到Centos5的rpm包进行下载)
http://rpm.pbone.net/index.php3?stat=3&search=ntp&srodzaj=3
(2)修改配置文件/etc/ntp.conf,在其中插入:
restrict 192.168.20.0 mask 255.255.255.0 nomodify notrap
其中:
用restrict控管权限
nomodify - 用户端不能更改ntp服务器的时间参数
noquery - 用户端不能使用ntpq,ntpc等命令来查询ntp服务器
notrap - 不提供trap远端登陆
(3)此时可以向192.168.20.0的机器提供时间服务了,开启ntp服务:
/etc/rc.d/init.d/ntp start // 启动ntp服务
chkconfig ntpd on // 让ntp服务开机启动
(4)检查ntp端口是否已经开启:
netstat -unlnp
netstat -unlnp
如果正常,应该可以看到123端口已经开启。
2.客户端同步
A.ntpdate同步
(1)首先确定ntp是否存在,若不存在则通过以下命令安装:
yum
或者使用rpm安装,下载地址:(找到Centos5的rpm包进行下载)
http://rpm.pbone.net/index.php3?stat=3&search=ntp&srodzaj=3
(2)看看ntpdate是否可用
echo -ne "0 * * * * /usr/sbin/ntpdate 192.168.10.1\n" >> /var/spool/cron/root
B.ntpd服务同步
(1)修改/etc/ntp.conf,在里边插入:
server 192.168.20.91
(2)使ntpd服务开启启动
chkconfig ntpd on
(3)启动客户端ntpd服务
/etc/rc.d/init.d/ntpd start
总结:
1,推荐使用 ntpd 服务。(会要过上一段时间才能完全来同步时间)
2,ntpd开启后,无法使用ntpdate,看如下例子:
[root@zy180 ~]# service ntpd start
Starting ntpd: [ OK ]
[root@zy180 ~]# ntpdate 192.168.1.5
25 Sep 15:25:22 ntpdate[12334]: the NTP socket is in use, exiting