时钟同步服务器ntp安装文档

2023-02-21,,,,

应用场景

同步时钟很有必要,如果服务器的时间差过大会出现不必要的问题

大数据产生与处理系统是各种计算设备集群的,计算设备将统一、同步的标准时间用于记录各种事件发生时序,

如E-MAIL信息、文件创建和访问时间、数据库处理时间等。

大数据系统内不同计算设备之间控制、计算、处理、应用等数据或操作都具有时序性,

若计算机时间不同步,这些应用或操作或将无法正常进行。

大数据系统是对时间敏感的计算处理系统,时间同步是大数据能够得到正确处理的基础保障,是大数据得以发挥作用的技术支撑。

大数据时代,整个处理计算系统内的大数据通信都是通过网络进行。

时间同步也是如此,利用大数据的互联网络传送标准时间信息,实现大数据系统内时间同步。

网络时间同步协议(NTP)是时间同步的技术基础。

基础知识

#date #查看或者设置当前系统的时间

#
timedatectl | grep "Time zone" #查看当前时区

date –s 2019-9-12 手动设置日期,date -s 14:30:00 手动设置时间

Linux里面用Asia/Shanghai表示东八区,等价于Windows中的 北京、重庆、香港特别行政区,乌鲁木齐的时区设置。

如果安装时选错了时区,或者使用了默认的纽约时区,可以通过以下命令进行修改:

#cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

Ntp服务也可以分服务端和客户端,比如在一个集群中,服务器不允许连接外网,那么就无法从互联网同步时钟,此时就可以单独选一台能够连接互联网的服务器做为服务端,让其和互联网的时间进行同步,而其他不能上外网的服务器和服务端再进行同步就作为客户端,这样就能保证所有的机器都可以保证时间同步,本文将采取这种方式

安装ntp服务

确认是否已安装ntp,若只有ntpdate而未见ntp,则需删除原有ntpdate。

rpm -qa | grep ntp

首先安装ntp,所有节点都需要执行

#yum install ntp

安装完毕之后,启动服务

#systemctl start ntpd.service

设置开机自启动

#systemctl enable ntpd.service

重新启动服务:systemctl restart ntpd

ntp服务端设置

第一台服务器192.168.194.11,作为ntpserver,将他设置为同步外网时间(ntpd服务开启默认就能够同步时间,即安装好之后什么也不用改,直接启动就可以使用)。

但是如果作为服务端得设置允许内网网段可以连接它,将它作为内网的时间同步服务器,所以需要一个简单配置。

vi /etc/ntp.conf

#添加如下配置,如果集群不在同一个网段中,可以安装规则添加多行

restrict 192.168.194.0 mask 255.255.255.0

192.168.194.0集群所在网段,192.168.194是网段,最后一个写0就可以,网上有些说是写网段所在的网关地址,亲测写网关地址不好使,所以推荐直接写网段所在的最后一位为0的ip地址,255.255.255.0为子网掩码(Genmask)这里一般是这个

如果不想使用默认的互联网同步时间,可以修改为国内的,国内的也有很多,可以在百度上搜索,下面是修改为阿里云的:

#将默认的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 time1.aliyun.com

server time2.aliyun.com

server time3.aliyun.com

server time4.aliyun.com

server time5.aliyun.com

server time6.aliyun.com

server time7.aliyun.com

服务端完整修改后的配置如下

服务端没有联网的清空下需要同步自己时的配置

添加两个restrict

restrict 127.0.0.1

restrict ::1

表示允许自己同步自己

Server参数填写 server 127.127.1.0 #注意,不是127.0.0.1,必须是127.127.1.0

修改后的完整参数如下:

# 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 10.80.32.0 mask 255.255.255.0

# 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).

#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

修改完之后重新启动服务:systemctl restart ntpd

使用ntpstat 命令可以查看ntp检查效果:

使用命令watch "ntpq -p" 可以查看ntp运行状态,(ntpq –p可以打印除瞬时状态,加上watch就可以持续查看ntp运行状态)

Remote 值表示阿里云同步时钟的ip(本文已经配置了阿里云的服务器),refid是上级的同步地址,即阿里云的同步服务器,如果delay和offset的值都不为0,则一般表示配置成功,这两个值表示的是时间差和网路延迟,即便再好的网路也会存在延迟,所以当值为0时可以考虑服务出现了问题。其他的变量意义可以参考文档最后说明

配置成功后,可以使用date -s HH:MM:SS 设置一个错误的时间然后看是否能自动同步,设置的时间不要和真实时间差别太大,网上有说如果超过1000秒ntp就会停止时间同步,所以可以错个两分钟只要能和真实时间区别开即可。同步过程也会花费很长时间,在手动调整时间之后并不会立马将时间改过来,可能要等上10分钟或者30分钟都有可能,但一般不会超过一个小时,所以说ntp安装很简单,测试比较麻烦,可能要等上很久才能看到效果。

ntp客户端设置

客户端设置和服务端设置相似

服务端原理是自己同步互联网的时间,同时又能够让其他服务器同步自己的时间。

客户端原理是本来默认的配置也是同步contos的时间,现在人为指定去同步服务端的时间,客户端不需要其他服务器来同步自己的时间,所以客户端就不用添加"restrict 192.168.194.0 mask 255.255.255.0"配置,其实,本文所说的客户端,服务端是相对的,如果客户端中也允许其他服务器来向自己同步,那么客户端也可以作为服务端来用,

客户端的具体配置如下

vim /etc/ntp.conf

#注释以下几行

#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

#添加下面一行,将同步设置指向上一步的服务端ip

server 192.168.194.11

客户端完整修改后的配置如下

    

修改完之后重新启动服务:systemctl restart ntpd

使用命令watch "ntpq -p" 查看运行状态

在客户端刚启动之后,会先进入初始化状态,refid的值为 .INIT. 即表示在初始状态,remote的值为服务端的ip说明配置成功,初始化过程需要等待大约10多分钟。Refid的状态意义看参考文档最后说明

等到refid的状态改变其值为一个ip,其实该ip就是服务端中的remote的ip,即表示客户端间接同步的是阿里云的时间,同时delay和offset的值不为0说明初始化完成,服务正常运行,效果如下:

测试:

客户端测试和服务端测试类似,同样修改一个错误的时间(最好和服务端的那个错误的时间也步相同)看是否能够自动同步,客户端可能会花费更长的时间,其中需要注意的是客户端是同步的服务端时间,只要保证客户端和服务端的时间一样就说明同步成功,因为客户端在同步时有可能服务端的时间还没和互联网同步。

防火墙

Ntp使用端口是udp协议123端口,若开启防火墙则需要开放123/udp端口,命令:

开放防火墙

firewall-cmd --zone=public --add-port=123/udp –permanent

刷新

firewall-cmd --reload

说明

watch "ntpq -p"命令详解

remote: 本机和上层ntp的ip或主机名,"+"表示优先,"*"表示次优先

远程主机使用的这台机器作为同步服务器

"x" – 已不再使用

"-" – 已不再使用

"#" – 良好的远程节点或服务器但是未被使用 (不在按同步距离排序的前六个节点中,作为备用节点使用)

"+" – 良好的且优先使用的远程节点或服务器(包含在组合算法中)

"*" – 当前作为优先主同步对象的远程节点或服务器

"o" – PPS 节点 (当优先节点是有效时)。实际的系统同步是源于秒脉冲信号(pulse-per-second,PPS),可能通过PPS 时钟驱动或者通过内核接口。

refid: 远程NTP服务器的上层服务器的IP地址或域名。参考上一层ntp主机地址

st: 远程NTP服务器所在的层数。

t: 本地NTP服务器与远程NTP服务器的通信方式,u: 单播; b: 广播; l: 本地。

when: 上一次校正时间与现在时间的差值。多少秒前曾经同步过时间

poll: 本地NTP服务器查询远程NTP服务器的时间间隔。

reach: 是一种衡量前8次查询是否成功的位掩码值,377表示都成功,0表示不成功。已经向上层ntp服务器要求更新的次数

delay: 网络延时,单位是10的-6次方秒。

offset: 本地NTP服务器与远程NTP服务器的时间偏移。时间补偿

jitter: 查询偏差的分布值,用于表示远程NTP服务器的网络延时是否稳定,单位为10的-6次方秒.系统时间与bios时间差

refid 有下面这些状态值

一个IP地址 – 远程节点或服务器的 IP 地址

.LOCL. – 本机 (当没有远程节点或服务器可用时)

.PPS. – 时间标准中的"Pulse Per Second"(秒脉冲)

.IRIG. – Inter-Range Instrumentation Group 时间码

.ACTS. – 美国 NIST 标准时间 电话调制器

.NIST. –美国 NIST 标准时间电话调制器

.PTB. – 德国 PTB 时间标准电话调制器

.USNO. – 美国 USNO 标准时间 电话调制器

.CHU. – CHU (HF, Ottawa, ON, Canada) 标准时间无线电接收器

.DCFa. – DCF77 (LF, Mainflingen, Germany) 标准时间无线电接收器

.HBG. – HBG (LF Prangins, Switzerland) 标准时间无线电接收器

.JJY. – JJY (LF Fukushima, Japan) 标准时间无线电接收器

.LORC. – LORAN-C station (MF) 标准时间无线电接收器,注: 不再可用 (被 eLORAN 废弃)

.MSF. – MSF (LF, Anthorn, Great Britain) 标准时间无线电接收器

.TDF. – TDF (MF, Allouis, France)标准时间无线电接收器

.WWV. – WWV (HF, Ft. Collins, CO, America) 标准时间无线电接收器

.WWVB. – WWVB (LF, Ft. Collins, CO, America) 标准时间无线电接收器

.WWVH. – WWVH (HF, Kauai, HI, America) 标准时间无线电接收器

.GOES. – 美国静止环境观测卫星;

.GPS. – 美国 GPS;

.GAL. – 伽利略定位系统欧洲 GNSS;

.ACST. – 选播服务器

.AUTH. – 认证错误

.AUTO. – Autokey (NTP 的一种认证机制)顺序错误

.BCST. – 广播服务器

.CRYPT. – Autokey 协议错误

.DENY. – 服务器拒绝访问;

.INIT. – 关联初始化

.MCST. – 多播服务器

.RATE. – (轮询) 速率超出限定

.TIME. – 关联超时

.STEP. – 间隔时长改变,偏移量比危险阈值小(1000ms) 比间隔时间 (125ms)大

/etc/ntp.conf 配置内容

先处理权限方面的问题,包括放行上层服务器以及开放局域网用户来源:

restrict default kod nomodify notrap nopeer noquery <==拒绝 IPv4 的用户

restrict -6 default kod nomodify notrap nopeer noquery <==拒绝 IPv6 的用户

restrict 220.130.158.71 <==放行 tock.stdtime.gov.tw 进入本 NTP 的服务器

restrict 59.124.196.83 <==放行 tick.stdtime.gov.tw 进入本 NTP 的服务器

restrict 59.124.196.84 <==放行 time.stdtime.gov.tw 进入本 NTP 的服务器

restrict 127.0.0.1 <==底下两个是默认值,放行本机来源

restrict -6 ::1

restrict 192.168.100.0 mask 255.255.255.0 nomodify <==放行局域网用户来源,或者列出单独IP

设定主机来源,请先将原本的 [0|1|2].centos.pool.ntp.org 的设定批注掉:

server 220.130.158.71 prefer <==以这部主机为最优先的server

server 59.124.196.83

server 59.124.196.84

默认的一个内部时钟数据,用在没有外部 NTP 服务器时,使用它为局域网用户提供服务:

server 127.127.1.0 # local clock

fudge 127.127.1.0 stratum 10

预设时间差异分析档案与暂不用到的 keys 等,不需要更动它:

driftfile /var/lib/ntp/drift

keys /etc/ntp/keys

restrict选项格式

restrict [ 客户端IP ] mask [ IP掩码 ] [参数]

"客户端IP" 和 "IP掩码" 指定了对网络中哪些范围的计算机进行控制,如果使用default关键字,则表示对所有的计算机进行控制,参数指定了具体的限制内容,常见的参数如下:

ignore:拒绝连接到NTP服务器

nomodiy: 客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。

noquery: 不提供客户端的时间查询

notrap: 不提供trap远程登录功能,trap服务是一种远程时间日志服务。

notrust: 客户端除非通过认证,否则该客户端来源将被视为不信任子网 。

nopeer: 提供时间服务,但不作为对等体。

kod: 向不安全的访问者发送Kiss-Of-Death报文。

server选项格式

server host [ key n ] [ version n ] [ prefer ] [ mode n ] [ minpoll n ] [ maxpoll n ] [ iburst ]

其中host是上层NTP服务器的IP地址或域名,随后所跟的参数解释如下所示:

key: 表示所有发往服务器的报文包含有秘钥加密的认证信息,n是32位的整数,表示秘钥号。

version: 表示发往上层服务器的报文使用的版本号,n默认是3,可以是1或者2。

prefer: 如果有多个server选项,具有该参数的服务器有限使用。

mode: 指定数据报文mode字段的值。

minpoll: 指定与查询该服务器的最小时间间隔为2的n次方秒,n默认为6,范围为4-14。

maxpoll: 指定与查询该服务器的最大时间间隔为2的n次方秒,n默认为10,范围为4-14。

iburst: 当初始同步请求时,采用突发方式接连发送8个报文,时间间隔为2秒。

查看网关方法

【命令1】route -n

【命令2】ip route show

【命令3】netstat –r

同步硬件时钟

ntp服务,默认只会同步系统时间。

如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件,

在/etc/sysconfig/ntpd文件中,添加【SYNC_HWCLOCK=yes】这样,就可以让硬件时间与系统时间一起同步。

允许BIOS与系统时间同步,也可以通过hwclock -w 命令。

ntpd、ntpdate的区别

使用之前得弄清楚一个问题,ntpd与ntpdate在更新时间时有什么区别。

ntpd不仅仅是时间同步服务器,它还可以做客户端与标准时间服务器进行同步时间,而且是平滑同步,

并非ntpdate立即同步,在生产环境中慎用ntpdate,也正如此两者不可同时运行。

时钟的跃变,对于某些程序会导致很严重的问题。

许多应用程序依赖连续的时钟——毕竟,这是一项常见的假定,即,取得的时间是线性的,一些操作,例如数据库事务,通常会地依赖这样的事实:时间不会往回跳跃。

不幸的是,ntpdate调整时间的方式就是我们所说的"跃变":在获得一个时间之后,ntpdate使用settimeofday(2)设置系统时间,

这有几个非常明显的问题:

【一】这样做不安全。

ntpdate的设置依赖于ntp服务器的安全性,攻击者可以利用一些软件设计上的缺陷,拿下ntp服务器并令与其同步的服务器执行某些消耗性的任务。

由于ntpdate采用的方式是跳变,跟随它的服务器无法知道是否发生了异常(时间不一样的时候,唯一的办法是以服务器为准)。

【二】这样做不精确。

一旦ntp服务器宕机,跟随它的服务器也就会无法同步时间。

与此不同,ntpd不仅能够校准计算机的时间,而且能够校准计算机的时钟。

【三】这样做不够优雅。

由于是跳变,而不是使时间变快或变慢,依赖时序的程序会出错

(例如,如果ntpdate发现你的时间快了,则可能会经历两个相同的时刻,对某些应用而言,这是致命的)。

因而,唯一一个可以令时间发生跳变的点,是计算机刚刚启动,但还没有启动很多服务的那个时候。

其余的时候,理想的做法是使用ntpd来校准时钟,而不是调整计算机时钟上的时间。

NTPD在和时间服务器的同步过程中,会把BIOS计时器的振荡频率偏差——或者说Local Clock的自然漂移(drift)——记录下来。

这样即使网络有问题,本机仍然能维持一个相当精确的走时。

国内常用NTP服务器地址及IP

210.72.145.44 (国家授时中心服务器IP地址)

133.100.11.8 日本 福冈大学

time-a.nist.gov 129.6.15.28 NIST, Gaithersburg, Maryland

time-b.nist.gov 129.6.15.29 NIST, Gaithersburg, Maryland

time-a.timefreq.bldrdoc.gov 132.163.4.101 NIST, Boulder, Colorado

time-b.timefreq.bldrdoc.gov 132.163.4.102 NIST, Boulder, Colorado

time-c.timefreq.bldrdoc.gov 132.163.4.103 NIST, Boulder, Colorado

utcnist.colorado.edu 128.138.140.44 University of Colorado, Boulder

time.nist.gov 192.43.244.18 NCAR, Boulder, Colorado

time-nw.nist.gov 131.107.1.10 Microsoft, Redmond, Washington

nist1.symmetricom.com 69.25.96.13 Symmetricom, San Jose, California

nist1-dc.glassey.com 216.200.93.8 Abovenet, Virginia

nist1-ny.glassey.com 208.184.49.9 Abovenet, New York City

nist1-sj.glassey.com 207.126.98.204 Abovenet, San Jose, California

nist1.aol-ca.truetime.com 207.200.81.113 TrueTime, AOL facility, Sunnyvale, California

nist1.aol-va.truetime.com 64.236.96.53 TrueTime, AOL facility, Virginia

ntp.sjtu.edu.cn 202.120.2.101 (上海交通大学网络中心NTP服务器地址)

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 北京大学

层次(stratum)

stratum根据上层server的层次而设定(+1)。

对于提供network time service provider的主机来说,stratum的设定要尽可能准确。

而作为局域网的time service provider,通常将stratum设置为10

0层的服务器采用的是原子钟、GPS钟等物理设备,stratum 1与stratum 0 是直接相连的,

往后的stratum与上一层stratum通过网络相连,同一层的server也可以交互。

ntpd对下层client来说是service server,对于上层server来说它是client。

ntpd根据配置文件的参数决定是要为其他服务器提供时钟服务或者是从其他服务器同步时钟。所有的配置都在/etc/ntp.conf文件中。

时钟同步服务器ntp安装文档的相关教程结束。