1 NTP简介

NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。

NTP服务器就是利用NTP协议提供时间同步服务的。

  • 时间同步服务器:
    ntpdate ntp.aliyun.com
    ntpdate time.nist.gov
    ntpdate 0.pool.ntp.org
    ntpdate cn.pool.ntp.org
    ntpdate 195.13.1.153

2 NTP服务端

2.1 安装

查看是否安装ntp服务

[root@node1 ~]# rpm -qa ntp
ntp-4.2.6p5-12.el6.centos.2.x86_64

如果没有就安装

yum install ntp -y

2.2 配置NTP服务

修改ntpd的配置文件:/etc/ntp.conf
这里指定阿里云的时间同步服务器:ntp.aliyun.com

  • 有效参数:
[root@node1 ~]# cp -a /etc/ntp.conf{,_$(date +%F)}
[root@node1 ~]# egrep -v '^#|^$' /etc/ntp.conf
driftfile /var/lib/ntp/drift
pidfile   /var/run/ntpd.pid
logfile /var/log/ntp.log
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server 127.127.1.0                # 时间同步服务器不可用时,和自己同步;
fudge  127.127.1.0 stratum 10
server ntp.aliyun.com iburst minpoll 4 maxpoll 10
restrict ntp.aliyun.com nomodify notrap nopeer noquery
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys

2.3 启动NTP服务器

2.3.1 如果计划任务有时间同步,先注释,两种用法会冲突。

[root@node1 ~]# crontab -e
#*/10 * * * * /usr/sbin/ntpdate ntp1.aliyun.com > /dev/null 2>&1;/sbin/hwclock -w

2.3.2 启动ntpd服务,并设置开机自启动

[root@node1 ~]# service ntpd status
ntpd 已停
[root@node1 ~]# service ntpd start
正在启动 ntpd:                                            [确定]
[root@node1 ~]# service ntpd status
ntpd (pid  31990) 正在运行...
[root@node1 ~]# chkconfig --list|grep ntpd
ntpd            0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭
ntpdate         0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭
[root@node1 ~]# chkconfig ntpd on
[root@node1 ~]# chkconfig --list|grep ntpd
ntpd            0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
ntpdate         0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭

2.3.3 测试

[root@node1 ~]# ntpq -np
remote           refid      st t when poll reach   
delay   offset  jitter
==============================================================================
*ntp1.aliyun.com 10.137.38.86     2 u   22   64    1  525.885  -42.367   0.000
[root@node1 ~]# ntpstat
synchronised to NTP server (110.75.186.247) at stratum 3   
time correct to within 4257 ms   
polling server every 64 s
[root@node1 ~]# ntpdate 172.168.1.101 
7 Dec 18:43:07 ntpdate[26950]: the NTP socket is in use, exiting

2.3.4 ntpd常见命令

CentOS 6.*:

service ntpd status                             # 查看状态;
service ntpd start                              # 启动;
service ntpd stop                               # 停止;
service ntpd restart                            # 重启;
chkconfig --list|grep ntpd                      # 查看是否开机自启动:on为自启动,off开机不启动;
chkconfig ntpd on                               # 设置开机自启动;
chkconfig ntpd off                              # 禁止开机自启动;

CentOS 7.*:

systemctl status ntpd.service                   # 查看状态;
systemctl start ntpd.service                    # 启动;
systemctl stop ntpd.service                     # 停止;
systemctl restart ntpd.service                  # 重启;
systemctl list-unit-files|grep ntpd.service     # 查看是否开机自启动:enabled为自启动,disabled开机不启动;
systemctl enable ntpd.service                   # 设置开机自启动;
systemctl disable ntpd.service                  # 禁止开机自启动。

3 客户端时间同步

客户端时间同步分为两种:
ntpd:适用于对时间要求高的集群;
ntpdate:适用于一般环境;

  • ntpd
    和上面服务端配置一样,把ntp.aliyun.com改为服务端的IP地址即可!

  • ntpdate
    客户端要等几分钟再与新启动的ntp服务器进行时间同步,否则会提示no server suitable for synchronization found错误。
    [root@node2 ~]# ntpdate 172.168.1.101 
    7 Dec 18:40:16 ntpdate[1453]: step time server 172.168.1.101 offset 40.880807 sec

    将命令放入计划任务。

    [root@node2 ~]# crontab -l
    5 * * * * /usr/sbin/ntpdate 172.168.1.101 > /dev/null 2>&1;/sbin/hwclock -w
    [root@node2 ~]# service crond status
    crond (pid  2940) 正在运行...

4 报错

解决ntp的错误 no server suitable for synchronization found
当用 ntpdate 来查询时报错:

 "no server suitable for synchronization found "

错误的原因有以下2个:

4.1 Server dropped: Strata too high

在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还没有和其自身或者它的server同步上。

以下的定义是让NTP Server和其自身对峙同步,若是在/etc/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的错误。

那么如何知道何时ntp server完成了和自身同步的过程呢?

在ntp server上应用命令:

watch ntpq -p 

呈现画面:

Every 2.0s: ntpq -p                                   Wed Oct 24 18:06:04 2018

     remote           refid  st t when poll reach   delay   offset  jitter
==============================================================================
*120.25.115.20   10.137.53.7      2 u    8   64  377   22.675   20.870   3.324
 time-a-g.nist.g .INIT.          16 u    - 1024    0    0.000    0.000   0.000

重视LOCAL的这个就是与自身同步的ntp server。

重视reach这个值,在启动ntp server办过后,这个值就从0开端络续增长,当增长到17的时辰,从0到17是5次的变革,每一次是poll的值的秒数,是64秒*5=320秒的时候。

若是之后从ntp客户端同步ntp server还失败的话,用ntpdate –d来查询具体错误信息,再做断定。

4.2 Server dropped: no data

从客户端履行netdate –d时有错误信息如下:

28 Jul 17:42:24 ntpdate[14148]: no server suitable for synchronization found 

呈现这个错误的原因可能有2个:

  • 检查ntp的版本,若是你应用的是ntp4.2(包含4.2)之后的版本,在restrict的定义中应用了notrust的话,会导致以上错误。
  • 检查ntp server的防火墙。可能是server的防火墙隔离了upd 123端口。
service iptables stop

关掉iptables办过后再测验测验从ntp客户端的同步,若是成功,证实是防火墙的题目,须要更改iptables的设置。