今天发现服务器数据同步出现问题,发现时间差了2秒,最后定位是时间服务没有搭建,我们采用NTP时间同步服务器做为其他应用系统的授时服务器。
     
一、安装NTP服务

[root@ntp ~]# rpm -qa|grep ntp 
[root@ntp ~]# yum  install ntp

二、配置NTP服务器配置文件
(1)编辑配置文件/etc/ntp.conf文件

#restrict default nomodify notrap nopeer noquery 
#restrict -4 default kod notrap nomodify nopeer noquery limited  拒绝 IPv4 的用戶
#restrict -6 default kod notrap nomodify nopeer noquery limited  拒绝 IPv6 的用戶
ignore:    #关闭所有的NTP联机服务(基本不用);
nomodify:  #客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时;
notrap:    #拒绝特殊的ntpdq捕获消息
notrust:   #客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery:   #不提供客户端的时间查询 

 #本例中允许接收同步请求的地址范围是192.168.30.0/24
 例如 : restrict192.168.30.0 mask 255.255.255.0 nomodify notrap 
       restrict 192.168.100.0 mask 255.255.255.0 nomodify #该网段可以进行校时
       restrict 59.124.196.84      #允许该NTP服务器进入
 #注意:如果参数没有设定,那就表示该IP(或子网)没有任何限制。

(2)配置上游NTP服务器

配置上游NTP服务器之前,先检查上游服务器是否能正常连通。若可以使用,修改NTP配置文件如下:
server 210.72.145.44     #China Time Center
server cn.pool.ntp.org   #Pulbic Time Server
server 202.112.10.36
server 127.127.1.0    # local clock
fudge 127.127.1.0 stratum 10
server time-nw.nist.gov prefer                  //prefer 该服务器优先
#如果第二步配置的server 210.72.145.44、cn.pool.ntp.org都无效时,
#则NTP服务器会根据这里的配置,把自己的时间做为NTP服务器的时间,即和自己同步。
#如果要使用本地时间,将server 网络服务注释,添加两行
server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10
#备注:fudge这行是时间服务器的层次。设为0则为顶级,如果要向别的NTP服务器更新时间,请不要把它设为0

(3)配置NTP服务启动

[root@ntp ~]systemctl start  ntp 
[root@ntp ~]systemctl status ntp  
[root@ntp ~]systemctl enbale ntp

(4)NTP常用命令(ntpstat,ntpq -p,date +%s,hwclock,cat /etc/timezone)

[root@ntp ~] ntpstat
synchronised to NTP server (210.72.145.44) at stratum 2 
#本NTP服务器层次为2,已向210.72.145.44 NTP同步过
time correct to within 93 ms    #时间校正到相差93ms之内
polling server every 1024 s    #每1024秒会向上级NTP轮询更新一次时间
#:ntpdate -d 
[root@ntp ~] # ntpq -p
 remote          refid      st t  when  poll  reach   delay   offset  jitter
==============================================================================
 210.72.145.44   .INIT.          16 u    -  64    0    0.000  0.000  0.000
 85.199.214.101  .INIT.          16 u    -  64    0    0.000  0.000  0.000
 202.112.10.36   .INIT.          16 u    -  64    0    0.000  0.000  0.000
 *LOCAL(0)       .LOCL.          10 l   20  64   77    0.000  0.000  0.000
 
*
它告诉我们远端的服务器已经被确认为我们的主NTP Server,我们系统的时间将由这台机器所提供
+
它将作为辅助的NTP Server和带有*号的服务器一起为我们提供同步服务. 当*号服务器不可用时它就可以接管
-
远程服务器被clustering algorithm认为是不合格的NTP Server
x
远程服务器不可用
st:即stratum阶层,值越小表示ntp serve的精准度越高;
when:几秒前曾做过时间同步更新的操作;
Poll表示,每隔多少毫秒与ntp server同步一次;
reach:已经向上层NTP服务器要求更新的次数;
delay:网络传输过程钟延迟的时间;
offset:时间补偿的结果;
jitter:Linux系统时间与BIOS硬件时间的差异时间
#hwclock [-rw]
-r :亦即 read ,读出目前 BIOS 内的时间参数;
-w :亦即 write ,将目前的 Linux 系统时间写入 BIOS 当中啊!

(5)客户端配置

[root@linuxidc~]# ntpdate 192.168.100.100

#添加定时任务 : crontab -e
30 * * * * root /usr/sbin/ntpdate  192.168.100.100; /sbin/hwclock -w  # 192.168.100.100是NTP服务器的IP地址 
#crontab -l 查看定时任务

(6)同步硬件时钟
      NTP一般只会同步system clock. 但是如果我们也要同步RTC(hwclock)的话那么只需要把下面的选项

# vi /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes