以后也懒的翻其他人的了
转自
http://blog.chinaunix.net/uid-26557245-id-3270600.html
-
配置服务器端:
-
-
1). 架设一个NTP Relay Server其实非常简单,我们先把需要的RPM包装上
-
-
# rpm -ivh ntp-4.2.2p1-5.el5.rpm
-
-
2).找到在互联网上给我们提供同步服务的NTP Server ,是NTP的官方网站,在这上面我们可以找到离我们城市最近的NTP Server. NTP建议我们为了保障时间的准确性,最少找两个个NTP Server
-
那么比如在英国的话就可以选择下面两个服务器
-
0.uk.pool.ntp.org
-
1.uk.pool.ntp.org
-
它的一般格式都是number.country.pool.ntp.org
-
-
中国的ntp服务器地址:
-
-
server 133.100.11.8 prefer
-
server 210.72.145.44
-
server 203.117.180.36
-
server 131.107.1.10
-
server time.asia.apple.com
-
server 64.236.96.53
-
server 130.149.17.21
-
server 66.92.68.246
-
server
-
server 18.145.0.30
-
server clock.via.net
-
server 137.92.140.80
-
server 133.100.9.2
-
server 128.118.46.3
-
server ntp.nasa.gov
-
server 129.7.1.66
-
server ntp-sop.inria.fr
-
-
server (国家授时中心服务器IP地址)
-
-
-
3).在打开NTP服务器之前先和这些服务器做一个同步,使得我们机器的时间尽量接近标准时间. 这里我们可以用ntpdate命令
-
-
# ntpdate 0.uk.pool.ntp.org
-
6 Jul 01:21:49 ntpdate[4528]: step time server 213.222.193.35 offset -38908.575181 sec
-
# ntpdate 0.pool.ntp.org
-
6 Jul 01:21:56 ntpdate[4530]: adjust time server 213.222.193.35 offset -0.000065 sec
-
-
假如你的时间差的很离谱的话第一次会看到调整的幅度比较大,所以保险起见可以运行两次. 那么为什么在打开NTP服务之前先要手动运行同步呢?
-
1. 因为根据NTP的设置,如果你的系统时间比正确时间要快的话那么NTP是不会帮你调整的,所以要么你把时间设置回去,要么先做一个手动同步
-
2. 当你的时间设置和NTP服务器的时间相差很大的时候,NTP会花上较长一段时间进行调整.所以手动同步可以减少这段时间
-
-
5. 配置和运行NTP Server
-
现在我们就来创建NTP的配置文件了, 它就是/etc/ntp.conf. 我们只需要加入上面的NTP Server和一个driftfile就可以了
-
-
# vi /etc/ntp.conf
-
server 0.uk.pool.ntp.org
-
server 1.uk.pool.ntp.org
-
driftfile /var/lib/ntp/ntp.drift
-
-
非常的简单. 接下来我们就启动NTP Server,并且设置其在开机后自动运行
-
-
# /etc/init.d/ntpd start
-
# chkconfig --level 35 ntpd on
-
-
-
6. 查看NTP服务的运行状况
-
现在我们已经启动了NTP的服务,但是我们的系统时间到底和服务器同步了没有呢? 为此NTP提供了一个很好的查看工具: ntpq (NTP query)
-
我建议大家在打开NTP服务器后就可以运行ntpq命令来监测服务器的运行.这里我们可以使用watch命令来查看一段时间内服务器各项数值的变化
-
-
# watch ntpq -p
-
Every 2.0s: ntpq -p Sat Jul 7 00:41:45 2007
-
remote refid st t when poll reach delay offset jitter
-
==============================================================================
-
+193.60.199.75 193.62.22.98 2 u 52 64 377 8.578 10.203 289.032
-
*mozart.musicbox 192.5.41.41 2 u 54 64 377 19.301 -60.218 292.411
-
-
现在我就来解释一下其中的含义
-
remote: 它指的就是本地机器所连接的远程NTP服务器
-
refid: 它指的是给远程服务器(e.g. 193.60.199.75)提供时间同步的服务器
-
st: 远程服务器的级别. 由于NTP是层型结构,有顶端的服务器,多层的Relay Server再到客户端. 所以服务器从高到低级别可以设定为1-16. 为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器的.
-
t: 这个.....我也不知道啥意思^_^
-
when: 我个人把它理解为一个计时器用来告诉我们还有多久本地机器就需要和远程服务器进行一次时间同步
-
poll: 本地机和远程服务器多少时间进行一次同步(单位为秒). 在一开始运行NTP的时候这个poll值会比较小,那样和服务器同步的频率也就增加了,可以尽快调整到正确的时间范围.之后poll值会逐渐增大,同步的频率也就会相应减小
-
reach: 这是一个八进制值,用来测试能否和服务器连接.每成功连接一次它的值就会增加
-
delay: 从本地机发送同步要求到服务器的round trip time
-
offset: 这是个最关键的值, 它告诉了我们本地机和服务器之间的时间差别. offset越接近于0,我们就和服务器的时间越接近
-
jitter: 这是一个用来做统计的值. 它统计了在特定个连续的连接数里offset的分布情况. 简单地说这个数值的绝对值越小我们和服务器的时间就越精确
-
那么大家细心的话就会发现两个问题: 第一我们连接的是0.uk.pool.ntp.org为什么和remote server不一样? 第二那个最前面的+和*都是什么意思呢?
-
第一个问题不难理解,因为NTP提供给我们的是一个cluster server所以每次连接的得到的服务器都有可能是不一样.同样这也告诉我们了在指定NTP Server的时候应该使用hostname而不是IP
-
第二个问题和第一个相关,既然有这么多的服务器就是为了在发生问题的时候其他的服务器还可以正常地给我们提供服务.那么如何知道这些服务器的状态呢? 这就是第一个记号会告诉我们的信息
-
*
-
它告诉我们远端的服务器已经被确认为我们的主NTP Server,我们系统的时间将由这台机器所提供
-
+
-
它将作为辅助的NTP Server和带有*号的服务器一起为我们提供同步服务. 当*号服务器不可用时它就可以接管
-
-
-
远程服务器被clustering algorithm认为是不合格的NTP Server
-
x
-
远程服务器不可用
-
了解这些之后我们就可以实时监测我们系统的时间同步状况了
-
-
7. NTP安全设置
-
运行一个NTP Server不需要占用很多的系统资源,所以也不用专门配置独立的服务器,就可以给许多client提供时间同步服务, 但是一些基本的安全设置还是很有必要的
-
那么这里一个很简单的思路就是第一我们只允许局域网内一部分的用户连接到我们的服务器. 第二个就是这些client不能修改我们服务器上的时间
-
在/etc/ntp.conf文件中我们可以用restrict关键字来配置上面的要求
-
首先我们对于默认的client拒绝所有的操作
-
-
restrict default kod nomodify notrap nopeer noquery
-
然后允许本机地址一切的操作
-
-
restrict 127.0.0.1
-
最后我们允许局域网内所有client连接到这台服务器同步时间.但是拒绝让他们修改服务器上的时间
-
-
restrict 192.168.1.0 mask 255.255.255.0 nomodify
-
把这三条加入到/etc/ntp.conf中就完成了我们的简单配置. NTP还可以用key来做authenticaiton,这里就不详细介绍了
-
-
8. NTP client的设置
-
做到这里我们已经有了一台自己的Relay Server.如果我们想让局域网内的其他client都进行时间同步的话那么我们就都应该照样再搭建一台Relay Server,然后把所有的client都指向这两台服务器(注意不要把所有的client都指向Internet上的服务器). 只要在client的ntp.conf加上这你自己的服务器就可以了
-
-
代码:
-
server ntp1.leonard.com
-
server ntp2.leonard.com
-
server 10.1.0.41
-
9. 一些补充和拾遗
-
1. 配置文件中的driftfile是什么?
-
我们每一个system clock的频率都有小小的误差,这个就是为什么机器运行一段时间后会不精确. NTP会自动来监测我们时钟的误差值并予以调整.但问题是这是一个冗长的过程,所以它会把记录下来的误差先写入driftfile.这样即使你重新开机以后之前的计算结果也就不会丢失了
-
2. 如何同步硬件时钟?
-
NTP一般只会同步system clock. 但是如果我们也要同步RTC的话那么只需要把下面的选项打开就可以了
-
-
可以通过ps –ef |grep ntp或者使用pgrep –lf ntp查看一下你的ntp服务是否启动了。然后可以通过snoop命令进行ntp的检测。
-
Snoop |grep –i ntp进行检测。
-
在建立好ntp服务以后,可以用2个工具命令对ntp服务进行管理。
-
一个是ntpq是一个交互式应用命令,在它的下面有很多的子命令可以供大家使用.使用peers可以查看同步进程。如果还需要其他的命令可以输入help 进行查看。还有一个工具命令是ntpdate这个命令一般用于ntp的客户端使用。可以在/var/adm/messages中看到ntp的同步信息的情况。如果需要更加详细的ntpq和ntpdate的信息可以使用man帮助进行查询。
-
-
------------------------------------------------------------------------------------------
-
常见的问题:ntp提示Temporary failure in name resolution failed
-
最近公司服务器上新加了服务器与外网NTP服务器同步的监控,大部分都是正常的,只有一组一直报警Temporary failure in name resolution failed ,找了半天问题,也从其他正常服务器上拉了相同的配置文件过来,ntp服务也重启了几次,但是只要执行ntpq -p就报上述错误。最后还是用ntpstat发现了问题。原来是ntp.conf里定义的第一行就是127.0.0.1,恰好这台机器的hosts文件没指定127.0.0.1为localhost,所以执行才会报错了。修改hosts,重启ntpd服务器,ntpq -p。一切OK了!
阅读(1189) | 评论(0) | 转发(0) |