时间服务器ntpd 启动和调试

2018-12-13 0 By admin

Linux 系统部署 ntpd 时间服务过程中参数详解和bug调试。接上文

一、启动参数

-x 设置使用微调的方式校正时间。当时间误差小于128ms或者大于600s时,这个参数不生效;-x校正时间很慢600s的时间需要14天才能校正过来。
-g Normally, ntpd exits if the offset exceeds the sanity limit, which is 1000 s by default. If the sanity limit is set to zero, no sanity checking is performed and any offset is acceptable. This option overrides the limit and allows the time to be set to any value without restriction; however, this can happen only once. After that, ntpd will exit if the limit is exceeded. This option can be used with the -q option。
当时间误差大于1000s时,ntpd将退出。使用-g命令可以忽略这个阀值。

二、调试参数

ntpq -p Fri May 27 14:06:57 2011
remote refid st t when poll reach delay offset jitter
==============================================================================
Hshh.org 209.81.9.7 2 u 35 64 7 103.838 361.111 87.482
time.uni.net.th 202.28.214.2 2 u 98 64 6 450.107 343.325 137.580
LOCAL(0) .LOCL. 10 l 31 64 7 0.000 0.000 0.001

1、输出参数说明

remote: 它指的就是本地机器所连接的远程NTP服务器
refid: 它指的是参考的上一层NTP主机的地址
st: 远程服务器的级别. 由于NTP是层型结构,有顶端的服务器,多层的Relay Server再到客户端. 所以服务器从高到低级别可以设定为1-16. 为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器的.
when: 用做计时,用来告诉我们还有多久本地机器就需要和远程服务器进行一次时间同步
poll: 本地机和远程服务器多少时间进行一次同步(单位为秒). 在一开始运行NTP的时候这个poll值会比较小,那样和服务器同步的频率也就增加了,可以尽快调整到正确的时间范围.之后poll值会逐渐增大,同步的频率也就会相应减小
reach: 这是一个八进制值,表示已经向上层NTP伺服器要求更新的次数。每成功连接一次它的值就会增加。
delay: 网路传输过程当中延迟的时间,单位为 10^(-6) 秒
offset: 这是个最关键的值, 它告诉了我们本地机和服务器之间的时间差别. offset越接近于0,我们就和服务器的时间越接近。单位为10^(-3)秒
jitter: Linux系统时间与BIOS硬件时间的差异时间,单位为10^(-6)秒。简单地说这个数值的绝对值越小我们和服务器的时间就越精确。

三、补充

那么大家细心的话就会发现两个问题:
第一我们连接的是1.cn.pool.ntp.org为什么和remote server不一样?
第二那个最前面的+和*都是什么意思呢?
第一个问题是因为NTP提供给我们的是一个cluster server所以每次连接的得到的服务器都有可能是不一样.同样这也告诉我们了在指定NTP Server的时候应该使用hostname而不是IP
第二个问题和第一个相关,既然有这么多的服务器就是为了在发生问题的时候其他的服务器还可以正常地给我们提供服务.那么如何知道这些服务器的状态呢? 这就是第一个记号会告诉我们的信息
*
它告诉我们远端的服务器已经被确认为我们的主NTP Server,我们系统的时间将由这台机器所提供
+
它将作为辅助的NTP Server和带有*号的服务器一起为我们提供同步服务. 当*号服务器不可用时它就可以接管

远程服务器被clustering algorithm认为是不合格的NTP Server
x
远程服务器不可用

四、错误

在ntp客户端运行ntpdate serverIP,出现no server suitable for synchronization found的错误。
在ntp客户端用ntpdate –d serverIP查看,发现有“Server dropped: strata too high”的错误,并且显示“stratum 16”。而正常情况下stratum这个值得范围是“0~15”。
以下的定义是让NTP Server和其自身保持同步,如果在ntp.conf中定义的server都不可用时,将使用local时间作为ntp服务提供给ntp客户端。
server 127.127.1.0
fudge 127.127.1.0 stratum 8

在ntp server上重新启动ntp服务后,ntp server自身或者与其server的同步的需要一个时间段,这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令时会产生no server suitable for synchronization found的错误。

五、NTPD 服务安装脚本

#bin/bash
yum install -y ntp
sed -i -e '/server 3.centos.pool.ntp.org iburst/a\\nserver 192.168.3.5' /etc/ntp.conf
sed -i 's%OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g"%OPTIONS="-u ntp:ntp -x -p /var/run/ntpd.pid -g"%' /etc/sysconfig/ntpd
sed -i 's%server 0.centos.pool.ntp.org iburst%#server 0.centos.pool.ntp.org iburst%' /etc/ntp.conf
sed -i 's%server 1.centos.pool.ntp.org iburst%#server 0.centos.pool.ntp.org iburst%' /etc/ntp.conf
sed -i 's%server 2.centos.pool.ntp.org iburst%#server 0.centos.pool.ntp.org iburst%' /etc/ntp.conf
sed -i 's%server 3.centos.pool.ntp.org iburst%#server 0.centos.pool.ntp.org iburst%' /etc/ntp.conf

chkconfig --level 35 ntpd on
service ntpd start

mkdir /opt/sbin
touch /opt/sbin/ntp.sh;chmod +x /opt/sbin/ntp.sh;vim /opt/sbin/ntp.sh
bash -x /opt/sbin/ntp.sh

sed -i 's%server 192.168.3.5%server 10.8.0.151%' /etc/ntp.conf