如上图,框架中的有外网ntp服务器、内网ntp服务器和内网中的其他机器。为讲解方便先作如下假设:
外网ntp服务器:xx.cn.pool.ntp.org
内网ntp服务器:10.xxx.xxx.189
内网中的其他机器:10.xxx.xxx.148和10.xxx.xxx.149
(189、148和149等的操作系统都是Red Hat 6.5)
机器之间的关系是这样的:
(1)外网ntp服务器与内网ntp服务器的关系:
内网ntp服务器189首先根据外网ntp服务器的时间,调整自己的时间至同准确时间一致,然后通过ntpd或ntpdate定时向外网ntp服务器同步时间。此时外网服务器为ntp服务器,189为ntp客户端;
(2)内网ntp服务器与内网其他机器的关系:
在189的时间调整准确之后,它便可以作为ntp服务器为内网中的其他机器提供服务了。此时189为ntp服务端,而148和149等其他机器为ntp客户端。
即整个架构中189同时作为ntp服务器和客户端而存在,就像一个三世同堂的家庭中,爸爸既是爸爸也是儿子,同样的道理。
一、内网ntp服务器(10.xxx.xxx.189)的设置
1、检查并安装ntp
使用rpm -qa | grep ntp 命令查看服务器是否安装了ntp,如果出现下面两个说明已安装。
倘若没有安装,可使用yum install -y ntp命令进行安装(前提是服务器的yum可用,若是yum无法使用,也可以到网上找到相应的rpm包进行手动安装)
2、使用ntpdate同步NTP服务器时间
这一步的主要命令有两个:
(1) ntpdate 0.cn.pool.ntp.org #ntpdate修改系统时间
(2) hwclock –systohc #将硬件时间修改到与系统时间相同
由于NTP的限制,如果系统时间与正确的时间相差太大的话,NTP是不会帮你做调整的——网上也有另一种说法,就是当你的时间设置和正确的时间相差很大的时候,NTP不会直接不同步,而是会花上很长一段时间进行同步调整——关于这点我没有实际测试过,反正不管是由于哪种原因,总之我们需要先通过ntpdate做一个时间同步,把189的时间调整到跟实际相同,用到的是第(1)个命令。
2.1
首先我们要先确定好自己的时区(若时区已经正确了可略过这步)。
根据所在地点重新设置时区。以上海为例。
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #将时区设置成上海
[root@zabbix ~]# date
Mon Mar 12 18:28:42 CST 2018 #可以看到我们的时区已经设置过来了,因为时区显示为CST了,CST即china standard time。
2.2
同步之前需要知道可用的外网NTP服务器是多少,通过NTP官网找到离自己城市最近的NTP服务器,如下图:
我取到的公网NTP服务器地址如下:
server 0.cn.pool.ntp.org
server 1.cn.pool.ntp.org
server 2.cn.pool.ntp.org
server 3.cn.pool.ntp.org
2.3
找到外网ntp服务器之后,接下来使用ntpdate将时间调准。
[root@zabbix ~]# ntpdate 0.cn.pool.ntp.org
12 Mar 14:03:12 ntpdate[19868]: step time server 85.199.214.100 offset 1114.672613 sec
注:可以执行两三遍以减少时延
执行前系统时间为下午1点42分,是错误的。
执行后系统时间修改为下午2点3分,已修改为正确时间。
注意:
(1)使用ntpdate修改时使用的是跃变的方式,就是说ntpdate命令是简单的将时间从某个点修改为另一个时间点,中间没有平滑的过渡。