LandryBean 2017-01-02
NTP 时间服务器配置《三》通过ntpd服务平滑同步时间
使用ntpd服务,要好于ntpdate加cron的组合。因为,ntpdate同步时间,会造成时间的跳跃,对一些依赖时间的程序和服务会造成影响。比如sleep,timer等。而且,ntpd服务可以在修正时间的同时,修正cpu tick。理想的做法为,在开机的时候,使用ntpdate强制同步时间,在其他时候使用ntpd服务来同步时间。
一、环境方案
环境:linux centos 7.0 三台(都已安装ntp服务)
方案:一台服务器作为ntpd服务与外部公共ntp服务同步时间,同时作为内网的ntpd服务器,其余两台机器与这台服务做时间同步。
服务器IP | 角色 | 说明 | 同步方式 |
192.168.152.129 | NTPD服务 | 1、负责与外部公共NTPD服务同步标准时间 2、作为内外网络的NTPD服务 | NTPD服务平滑同步 |
192.168.152.130 | 内外NTP客户端 | 内网设备与192.168.152.129同步时间 | NTPD服务平滑同步 |
192.168.152.131 | 内外NTP客户端 | 内网设备与192.168.152.129同步时间 | NTPD服务平滑同步 |
ntp服务的实现是通过配置/etc/ntp.conf文件完成的,这里重点说一下,可以用ntp搭建自己的时间服务器,也可以使用官方提供的服务器。
二、配置内网NTP-Server(192.168.152.129)
1.修改配置文件
[root@localhost Desktop]# vi /etc/ntp.conf |
# For more information about this file, see the man pages # ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
driftfile /var/lib/ntp/drift
# Permit time synchronization with our time source, but do not # permit the source to query or modify the service on this system. restrict default nomodify notrap nopeer noquery
# Permit all access over the loopback interface. This could # be tightened as well, but to do so would effect some of # the administrative functions. restrict 127.0.0.1 restrict ::1
# 允许内网其他机器同步时间 restrict 192.168.152.0 mask 255.255.255.0 nomodify notrap
# Hosts on local network are less restricted. #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
# Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html).
# 中国这边最活跃的时间服务器: http://www.pool.ntp.org/zone/cn server 1.cn.pool.ntp.org server 3.asia.pool.ntp.org server 2.asia.pool.ntp.org server 0.asia.pool.ntp.org server 1.asia.pool.ntp.org
#server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst
#broadcast 192.168.1.255 autokey# broadcast server #broadcastclient# broadcast client #broadcast 224.0.1.1 autokey# multicast server #multicastclient 224.0.1.1# multicast client #manycastserver 239.255.254.254# manycast server #manycastclient 239.255.254.254 autokey # manycast client
# allow update time by the upper server # 允许上层时间服务器主动修改本机时间 restrict 1.cn.pool.ntp.org nomodify notrap noquery restrict 3.asia.pool.ntp.org nomodify notrap noquery restrict 2.asia.pool.ntp.org nomodify notrap noquery restrict 0.asia.pool.ntp.org nomodify notrap noquery restrict 1.asia.pool.ntp.org nomodify notrap noquery
# 外部时间服务器不可用时,以本地时间作为时间服务 server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 10
# Enable public key cryptography. #crypto
includefile /etc/ntp/crypto/pw
# Key file containing the keys and key identifiers used when operating # with symmetric key cryptography. keys /etc/ntp/keys
# Specify the key identifiers which are trusted. #trustedkey 4 8 42
# Specify the key identifier to use with the ntpdc utility. #requestkey 8
# Specify the key identifier to use with the ntpq utility. #controlkey 8
# Enable writing of statistics records. #statistics clockstats cryptostats loopstats peerstats
# Disable the monitoring facility to prevent amplification attacks using ntpdc # monlist command when default restrict does not include the noquery flag. See # CVE-2013-5211 for more details. # Note: Monitoring will not be disabled with the limited restriction flag. disable monitor |
2.配置文件修改完成,保存退出,启动服务,即完成主服务的配置。
[root@localhost Desktop]# service ntpd start |
3.查看NTP服务情况(启动后,一般需5-10分钟左右才能与外部时间服务器开始时间同步)
[root@localhost Desktop]# ntpstat |
刚启动的时候,一般是:
# ntpstat
unsynchronised
time server re-starting
polling server every 64 s
连接并同步后:
synchronised to NTP server (202.112.10.36) at stratum 3
time correct to within 275 ms
polling server every 256 s
4.查看NTP服务连接和监听
[root@localhost Desktop]# netstat -tlunp | grep ntp |
5.查看网络中的NTP服务器,同时显示客户端和每个服务器的关系
[root@localhost Desktop]# ntpq -p |
参数说明: remote:响应请求的NTP服务器的名称 refid:NTP服务器使用的更高一级服务器的名称 st:正在响应请求的NTP服务器的级别 when:上一次成功请求之后到现在的秒数 poll:本地和远程服务器多少时间进行一次同步,单位秒。开始运行NTP的时候poll值会比较小,服务器同步的频率大,可以尽快调整到正确的时间范围内,之后poll值会逐渐增大,同步的频率也就会相应减小 reach:用来测试能否和服务器连接,是一个八进制值,每成功连接一次它的值就会增加 delay:从本地机发送同步要求到NTP服务器的往返时间 offset:主机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒,offset越接近于0,主机和NTP服务器的时间越接近 jitter:统计了在特定个连续的连接数里offset的分布情况。简单地说这个数值的绝对值越小,主机的时间就越精确 |
三、配置内网NTP-Clients(192.168.152.130/131)
1.修改配置文件/etc/ntp.conf
driftfile /var/lib/ntp/drift
restrict 127.0.0.1 restrict ::1
# 配置时间服务器为本地的时间服务器 server 192.168.152.129
restrict 192.168.152.129 nomodify notrap noquery
server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor |
注意:去掉了注释部分
2.配置文件修改完成,保存退出,请先使用ntpdate手动同步下时间
# ntpdate 192.168.152.129 |
3.启动NTP服务,查看情况
# service ntpd start .... # ntpq -p # ntpstat |
四、特别注意
配置完成之后,还有几个步骤比较重要,否则可能出现各种奇怪的问题
1.打开udp/123防火墙端口
Linux下防火墙如果及其严格的话可能会影响ntpd服务对时,所以要打开udp/123端口
2.设置ntpd服务开机自启动
(1)查看系统内置的服务自启动状态命令
# systemctl list-unit-files |
(2)设置NTPD服务开机自启动
# systemctl enable ntpd.service |
但是,调整之后重启系统,发现NTP并没有启动起来。查看chronyd服务是否设置开机自启动,这个服务导致NTP无法开启自启动,解决办法是禁止chronyd服务开机自启动
# systemctl status chronyd # systemctl disable chronyd.service |
3.NTP同步硬件时间
NTP服务默认只会同步系统时间。如果要让NTP同时同步硬件时间,可设置/etc/sysconfig/ntpd 文件。
添加以下内容,就可以让硬件时间与系统时间一起同步。
SYNC_HWCLOCK=yes |
4.NTP服务自我保护
NTP有一个自我保护设置:默认情况下如果NTP本地时间与上级NTP时间差超过1000s,那么NTP进程就会退出并在系统日志文件中记录,且不会进行时间同步。所以新设置的时间服务器一定要先 ntpdate 从上源取得时间初值, 然后启动 ntpd服务。ntpd服务运行后, 先是每64秒与上源服务器同步一次, 根据每次同步时测得的误差值经复杂计算逐步调整自己的时间, 随着误差减小, 逐步增加同步的间隔. 每次跳动, 都会重复这个调整的过程.
当然还有另一种解决办法:在配置文件/etc/ntp.conf的第一行加上这么一句,这可以保证ntpd在时间差较大时依然工作。
tinker panic 0 |
注意:ntpd不仅仅是时间同步服务器,他还可以做客户端与标准时间服务器进行同步时间,而且是平滑同步,并非ntpdate立即同步,在生产环境中慎用ntpdate |