试验环境
IP | 主机名 | 角色 | 描述 | 同步方式 |
---|---|---|---|---|
192.168.11.11 | ltt1.bg.cn | NTPD服务 | 1、负责与外部公共NTPD服务同步标准时间 2、作为内外网络的NTPD服务 |
NTPD服务平滑同步 |
192.168.11.12 | ltt2.bg.cn | 内网NTP客户端 | 内网设备与192.168.11.11同步时间 | NTPD服务平滑同步 |
192.168.11.13 | ltt3.bg.cn | 内网NTP客户端 | 内网设备与192.168.11.11同步时间 | NTPD服务平滑同步 |
192.168.11.14 | ltt4.bg.cn | 内网NTP客户端 | 内网设备与192.168.11.11同步时间 | NTPD服务平滑同步 |
192.168.11.15 | ltt5.bg.cn | 内网NTP客户端 | 内网设备与192.168.11.11同步时间 | NTPD服务平滑同步 |
第一步,以上所有的机器都安装ntp
[root@ltt1 ~]# yum install ntp
第二步,设置开机自启动
[root@ltt1 conf]# chkconfig ntpd on
[root@ltt1 conf]# chkconfig --list ntpd
ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
第一、第二,以上两步,在各机器上都要执行
第三步,配置内网NTP-server(192.168.11.11)
此步是在你要设置成NTP服务的机器上配置,它将给内网所有的机器进行授时,即内网所有机器都是以它的时间为准。
我这里选择的是192.168.11.11。
先使用ntpdate手动同步下内网中作为 NTPD 服务器的时间,免得本机与外部时间服务器时间差距太大,让ntpd不能正常同步。即在 192.168.11.11 上执行
ntpdate -u 1.cn.pool.ntp.org
然后要找到可以正常提供时间服务的外部主机,执行以下命令
[root@ltt1 ~]# ntpdate -q 1.cn.pool.ntp.org
server 51.15.41.135, stratum 3, offset -0.648578, delay 0.37547
server 193.228.143.12, stratum 2, offset -0.652907, delay 0.36064
server 202.118.1.130, stratum 2, offset -0.650668, delay 0.05075
server 120.25.115.20, stratum 2, offset -0.650029, delay 0.06900
29 Sep 17:51:21 ntpdate[1500]: step time server 202.118.1.130 offset -0.650668 sec
这里可以看到列出了四个外部主机,以及和本机时间的时间差异。
最后一行的末尾,time server 202.118.1.130 offset -0.650668 sec,这说明时间差异最小的一个外部主机为202.118.1.130
必要的信息已经获取,现在正是开始配置NTP
[root@ltt1 ~]# vi /etc/ntp.conf
这里列出的只是注释掉内容和添加的内容,
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
#设置对内网主机提供NTP服务。我的集群网关是192.168.11.2
restrict 192.168.11.2 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).
#注释掉centos默认的对时服务器,如果主机能访问外网,最好做这一步
#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
#指定上层对时的外部服务器,这些都是上面刚刚得到的可以正常提供时间服务的外部主机
server 51.15.41.135
server 193.228.143.12
server 202.118.1.130 perfer
server 120.25.115.20
#修改上层服务器对本机的权限
restrict 51.15.41.135 nomodify notrap noquery
restrict 193.228.143.12 nomodify notrap noquery
restrict 202.118.1.130 nomodify notrap noquery
restrict 120.25.115.20 nomodify notrap noquery
#外部时间服务器不可用时,设置以本地时间作为时间服务
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
第四步,同步硬件时间
在 Linux 下系统时间在开机的时候会和硬件时间同步(synchronization),之后也就各自独立运行了,那么既然两个时钟独自运行,那么时间久了必然就会产生误差了,而 NTP 默认又只更新系统时间,因此我们需要设置硬件时钟进行同步调整
[root@ltt1 ~]# vi /etc/sysconfig/ntpd
# Drop root to id 'ntp:ntp' by default.
SYNC_HWCLOCK=yes
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g"
第五步,启动ntp服务,查看相关状态,验证
[root@ltt1 ~]# service ntpd start
Starting ntpd: [ OK ]
查看服务连接和监听
[root@ltt1 ~]# netstat -tlunp | grep ntp
udp 0 0 192.168.11.11:123 0.0.0.0:* 1327/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 1327/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 1327/ntpd
udp 0 0 fe80::20c:29ff:fec5:88c5:123 :::* 1327/ntpd
udp 0 0 ::1:123 :::* 1327/ntpd
udp 0 0 :::123 :::* 1327/ntpd
查看网络中的NTP服务器,同时显示客户端和每个服务器的关系
[root@ltt1 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
+ntp3.itcomplian 5.103.128.88 3 u 25 64 37 446.548 -700.47 1.006
ntp1.flashdance 193.11.166.20 2 u 21 64 17 432.794 -705.08 12.690
*202.118.1.130 202.118.1.47 2 u 23 64 37 24.599 -653.77 1.470
120.25.115.20 10.137.38.86 2 u 18 64 37 42.456 -651.64 1.038
LOCAL(0) .LOCL. 10 l 90 64 36 0.000 0.000 0.000
查看时间同步状态
[root@ltt1 ~]# ntpstat
synchronised to NTP server (202.118.1.130) at stratum 3
time correct to within 1658 ms
polling server every 64 s
第六步,配置NTP-client,这是在除192.168.11.11的其他机器上进行
[root@ltt2 ~]# vi /etc/ntp.conf 注意,这里的配置是和192.168.11.11有区别的
#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).
#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
#对时服务器,配置成ntp-server的机器
server 192.168.11.11
restrict 192.168.11.11 nomodify notrap noquery
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
配置同步硬件时间
[root@ltt2 ~]# vi /etc/sysconfig/ntpd
# Drop root to id 'ntp:ntp' by default.
SYNC_HWCLOCK=yes
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g"
第七步,启动ntp-client,手动更新时间,查看相关状态,验证,这里以ltt2为例
[root@ltt2 ~]# service ntpd start
Starting ntpd: [ OK ]
手动向192.168.11.11更新一次时间
ntpdate -u 192.168.11.11
查看服务连接和监听
[root@ltt2 ~]# netstat -tlunp | grep ntp
udp 0 0 192.168.11.12:123 0.0.0.0:* 10776/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 10776/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 10776/ntpd
udp 0 0 ::1:123 :::* 10776/ntpd
udp 0 0 fe80::20c:29ff:fef9:26cb:123 :::* 10776/ntpd
udp 0 0 :::123 :::* 10776/ntpd
查看网络中的NTP服务器,同时显示客户端和每个服务器的关系
[root@ltt2 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*ltt1.bg.cn 202.118.1.130 3 u 880 1024 377 1.184 0.242 1.190
LOCAL(0) .LOCL. 10 l 14h 64 0 0.000 0.000 0.000 查看时间同步状态
[root@ltt2 ~]# ntpstat
synchronised to NTP server (192.168.11.11) at stratum 4
time correct to within 85 ms
polling server every 1024 s 到此,机器的同步时间就配置完成了。
附:ntpq -p指令,显示的各项含义
位置 | 标志 | 含义 |
---|---|---|
符号 | * | 响应的NTP服务器和最精确的服务器 |
+ | 响应这个查询请求的NTP服务器 | |
blank(空格) | 没有响应的NTP服务器 | |
标题 | remote | 响应这个请求的NTP服务器的名称 |
refid | NTP服务器使用的更高一级服务器的名称 | |
st | 正在响应请求的NTP服务器的级别 | |
when | 上一次成功请求之后到现在的秒数 | |
poll | 本地和远程服务器多少时间进行一次同步,单位秒,在一开始运行NTP的时候这个poll值会比较小,服务器同步的频率大,可以尽快调整到正确的时间范围,之后poll值会逐渐增大,同步的频率也就会相应减小 | |
reach | 用来测试能否和服务器连接,是一个八进制值,每成功连接一次它的值就会增加 | |
delay | 从本地机发送同步要求到ntp服务器的往返时间 | |
offset | 主机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒,offset越接近于0,主机和ntp服务器的时间越接近 | |
jitter | 统计了在特定个连续的连接数里offset的分布情况。简单地说这个数值的绝对值越小,主机的时间就越精确 |