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的设置。