Linux 时间一致性环境NTP/Chrony服务器部署配置

一、背景

在这里插入图片描述
生产环境中,一个业务系统往往涉及几十台甚至上百台主机或云主机构成,有些管理系统对整个环境时间一致性由强要求,即使没有,保证环境中时间的一致性,有利于业务交互时时间匹配,保证事务的一致性,甚至环境中的监控系统,也需要监测时间一致性,保证数据上报正常。

二、ntp架构

下图来源网络,在前端管理节点上部署ntp服务器,且采取主备模式,局域网的ntp(NTP是网络时间协议(Network Time Protocol))服务器先于外网ntp同步完成,局域网内再同本地ntp服务器同步时间。实际环境中,可借助类似架构,两个管理节点可以用HAproxy+keepalive做Heartbeat,并设置对外提供ntp服务的VIP地址192.168.0.103。
在这里插入图片描述
NTP时钟层级: 顶层为0
在这里插入图片描述
在 NTP 的世界中,层级定义了与参考时钟的距离。参考时钟是第 0 层设备,它被认为是准确的,并且几乎没有或没有与之相关的延迟。参考时钟通常使用 GPS 传输、CDMA 技术或其他时间信号(如 Irig-B、WWV、DCF77 等)同步到正确的时间 (UTC)。NTP的服务器就是从权威时钟源(例如原子钟、GPS)接收精确的协调世界时UTC的。上图中中的每层被称为Stratum;将从权威时钟获得时钟同步的NTP服务器的层数设置为Stratum 1,并将其作为主时间服务器,为网络中其他的设备提供时钟同步。而Stratum 2则从Stratum 1获取时间,Stratum 3从Stratum 2获取时间,以此类推。时钟层数的取值范围为1~16,取值越小,时钟准确度越高。层数为0~15的时钟处于同步状态;层数为16的时钟被认为是未同步的,不能使用的。Stratum-0 服务器不能在网络上使用,而是直接连接到计算机,然后作为第 1 层服务器运行。直接连接到stratum-0 设备的服务器称为stratum-1 服务器。第 1 层时间服务器的基本定义是它直接链接(不通过网络路径)到可靠的 UTC 时间源,Stratum-1 时间服务器充当主要的网络时间标准。2层 服务器通过网络路径连接到层 1 服务器。因此,第 2 层服务器通过来自第 1 层服务器的 NTP 数据包请求获取其时间。第 3 层服务器通过来自第 2 层服务器的 NTP 数据包请求获取其时间,依此类推。Stratum 1 时间服务器生成的时间戳通常与 UTC 有 10 微秒的精度。第 2 层服务器对 UTC 的准确度在 1/2 到 100 毫秒之间,每个后续层(第 3 层等)都会增加 1/2 到 100 毫秒的不准确度。

NTP协议发展:
在这里插入图片描述
在NTP协议中,下级服务器在指定的轮询时间范围(如64秒至1024秒)内,向上一级服务器通过UDP123端口*发送报文,进行探测,根据多次的探测结果进行时间校准。在默认配置下,时差在128ms以内,会分成多步慢慢调整;时差在128ms至1000ms,时间会一次性调整到位;*时差超过1000ms,NTP会判定为当前环境不可靠,而中止运行。更多参看官网

NTP校时方式:

时间服务器可以利用以下三种方式与其他服务器对时:broadcast/multicast,client/server和Symmetric。

(1)broadcast/multicast:方式主要适用于局域网的环境,时间服务器周期性的以广播的方式,将时间信息传送给其他网路中的时间服务器,其时间仅会有少许的延迟,而且配置非常的简单。但是此方式的精确度并不高,对时间精确度要求不是很高的情况下可以采用。

(2)Symmetric:的方式得一台服务器可以从远端时间服务器获取时钟,如果需要也可提供时间信息给远端的时间服务器。此一方式适用于配置冗余的时间服务器,可以提供更高的精确度给主机。

(3)client/server:方式与symmetric方式比较相似,只是不提供给其他时间服务器时间信息,此方式适用于一台时间服务器接收上层时间服务器的时间信息,并提供时间信息给下层的用户。

上述三种方式,时间信息的传输都使用UDP协议。时间服务器利用一个过滤演算法,及先前八个校时资料计算出时间参考值,判断后续校时包的精确性,一个相对较高的离散程度,表示一个对时资料的可信度比较低。仅从一个时间服务器获得校时信息,不能校正通讯过程所造成的时间偏差,而同时与许多时间服务器通信校时,就可利用过滤算法找出相对较可靠的时间来源,然后采用它的时间来校时。

三、ntp环境时间检查

1)系统时区检查:

date
Thu Oct 22 16:46:15 CST 2020   //CST代表了中国标准时间(+8区)
date -R
Thu, 22 Oct 2020 16:46:18 +0800  //显示当前为+0800时区,即东八区,中国标准时间
zdump Asia/Taiwan				//zdump命令查看相应时区时间
Asia/Taiwan  Thu Oct 22 09:02:23 2020 Asia
zdump Asia/Shanghai
Asia/Shanghai  Thu Oct 22 17:02:35 2020 CST
tzselect    # 使用tzselect命令获取配置时区
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
 1) Africa
 2) Americas
 3) Antarctica
 4) Arctic Ocean
 5) Asia
 6) Atlantic Ocean
 7) Australia
 8) Europe
 9) Indian Ocean
10) Pacific Ocean
11) none - I want to specify the time zone using the Posix TZ format.
#?
timedatectl status  //查看当前时间配置
      Local time: Thu 2020-10-22 17:57:57 CST
  Universal time: Thu 2020-10-22 09:57:57 UTC
        RTC time: Thu 2020-10-22 09:57:57
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
echo "export TZ='Asia/Shanghai'"  >> /etc/profile  //
source /etc/profile
timedatectl set-timezone Asia/Shanghai   //命令配置时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime  //做软链接
hwclock  --show				//查看硬件时钟时间
Thu 22 Oct 2020 06:20:40 PM CST  -1.001636 seconds
hwclock --set --date="19/03/12 21:55"   //设置硬件时钟时间
date –set “07/07/06 10:19″					  //月/日/年时:分:秒
clock –set –date=”07/07/06 10:19″ 	   //月/日/年 时:分:秒
hwclock --systohc     //系统及硬件时钟同步,hc代表硬件时间,sys代表系统时间,systohc表示以系统时间为基准,同步至硬件时间;Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟。系统时钟: 是指当前Linux Kernel中的时钟,硬件时钟: 是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中进行设置。Linux 中的所有命令(包括函数)都是采用的系统时钟设置。重新启动系统,硬件时间会读取系统时间,实现同步,但是在不重新启动的时候,需要用hwclock或clock命令实现同步,hwclock –hctosys
clock  //通hwclock,clock命令除了支持x86硬件体系外,还支持Alpha硬件体系
2022年12月06日 星期二 09时54分08秒  -1.078617 seconds
hwclock -w 		//将系统时间写入硬件时间

常用授时中心:

210.72.145.44 国家授时中心
ntp.aliyun.com 阿里云(Unix/linux类:ntp1-7.aliyun.com)
time.pool.aliyun.com (windows类)
time1-5.cloud.tencent.com
s1a.time.edu.cn 北京邮电大学
s1b.time.edu.cn 清华大学
s1c.time.edu.cn 北京大学
s1d.time.edu.cn 东南大学
s1e.time.edu.cn 清华大学
s2a.time.edu.cn 清华大学
s2b.time.edu.cn 清华大学
s2c.time.edu.cn 北京邮电大学
s2d.time.edu.cn 西南地区网络中心
s2e.time.edu.cn 西北地区网络中心
s2f.time.edu.cn 东北地区网络中心
s2g.time.edu.cn 华东南地区网络中心
s2h.time.edu.cn 四川大学网络管理中心
s2j.time.edu.cn 大连理工大学网络中心
s2k.time.edu.cn CERNET桂林主节点
s2m.time.edu.cn 北京大学
ntp.sjtu.edu.cn 202.120.2.101 上海交通大学
pool.ntp.org:项目是一个提供可靠易用的NTP服务的虚拟集群,可配cn.pool.ntp.org,03.cn.pool.ntp.org

四、NTP服务器部署及配置

1)rpm -qa ntp* //验证服务器端NTP服务是否已安装,由下可知已经安装

ntpdate-4.2.6p5-28.el7.centos.x86_64
ntp-4.2.6p5-28.el7.centos.x86_64

2)rpm -ql ntp //查看ntp相关的文件

/etc/ntp.conf //ntp服务器的主配置文件
/usr/lib/systemd/system/ntpd.service //开机启动ntpd脚本文件

3)常用的国内NTP服务器参考:

times.aliyun.com

ntp.aliyun.com

cn.pool.ntp.org

0.cn.pool.ntp.org

1.cn.pool.ntp.org

4)同步局域网ntp服务器与外部ntp的时间:

ntpdate times.aliyun.com  //输出如下

22 Oct 18:30:07 ntpdate[23856]: adjust time server 120.25.115.20 offset -0.101925 sec

5)查看本地的ntp服务:

ntpstat  //输出如下

Unable to talk to NTP daemon. Is it running?
vi  ntp.conf   //查看修改ntp服务器配置文件

driftfile /var/lib/ntp/drift    //#系统时间与BIOS事件的偏差记录
restrict default nomodify notrap nopeer noquery   //拒绝所有IPv4的client连接此NTP服务器
restrict -6 default kod nomodify notrap nopeer noquery    # 拒绝所有IPv6的client连接此NTP服务器

restrict 127.0.0.1    # 放行本机localhost对NTP服务的访问,利用restrict 来管理权限控制
restrict ::1
restrict -6 ::1

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap    # 放行192.168.1.0网段主机与NTP服务器进行时间同步
#restrict default nomodify   允许任何IP的客户机都可以进行时间同步
# 允许局域网内设备与这台服务器进行同步时间.但是拒绝让他们修改(nomodify)服务器上的时间
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap 
restrict 172.16.10.0 mask 255.255.255.0 nomodify  notrap

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  ntp.aliyun.com iburst
server 127.127.1.0    //外部时间服务器不可用时,以本地时间作为时间服务,如跟prefer,则允许优先同步本地时间
fudge 127.127.1.0 stratum 10  //设置本机所在时间服务器中的层级,如果LINUX做为NTP服务器,stratum(层级:范围是“0~15”)的值不能太大,如果要向上级NTP更新可以设成2,0则为顶级。使用fudge定义这个时钟的级别,使用一个伪ip地址将其为一个时钟源,IP地址127.127.1.1告诉NTP使用内部时钟作为时间源,如果没有这个记录,节点就是一级服务器。将级别重新定义为10是个好的办法,这样客户端在查询这个服务器的时候就会知道这个服务器不是一个可靠的时间源了。本地服务器的stratum大小不能超过16。

includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor
SYNC_HWCLOCK=yes  //将系统时间写入主机的硬件时钟

logfile /var/log/ntpstats/ntpd.log    # 定义ntp日志目录
pidfile  /var/run/ntp.pid    # 定义pid路径

参数说明:

(1)配置文件中利用restrict 来管理权限控制,语法如下:

Restrict [IP] mask [netmask_IP] [parameter]

其中,Parameter 各参数意义如下:

ignore :拒绝/关闭所有类型的NTP联机。
nomodify: 客户端不能使用ntpc与ntpq这两个程序来修改服务器的时间参数,但客户端可透过这部主机来进行网络校时;
noquery:客户端不能够使用ntpc与ntpq等指令来查询时间服务器,不提供NTP的网络校时,不提供Client端的时间查询。
notrap:不提供trap 这个运程事件登入的功能,允许任何人来查询。
notrust:拒绝没有认证的客户端。该Client除非通过认证否则该Client来源将被视为不信任网域;
Kod:kod技术可以阻止“Kiss of Death “包对服务器的破坏。
Nopeer:不与其他同一层的NTP服务器进行时间同步。

(2)利用server 设定上层NTP服务器,语法格式:server [IP or hostname] [prefer]

参数说明如下

perfer:表示优先级最高
burst :当一个运程NTP服务器可用时,向它发送一系列的并发包进行检测。
iburst :当一个运程NTP服务器不可用时,向它发送一系列的并发包进行检测。

(3)NTP 的访问控制基于访问控制列表 ACL(Access Control List)实现。NTP 支持 5 个等级的访问限制,每个访问限制可指定相应的 ACL 规则。如果 NTP 访问请求命中该访问限制的 ACL 规则,则说明两者匹配成功,即该访问请求享有此级别的访问限制。当 1 个 NTP 访问请求到达本地时,按照最小访问限制到最大访问限制依次匹配,以第 1 个匹配的为准,匹配顺序如下:

  1. peer:(最大访问权限)可以对本地时钟进行时间请求和控制查询,本地时钟也可以同步到远程服务器。
  2. server:可以对本地时钟进行时间请求和控制查询,但本地时钟不会同步到远程服务器。
  3. synchronization:只允许对本地时钟进行时间请求。
  4. query:(最小访问权限)只允许对本地时钟进行控制查询。
  5. limited:仅在使能 KOD 功能后生效。在使能 KOD 后控制入方向报文的速率并且发送 Kiss码。

5)启动ntp服务:

systemctl start ntpd
systemctl enable ntpd
systemctl status ntpd
● ntpd.service - Network Time Service
   Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-10-22 18:49:04 CST; 4s ago
  Process: 24383 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 24384 (ntpd)
   CGroup: /system.slice/ntpd.service
           └─24384 /usr/sbin/ntpd -u ntp:ntp -g

Oct 22 18:49:03  systemd[1]: Starting Network Time Service...
Oct 22 18:49:04  ntpd[24383]: ntpd 4.2.6p5@1.2349-o Fri Apr 13 12:52:27 UTC 2018 (1)
Oct 22 18:49:04  ntpd[24384]: proto: precision = 0.104 usec
Oct 22 18:49:04  ntpd[24384]: 0.0.0.0 c01d 0d kern kernel time sync enabled
Oct 22 18:49:04 y systemd[1]: Started Network Time Service.

ss -tunlp | grep ntp   //ntpd服务使用UDP/tcp的123端口

tcp    UNCONN     0      0           172.*10:123                   *:*      users:(("ntpd",24384,20))
tcp    UNCONN     0      0            172..*2:123                   *:*      users:(("ntpd",24384,19))
tcp    UNCONN     0      0              127.0.0.1:123                   *:*      users:(("ntpd",24384,18))
tcp    UNCONN     0      0                      *:123                   *:*      users:(("ntpd",24384,16))
tcp    UNCONN     0      0      fe80::f816:3eff:feb9:fa7a:123                  :::*      users:(("ntpd",24384,23))
tcp    UNCONN     0      0      fe80::f816:3eff:fe8d:d89a:123                  :::*      users:(("ntpd",24384,22))
tcp    UNCONN     0      0                    ::1:123                  :::*      users:(("ntpd",24384,21))
tcp    UNCONN     0      0                     :::123                  :::*      users:(("ntpd",24384,17))

ntpq -c version  //检查ntp的版本

ntpstat			//列出NTP服务器是否与上层联机

synchronised to NTP server (116.203.151.74) at stratum 3 
   time correct to within 374 ms
   polling server every 64 s

currentTime =`date "+%Y-%m-%d %H:%M:%S"` //当前时间
ntptrace –n   //列出目前NTP服务器(第一层)与上层NTP服务器(第二层)彼此之间的关系,注意:该命令需要安装ntp-perl包

ntpq -p    //列出目前我们的NTP与相关的上层NTP的状态
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*LOCAL(0)        .LOCL.          10 l   21   64  377    0.000    0.000   0.000

//结果解释
remote:上层NTP服务器的IP或者主机名。主要最左边的*
*:代表目前正在使用中的上层FTP
+:已经连接成功,且可以作为下一个提供时间服务的候选人
refid:它指的是给远程服务器提供时间同步的服务器,本机上级的上级NTP服务器
st:就是stratum层级,最多有15层,减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器
when:几秒之前通不过时间
poll:在过多长时间去同步时间
reach:已经同步时间的次数
delay:网络传输过程中的延迟,单位是10的-6次方秒
offset:时间修正值,本地机和服务器之间的时间差别,单位是10的-3次方
jitter:linux系统时间(软件时间)与BIOS硬件时间的差异时间,单位是10的-6次方秒

ntpdate -q 对方ip  //查看实时时间偏差,单位为s
ntpdc -ns  //查看时间同步的peer
remote           local      st poll reach  delay   offset    disp
=======================================================================
*127.127.1.0     127.0.0.1       10   64  377 0.00000  0.000000 0.03044

/*检测两台linux主机的时间差;我们可借助clockdiff程序来实现,它使用时间戳来测算目的主机和本地主机的系统时间差。-o 使用IP时间戳选项来测量系统时间差。时间戳只用3个。-o1使用IP时间戳选项来测量系统时间差。用4个时间戳。如果-o和-o1都没有设置,那么就是用ICMP时间戳来测试系统时间差。
clockdiff -o1 10.100.8.204  //delta = 目标主机减当前主机时间 ,时间单位是毫秒,31921/1000/60 min=0.53 min
..
host=10.100.8.204 rtt=562(280)ms/0ms delta=-31921ms/-31921ms Tue Dec  6 10:11:00 2022

在这里插入图片描述
输出结果说明:

remote:即NTP主机的IP或主机名称。注意最左边的符号,如果由"+“则代表目前正在作用钟的上层NTP,如果是”*"则表示也有连上线,不过是作为次要联机的NTP主机。服务器名字前的符号含义如下:
*:选定的时间服务器
+: 处于候选状态的服务器
#: 选定的时间服务器,但距离超过最大值(这句话不太容易理解,但就经验判断,一般是上级之上的服务器存在问题)。
空格:该服务器不可用,原因为未能同步(可能是刚启动还未同步,也有可能是其它原因)。
-: 该服务器不可用。被集群算法所放弃。
x: 该服务器不可用。被交集算法所放弃。

refid:参考的上一层NTP主机的地址

st:即stratum阶层

when:几秒前曾做过时间同步更新的操作

poll:下次更新在几秒之后

reach:已经向上层NTP服务器要求更新的次数

delay:网络传输过程钟延迟的时间

offset:时间补偿的结果

jitter:Linux系统时间与BIOS硬件时间的差异时间

注意:ntp服务默认只会同步系统时间。如果想要让ntp同时同步硬件时间,可在配置文件添加 SYNC_HWCLOCK=yes;ntpd 有一个自我保护的机制:如果本机与上源时间相差太大,ntpd 不会运行时间同步操作,所以新设置的时间服务器一定要先 ntpdate 从上源取得时间初值, 然后启动 ntpd服务。ntpd服务运行后,先是每64秒与上源NTP服务器同步一次,根据每次同步时测得的误差值经复杂计算逐步调整自己的时间,随着误差减小,逐步增加同步的间隔。每次跳动,都会重复这个调整的过程。如果开启了NTP服务,则不能手动运行ntpdate更新时间(会报端口被占用)。

6)相关的防火墙配置:UDP 123端口

#开放NTP端口
firewall-cmd --add-port=123/udp --permanent  //UDP123

#重载防火墙规则
firewall-cmd --reload

五、客户端配置

1)修改/etc/ntp.conf文件(没有的安装下yum install -y ntp)

vim ./etc/ntp.conf  //如下所示

server 192.168.1.25  //上述配置的ntp server的ip

#以下四行注释掉

# 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

#允许上层时间服务器主动修改本机时间
restrict 192.168.1.25 nomodify notrap noquery

restrict 127.0.0.1
restrict ::1
restrict -6 ::1

2)先手动同步下时间(yum -y install ntpdate)

ntpdate -u server端ip

:如初选,执行ntpdate –d来查询详细错误信息;ntpdate的实现是立即同步,而ntpd的实现是平滑同步;对于时间敏感的应用程序,时钟的跃变会造成较大影响,而ntpdate实现时间校准的方式就相当于“跃变”。它获取时间后,直接调用settimeofday设置系统时间,不安全,不精准,不优雅。而ntpd会一点点校准时间,虽然它用时更长,但对时间敏感的应用程序很友好。ntpd和ntpdate会占用同一个UDP端口,因此两者不能同时运行。

3)启动ntp服务:systemctl restart ntpd(没有安装ntp服务)

4)验证:ntpstat ;查看NTP服务是否有和上层ntp连通(一般需要5分钟左右)

六、cron定时任务脚本(执行第5步就忽略这里)

语法:0 12 * * * /usr/sbin/ntpdate ntp_server_ip;/sbin/hwclock -w

vim ntp.sync //脚本

#!/bin/bash
#
# $Id: sync-clock,v 1.6 2009/12/23 15:41:29 jmates Exp $
#
# Use ntpdate to get rough clock sync with department of Genome Sciences
# time server.

NTPDATE=/usr/sbin/ntpdate
SERVER="ntp_server_ip "

# if running from cron (no tty available), sleep a bit to space
# out update requests to avoid slamming a server at a particular time
if ! test -t 0; then
MYRAND=$RANDOM
MYRAND=${MYRAND:=$$}

if [ $MYRAND -gt 9 ]; then
sleep `echo $MYRAND | sed 's/.*\(..\)$/\1/' | sed 's/^0//'`
fi
fi

$NTPDATE -su $SERVER
# update hardware clock on Linux (RedHat?) systems
if [ -f /sbin/hwclock ]; then
/sbin/hwclock --systohc
fi

注意:ntpdate同步时间会造成时间的突变和跳跃,对一些依赖时间的程序和服务会造成影响。比如sleep,timer等。而且ntpd服务可以在修正时间的同时,修正CPU Tick。因此理想的做法为,在开机的时候,使用ntpdate强制同步时间,在其他时候使用ntpd服务来同步时间。

七、chrony和ntp区别

Chrony是一个开源的自由软件,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确。chrony是网络时间协议(NTP)的通用实现。它可以将系统时钟与NTP服务器、参考时钟(例如GPS接收器)以及使用手表和键盘的手动输入同步。它也可以运行作为NTPv4(RFC 5905)服务器和对等机,为网络中的其他计算机提供时间服务。它被设计为在各种条件下都能很好地运行,包括间歇性网络连接、拥挤的网络、不断变化的温度(普通计算机时钟对温度敏感)和系统不连续运行或在虚拟机上运行,且支持ipv4和ipv6;尽量优先使用chrony配置时间同步(centOS7及以上版本)。

在这里插入图片描述

通过互联网同步的两台机器之间的典型精度在几毫秒之内;在局域网上,准确度通常为数十微秒。具有硬件时间戳或硬件参考时钟,甚至达到超微秒精度。它由两个程序组成:chronyd和chronyc。

chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。

chronyc 提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。
在这里插入图片描述

chrony可以比ntp更快地且更准确地同步系统时钟。Linux从centos7.2、RHEL7.0改使用功能chrony作为新的默认时间同步服务。服务文件: /usr/lib/systemd/system/chronyd.service;监听端口: 323/udp,123/udp。注意:chrony与ntp不能够同时开启,会出现时间冲突。使用chronyd服务平滑同步时间的方式要优于crontab + ntpdate,因为ntpdate同步时间会造成时间的跳跃,对一些依赖时间的程序和服务会造成影响,例如:sleep、timer等,且chronyd服务可以在修正时间的过程中同时修正CPU tick。chrony 默认的最小轮询间隔为 16 秒(即8个包每个包2s),也有相关资料显示默认的同步频率为每10分钟一次,使用chronyc tracking 查出来的update间隔也差不多这个时间,当出现故障时会自动更新到30分钟一次,默认的最大轮询间隔为 3600 秒(1 小时)。

1)chrony的优势:

1.更快的同步只需要数分钟而非数小时时间,从而最大程度减少时间和频率误差,这对于并非全天24小时的运行的台式计算机或系统而言非常有用;
2.能够更好地响应时钟频率的快速变化,这对于具备不稳定时钟的虚拟机或导致赛事中频率发生比变化的节能技术;
3.在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响;
4.在应对临时非对称延迟时(例如大规模下载造成链接饱和等情况)提供了更好的稳定性;
5.无需对时间服务器进行定期轮询,因此具备间歇性网络连接(如网络不稳定的场景)的系统仍然可以快速同步时钟。

2)chrony比ntp更适合:

chrony可以在访问时间参考是断断续续的环境中有效地执行。ntp需要定期对引用进行轮询才能正常工作。
chrony通常可以更快地同步时钟,并具有更好的时间精度。
chrony快速适应时钟速率的突然变化(例如,由于晶体振荡器的温度变化)。ntp可能需要很长时间才能重新安定下来。
chrony即使在网络拥塞时间较长的情况下也能表现良好。
默认配置中的chrony从不占用时间来不打乱其他正在运行的程序。ntp也可以配置为从不步进时间,但是在这种情况下,它必须使用不同的方法来调整时钟(daemon循环而不是内核规程),这可能会对时钟的准确性产生负面影响。
chrony可以在更大的范围内调整时钟的速率,这使得它甚至可以在时钟中断或不稳定的机器上运行(例如在某些虚拟机中)。
chrony更小,占用的内存更少,只有在需要时才会唤醒CPU,这样更省电。

3)chrony可以实现ntp做不到的功能:

chrony支持网络时间安全(NTS)认证机制。
chrony在Linux上支持硬件时间戳,这允许在本地网络中进行非常稳定和准确的同步。
chrony为独立网络提供支持,无论时间校正的唯一方法是手动输入(例如,由管理员查看时钟)。chrony可以查看在不同更新时更正的错误,计算出计算机获得或丢失时间的速率,并使用此估计值来随后调整计算机时钟。
chrony支持计算实时时钟的增益或丢失率,即在计算机关闭时保持时间的时钟。当系统引导时,它可以使用这些数据从实时时钟的修正版本设置系统时间。到目前为止,这些实时时钟工具仅在Linux上可用。

4)服务端配置

yum install chrony –y  #安装chrony
rpm -qc chrony
rpm -qi chrony

# 编译安装
wget https://download.tuxfamily.org/chrony/chrony-4.3.tar.gz
mkdir /opt/software/chrony
./configure --prefix=/opt/software/chrony
make && make install

[ -d /etc ] || mkdir -p /etc
[ -d /opt/software/chrony/sbin ] || mkdir -p /opt/software/chrony/sbin
[ -d /opt/software/chrony/bin ] || mkdir -p /opt/software/chrony/bin
[ -d /var/lib/chrony ] || mkdir -p /var/lib/chrony
if [ -f /opt/software/chrony/sbin/chronyd ]; then rm -f /opt/software/chrony/sbin/chronyd ; fi
if [ -f /opt/software/chrony/bin/chronyc ]; then rm -f /opt/software/chrony/bin/chronyc ; fi
cp chronyd /opt/software/chrony/sbin/chronyd
chmod 755 /opt/software/chrony/sbin/chronyd
cp chronyc /opt/software/chrony/bin/chronyc
chmod 755 /opt/software/chrony/bin/chronyc
make -C doc install
make[1]: Entering directory `/root/chrony-4.3/doc'
sed -e "s%\@SYSCONFDIR\@%/etc%g; s%\@BINDIR\@%/opt/software/chrony/bin%g; s%\@SBINDIR\@%/opt/software/chrony/sbin%g; s%\@CHRONY_VERSION\@%4.3%g; s%\@DEFAULT_HWCLOCK_FILE\@%%g; s%\@DEFAULT_PID_FILE\@%/var/run/chrony/chronyd.pid%g; s%\@DEFAULT_RTC_DEVICE\@%/dev/rtc%g; s%\@DEFAULT_USER\@%root%g; s%\@CHRONYRUNDIR\@%/var/run/chrony%g; s%\@CHRONYVARDIR\@%/var/lib/chrony%g;" < chrony.conf.man.in > chrony.conf.man
sed -e "s%\@SYSCONFDIR\@%/etc%g; s%\@BINDIR\@%/opt/software/chrony/bin%g; s%\@SBINDIR\@%/opt/software/chrony/sbin%g; s%\@CHRONY_VERSION\@%4.3%g; s%\@DEFAULT_HWCLOCK_FILE\@%%g; s%\@DEFAULT_PID_FILE\@%/var/run/chrony/chronyd.pid%g; s%\@DEFAULT_RTC_DEVICE\@%/dev/rtc%g; s%\@DEFAULT_USER\@%root%g; s%\@CHRONYRUNDIR\@%/var/run/chrony%g; s%\@CHRONYVARDIR\@%/var/lib/chrony%g;" < chronyc.man.in > chronyc.man
sed -e "s%\@SYSCONFDIR\@%/etc%g; s%\@BINDIR\@%/opt/software/chrony/bin%g; s%\@SBINDIR\@%/opt/software/chrony/sbin%g; s%\@CHRONY_VERSION\@%4.3%g; s%\@DEFAULT_HWCLOCK_FILE\@%%g; s%\@DEFAULT_PID_FILE\@%/var/run/chrony/chronyd.pid%g; s%\@DEFAULT_RTC_DEVICE\@%/dev/rtc%g; s%\@DEFAULT_USER\@%root%g; s%\@CHRONYRUNDIR\@%/var/run/chrony%g; s%\@CHRONYVARDIR\@%/var/lib/chrony%g;" < chronyd.man.in > chronyd.man
[ -d /opt/software/chrony/share/man/man1 ] || mkdir -p /opt/software/chrony/share/man/man1
[ -d /opt/software/chrony/share/man/man5 ] || mkdir -p /opt/software/chrony/share/man/man5
[ -d /opt/software/chrony/share/man/man8 ] || mkdir -p /opt/software/chrony/share/man/man8
cp chronyc.man /opt/software/chrony/share/man/man1/chronyc.1
chmod 644 /opt/software/chrony/share/man/man1/chronyc.1
cp chronyd.man /opt/software/chrony/share/man/man8/chronyd.8
chmod 644 /opt/software/chrony/share/man/man8/chronyd.8
cp chrony.conf.man /opt/software/chrony/share/man/man5/chrony.conf.5
chmod 644 /opt/software/chrony/share/man/man5/chrony.conf.5
make[1]: Leaving directory `/root/chrony-4.3/doc'

mkdir -p /etc/chrony/chrony.conf
vi /etc/chrony.conf   //编辑如下

##注释这4行,由于是内网环境,所以无法跟外部时间服务器进行时间同步。
#server 0.rhel.pool.ntp.org iburst   
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst

server 192.168.10.1 iburst    //添加这一行,表示与本机同步时间,设置轮询时间,可配置minpoll 30
maxpoll 1800,即最小轮询间隔设置为 30 秒,最大轮询间隔设置为 1800 秒(30 分钟),但注意,minpoll 的值必须小于 maxpoll 的值。
 
server ntp-sz.ch1.la   iburst
server ntp.gwadar.cn   iburst
 
local stratum 10    

# 根据实际时间计算出服务器增减时间的比率,然后记录到一个文件中,在系统重启后为系统做出最佳时间补偿调整。
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

#stratumweight  //指令设置当chronyd从可用源中选择同步源时,每个层应该添加多少距离到同步距离。默认情况下,CentOS中设置为0,让chronyd在选择源时忽略源的层级。
#stratumweight

# 如果系统时钟的偏移量大于1秒,则允许系统时钟在前三次更新中步进。通常chronyd将根据需求通过减慢或加速时钟,使得系统逐步纠正所有时间偏差。在某些特定情况下,系统时钟可能会漂移过快,导致该调整过程消耗很长的时间来纠正系统时钟。该指令强制chronyd在调整期大于某个阀值时调整系统时钟
# Allow the system clock to be stepped in the first three updates if its offset is larger than 1 second.
makestep 1.0 3

# 启用实时时钟(RTC)的内核同步。即启用内核模式,系统时间每11分钟会拷贝到实时时钟(RTC)
# Enable kernel synchronization of the real-time clock (RTC).
rtcsync

# 通过使用 hwtimestamp 指令启用硬件时间戳
# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *

# Increase the minimum number of selectable sources required to adjust the system clock.
#minsources 2

# 指定 NTP 客户端地址,以允许或拒绝连接到扮演时钟服务器的机器
# Allow NTP client access from local network.
#allow 192.168.0.0/16

allow 192.168.100=.0/24   //允许哪些服务器到这台服务器来同步时间

#可以指定哪台主机可以通过chronyd使用控制命令
#cmdallow / cmddeny
# Serve time even if not synchronized to a time source.
#即使server指令中时间服务器不可用,也允许将本地时间作为标准时间授时给其它客户端chronyc命令
#local stratum 10

# 指定包含 NTP 身份验证密钥的文件。
# Specify file containing keys for NTP authentication.
#keyfile /etc/chrony.keys

# 指定日志文件的目录。
# Specify directory for log files.
logdir /var/log/chrony

# 选择日志文件要记录的信息。
# Select which information is logged.
#log measurements statistics tracking

#配置文件示例:
server 10.100.8.210 iburst  #或server 192.168.10.1 iburst
stratumweight 0				#选择源时忽略源的层级
driftfile /var/lib/chrony/drift  #时间差记录文件
rtcsync				#同步到RTC
makestep 1.0 3       #自我纠正
allow 192.168.1.0/24   # 允许同步的NTP客户端
bindcmdaddress 127.0.0.1  
bindcmdaddress ::1
keyfile /etc/chrony/chrony.keys
commandkey 1
generatecommandkey
noclientlog
logchange 0.5
logdir /var/log/chrony

#完成后启动服务
systemctl start  chronyd
systemctl status chronyd //查看chronyd服务状态
systemctl enable chronyd //开机启动
systemctl enable chronyd.service
./sbin/chronyd -f /etc/chrony/chrony.conf
cat >> /etc/rc.local << EOF
/opt/software/chrony/sbin/chronyd -f /etc/chrony/chrony.conf
EOF

chronyc sourcestats -v  //查看时间同步源状态
chronyc sources -v  //查看时间同步源

#检查配置文件
cat /etc/chrony.conf |sed '/^$/d'|sed '/^#/d'

常用配置项说明: 更多参见chrony3.5.

在这里插入图片描述

Pool 10.210.116.60 #此指令的语法与server指令的语法类似,但这里用于指定NTP服务器池,而不是单个NTP服务器。池名称需要解析为多个地址,这些地址可能会随着时间的推移而改变。

server 0.centos.pool.ntp.org iburst #server可用于时钟服务器,相关资料显示它向外部NTP服务器还是的同步频率为默认每十分钟一次(暂未找到可靠来源);iburst,当服务器可达时,发送八个数据包而不是通常的一个数据包,包间隔通常为2秒,可加快初始同步速度; iburst 参数(一般用此参数即可)的含义是在头四次 NTP 请求将以 2s 或者更短的间隔进行,而不是以 minpoll x 指定的最小间隔,这样的设置可以让 chronyd 启动时快速进行一次同步。其他的参数有 minpoll x 默认值是 6,代表 64s;如果客户端检测到自上次同步以来的时间假设超过了 minpoll 的值,则会立即请求进行时间同步。注意:minpoll短于6(64秒)的间隔通常不应与互联网上的公共服务器一起使用,因为这可能被视为滥用。只有当服务器可到达并且往返延迟小于10毫秒时,即服务器应在本地网络中时,才会启用亚秒间隔。maxpoll x 默认值是10(1024s=16分钟),其中,minpoll:指定 chrony 与上游时间服务器之间的最小轮询间隔,设置得太小会增加服务器的负载。maxpoll:指定 chrony 与上游时间服务器之间的最大轮询间隔。当我们同时设置了 minpoll 和 maxpoll,Chrony将在这两个参数定义的区间内自动调整时间同步频率,以达到最佳的同步效果。当客户端与服务器之间的网络状况发生变化时,Chrony可以根据实际情况自动调整同步频率,以保证时间同步的准确性和效率。

server 1.centos.pool.ntp.org iburst #N.centos.pool.ntp.org:这个是地址池,是ntp服务的虚拟集群,这里可以写成集群地址,也可以写指定的某服务器

peer 10.210.116.160 #同ntp, 对等体模式

driftfile /var/lib/chrony/drift #根据实际时间计算出计算机增减时间的比率,讲它记录到一个文件中,会在重启后为系统时钟做出补偿
makestep 1.0 3 #当头三次校时过程中,如果时间相差 1.0s, 则跳跃式校时
rtcsync #启用内核模式,系统时钟每11分钟会拷贝到实时时钟(RTC)
#allow 192.168.0.0/16 #allow/deny:仅允许/拒绝192.168.2.0/24网络的主机可以访问此时间服务器 deny all拒绝所有客户端
#local stratum 10 #即使server指令中时间服务器不可用,也允许讲本地时间做为标准时间授时给其它客户端
stratumweight 0.05 # 让chronyd在选择源时忽略源的层级
#hwtimestamp * #通过使用 hwtimestamp 指令启用硬件时间戳
#minsources 2 #增加调整所需的可选择源的最小数量
#keyfile /etc/chrony.keys # 指定包含NTP验证密钥的文件。

logdir /var/log/chrony # 指定日志文件的目录。
logchange 0.5 # 如果时钟调整大于0.5秒,则向系统日志发送消息
#log measurements statistics tracking #选择日志文件要记录的信息

验证:检查 chrony 的追踪状态,校准时间服务器

chronyc tracking   //输出类似如下

Reference ID    : CB6B0658 (203.107.6.88)
Stratum         : 3
Ref time (UTC)  : Tue Jul 12 10:14:16 2022
System time     : 0.000216366 seconds slow of NTP time
Last offset     : +0.000670044 seconds
RMS offset      : 0.002618762 seconds
Frequency       : 4.684 ppm fast
Residual freq   : +0.101 ppm
Skew            : 82.085 ppm
Root delay      : 0.030451067 seconds
Root dispersion : 0.004052986 seconds
Update interval : 64.6 seconds
Leap status     : Normal

//查看当前时间源
chronyc sources  -v //或chronyc sourcestats  -v 输出如下

210 Number of sources = 2
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 203.107.6.88                  2   6   377    31  +2555us[+4024us] +/-   16ms
^? 172.67.210.215                0   8     0     -     +0ns[   +0ns] +/-    0ns

//查看当前时间源正在检查的每个源的漂移率和偏移估计过程的信息
chronyc sourcestats			//输出如下

10 Number of sources = 2
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
203.107.6.88               12   8   523     +0.438     15.593  +3746ns  2105us
172.67.210.215              0   0     0     +0.000   2000.000     +0ns  4000ms

#本地服务器作为客户端或上层的peer端,执行以下命令向每一个 NTP 源发送/请求时间戳模式和交错模式的报告
chronyc ntpdata			//输出如下

Remote address  : 203.107.6.88 (CB6B0658)
Remote port     : 123
Local address   : 172.18.1.22 (AC120116)
Leap status     : Normal
Version         : 4
Mode            : Server
Stratum         : 2
Poll interval   : 6 (64 seconds)
Precision       : -25 (0.000000030 seconds)
Root delay      : 0.016312 seconds
Root dispersion : 0.001068 seconds
Reference ID    : 646B1972 ()
Reference time  : Tue Jul 12 10:20:50 2022
Offset          : +0.001417882 seconds
Peer delay      : 0.013491175 seconds
Peer dispersion : 0.000000244 seconds
Response time   : 0.000004805 seconds
Jitter asymmetry: +0.00
NTP tests       : 111 111 1111
Interleaved     : No
Authenticated   : No
TX timestamping : Daemon
RX timestamping : Kernel
Total TX        : 14
Total RX        : 14
Total valid RX  : 14

Remote address  : [UNSPEC] (00000000)
Remote port     : 0
Local address   : [UNSPEC] (00000000)
Leap status     : Normal
Version         : 0
Mode            : Invalid
Stratum         : 0
Poll interval   : 0 (1 seconds)
Precision       : 0 (1.000000000 seconds)
Root delay      : 0.000000 seconds
Root dispersion : 0.000000 seconds
Reference ID    : 00000000 ()
Reference time  : Thu Jan 01 00:00:00 1970
Offset          : +0.000000000 seconds
Peer delay      : 0.000000000 seconds
Peer dispersion : 0.000000000 seconds
Response time   : 0.000000000 seconds
Jitter asymmetry: +0.00
NTP tests       : 000 000 0000
Interleaved     : No
Authenticated   : No
TX timestamping : Invalid
RX timestamping : Invalid
Total TX        : 2
Total RX        : 0
Total valid RX  : 0

//手动执行时间校准,不带参的是立即校队当前系统时间,即使当前时间与时钟源差距较大,也知晓跳跃式校准;
date //确认当前时间,如果一致,就无需执行如下命令
chronyc makestep
chronyc -a makestep // 即直接跳过与chronyd 同步修正时间,将当前客户端时间直接修改成服务器的时间,但这种方法因直接越过了一段系统时间,部分应用程序会因此导致严重的问题,所以,推荐按照 chronyd 逐步修正的方式来同步时间

//配置文件,配置自动步进,后跟两个参数,步进阈值(以秒为单位)和阈值(所对应的未来时钟更新次数);可配合burst一起使用,以快速进行新的测量,并在需要时通过单步执行来校正时钟,而无需等待chronyd完成测量和更新时钟。
makestep 0.1 1
burst 1/2

//设置硬件时间,硬件时间默认为UTC:
timedatectl set-local-rtc 1

//启用NTP时间同步:
timedatectl set-ntp yes

//查看时间同步状态
timedatectl status

//手动强制同步下系统时钟
chronyc -a makestep

//查看与本时间服务器同步的客户端信息
chronyc clients

Hostname                      NTP   Drop Int IntL Last     Cmd   Drop Int  Last
===============================================================================
172.18.1.21                     8      0   6   -    43       0      0   -     -

5)客户端配置

yum install chrony –y

vi /etc/chrony.conf  //编辑如下

#Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.rhel.pool.ntp.org iburst  
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst
server 192.168.10.5 iburst    //添加该行,表示到这台服务器去同步时间


#启动服务
systemctl start  chronyd
systemctl status chronyd
systemctl enable chronyd

#查看未同步时间  
timedatectl status

#开启网络时间同步
timedatectl set-ntp true

#查看和配置时区
timedatectl list-timezones
timedatectl set-timezone Asia/Shanghai

#调整修改日期时间
timedatectl set-time "2020-10-07 11:50:00"

#查看 ntp_servers 是否在线
chronyc activity -v

200 OK
1 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address

# 查看 ntp 详细信息
chronyc tracking -v

Reference ID    : AC120116 (172.18.1.22)
Stratum         : 4
Ref time (UTC)  : Tue Jul 12 10:59:04 2022
System time     : 0.000000002 seconds fast of NTP time
Last offset     : -0.000004065 seconds
RMS offset      : 0.000004065 seconds
Frequency       : 1.571 ppm slow
Residual freq   : -0.000 ppm
Skew            : 198.029 ppm
Root delay      : 0.028379926 seconds
Root dispersion : 0.012206339 seconds
Update interval : 2.0 seconds
Leap status     : Normal

#其它命令
chronyd -q 'server ntp.ntsc.ac.cn iburst'  //临时同步时间
chronyc -n sources -v  //查看时间同步服务器列表  
accheck 		//检查NTP访问是否对特定主机可用
activity  		//该命令会显示有多少NTP源在线/离线
tracking  		//显示系统时间信息
clients  		//在客户端报告已访问到服务器
delete 			//手动移除NTP服务器或对等服务器
settime 		//手动设置守护进程时间
add server 		//手动添加一台新的NTP服务器。

date +%F
date "+%F %T"
date +%Y-%m-%d  //只获取日期
date "+%H:%M:%S" //只获取时间
date +%y-%m-%d %H:%M:%S
date +%s //%s表示时间戳,获取获取1970-01-01 00:00:00到当前时间的秒数
date -d "2010-10-18 00:00:00" +%s  //获取某个时间的秒数
date '+%N  //获取1970-01-01 00:00:00到当前时间的纳秒
date --date=20150820 +%s  //获取2015/08/20 的时间戳
date -d @20150820                 //将时间戳转换为时间
date '+%s'`*1000+`date '+%N'`/1000000 //获取当前时间的纳秒级时间戳
date -d "1970-01-01 UTC 1287331200 seconds" "+%F %T"
date +%A  //显示周几,%a为简写
date +%B  //显示月份,%b为简写
date +%F_%H-%M-%S
date +%Y-%m-%d_%H-%M-%S
date -d yesterday  //显示昨天
date +%Y%m%d -d "-1 day"
date +%Y%m%d -d "+1 day"
date +%Y%m%d -d "-1 month"
date +%Y%m%d -d "+1 month"
date +%Y%m%d --date="-1 month"
date +%Y%m%d --date="+1 month"
date -d"10 day ago 2015-04-01" +%Y-%m-%d  //10天前时间,如果用负数是往前数
date -d"yesterday 20150401" +%Y%m%d		//只减去一天
date -d "20150416 12 3 hour" +"%Y%m%d%H"  //在指定的日期上加上指定的小时
date -d "20150416 12 -1 hour" +"%Y%m%d%H"  //在指定的日期上减去指定的小时
date -d "20150416 12:20 10 minute" +"%Y%m%d%H%M"  //在指定的日期上加上指定的分钟

结果说明:
在这里插入图片描述
在这里插入图片描述
6)配置优化说明:minpoll 和 maxpoll 配置的注意事项

  • minpoll: 指定 chronyd 服务器之间进行轮询的最小时间间隔。较小的 minpoll 值会导致更频繁的轮询,从而增加网络流量和服务器负载。
    \
  • maxpoll: 指定 chronyd 服务器之间进行轮询的最大时间间隔。较大的 maxpoll 值会导致较不频繁的轮询,从而降低网络流量和服务器负载,但可能会导致时间精度降低。

    其中注意:
  • minpoll 值应始终小于 maxpoll 值。
  • 对于具有高网络延迟的时钟,应使用较大的 minpoll 值。
  • 对于具有低网络延迟的时钟,可以使用较小的 minpoll 值。
  • 如果时钟经常失去同步,则可以尝试减小 minpoll 值。
  • 如果时钟的精度太低,则可以尝试减小 maxpoll 值。

    示例:
    server 0.pool.ntp.org minpoll 10 maxpoll 3600 #每 10 秒轮询一次 NTP 服务器,并且将不超过 3600 秒(1 小时)轮询服务器,即只要同步就10s一次,如果自主决定无需同步那最大不超过1小时

❊ 最佳实践:

1)对于具有稳定网络连接的高精度时钟:
minpoll = 10
maxpoll = 3600
2)对于具有不可靠网络连接的时钟:
minpoll = 300
maxpoll = 3600
3)对于具有非常不稳定的网络连接的时钟:
minpoll = 600
maxpoll = 7200

八、Windows时间配置

开启w32time服务
>net start w32time
注册时间服务:注册将作为服务运行的时间服务,并将其默认配置信息添加到注册表。
>w32tm /register
手动添加NTP时间同步服务器,假设我的NTP服务器IP为172.16.166.139
>w32tm /configure /syncfromflags:manual /manualpeerlist:172.16.166.139,0x1/update
manualpeerlist的参数列表中可以添加多个时间源,用空格分隔

手动同步,执行后计算机会主动向服务器同步
>w32tm /resync
查看同步源
>w32tm /query /source
查看时间同步状态
>w32tm /query /status
退出w32time服务
>net stop w32time
查看配置
>w32tm /query /configuration
查看本机与另一台计算机(假设是172.16.166.139)的时间漂移带状图
>w32tm /stripchart /computer:172.16.166.139
显示当前时区设置
>w32tm /tz

8.1、设置系统轮询时间同步的频率

Win + R打开运行窗口,输入gpedit.msc打开本地组策略编辑器

找到路径:计算机配置 \ 管理模板 \ 系统 \ Windows 时间服务 \ 时间提供保护 \ 启用Windows NTP 客户端----双击进入页面,选择已启用
找到路径:计算机配置 \ 管理模板 \ 系统 \ Windows 时间服务 \ 时间提供保护 \ 配置Windows NTP 客户端—双击进入页面,选择已启用

注意:配置选项中有一项SpecialPollInterval(默认1024),手动设置此值,改变时间同步频率
在这里插入图片描述

九、FAQ

9.1、ntpdate同步本地网络时间服务器报:Server dropped: strata too high(层级太高)

执行:ntpdate -d ntp服务端ip //输出如下
在这里插入图片描述
可能原因:

一般都是server端ntp.conf中server行配置了公网中的ntp的服务端url导致,可以收到ntp的包,但是延迟很高,或者本地网络ntp服务配置有错

处理:

restrict 127.0.0.1
restrict -6 ::1
restrict 192.168.11.0 mask 255.255.255.0 nomodify notrap
……
# 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
server 127.127.1.0  prefer  #注意这里本地时钟服务是127.127.1.0 不是127.0.0.1或其他地址
fudge 127.127.1.0  stratum 10

配置完成后重启ntp服务:service ntpd restart

检查验证:ntpq -p #确保显示为本地在这里插入图片描述
非本地或其他错误配合显示如下:
在这里插入图片描述
完成后,目标服务器收到执行同步:

$ ntpdate 192.168.11.206
19 Oct 11:30:31 ntpdate[23069]: step time server 192.168.11.206 offset 20.309733 sec

执行时间校队:

$ date;ssh 192.168.11.205 date  //输出如下

20221019日 星期三 11:31:00 CST
20221019日 星期三 11:31:00 CST

9.2、同步报错Server dropped:no data

这个问题大概率是网络不通,检查防火墙的udp端口123是否开放。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羌俊恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值