NTP介绍

  • NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步到世界协调时UTC(Universal Time Coordinated,世界协调时),UTC 是由原子钟报时的国际标准时间,而 NTP 获得 UTC 的时间来源可以是原子钟、天文台、卫星,也可从 Internet 上面获取。其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。 补充知识:抢票软件等就是提前发送已知的数据包,时间一到服务器开始接受就会第一时间抢到。 NTP 服务器就是利用 NTP 协议提供时间同步服务的。

NTP服务器顾名思义就是时间同步服务器(Network Time Protocol),Linux下的ntp服务器配置相对来说都比较容易,但在Linux下有一个弊端,不同时区或者说是时间相差太大的无法同步,所以在配置ntp服务器之前需要把时间配置成相同的。

NTP时钟同步C/S模式

NTP服务器作用

  • 产生与处理系统是各种计算设备集群的,计算设备将统一、同步的标准时间用于记录各种事件发生时序,如E-MAIL信息、文件创建和访问时间、数据库处理时间等。
  • 系统内不同计算设备之间控制、计算、处理、应用等数据或操作都具有时序性,若计算机时间不同步,这些应用或操作或将无法正常进行。
  • 系统是对时间敏感的计算处理系统,时间同步是大数据能够得到正确处理的基础保障,是大数据得以发挥作用的技术支撑。
  • 大数据时代,整个处理计算系统内的大数据通信都是通过网络进行,时间同步也是如此,利用大数据的互联网络传送标准时间信息,实现大数据系统内时间同步。

NTP时钟同步方式说明
NTP在linux下有两种时钟同步方式,分别为直接同步和平滑同步:

  • 直接同步

  使用ntpdate命令进行同步,直接进行时间变更。如果服务器上存在一个12点运行的任务,当前服务器时间是13点,但标准时间时11点,使用此命令可能会造成任务重复执行。因此使用ntpdate同步可能会引发风险,因此该命令也多用于配置时钟同步服务时第一次同步时间时使用。

  • 平滑同步

  使用ntpd进行时钟同步,可以保证一个时间不经历两次,它每次同步时间的偏移量不会太陡,是慢慢来的,这正因为这样,ntpd平滑同步可能耗费的时间比较长。

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 也存在一定局限性,如果系统时间比正确的时间要快的话,NTP 是不会帮你做调整的,而且当你的时间设置和正确的时间相差很大的时候,NTP 会花上很长一段时间进行同步调整。此外,当本地时间与标准时间相差30分钟以上时, ntpd 会停止工作

环境准备

属性 NTP服务器 NTP客户端
节点 wencheng-1 wencheng-2
系统 CentOS Linux release 7.5.1804 (Minimal) CentOS Linux release 7.5.1804 (Minimal)
内核 3.10.0-862.el7.x86_64 3.10.0-862.el7.x86_64
SELinux setenforce 0 | disabled setenforce 0 | disabled
Firewlld systemctl stop/disabled firewalld systemctl stop/disabled firewalld
IP地址 172.16.70.185 172.16.70.186

NTP服务器操作步骤

  • 1.确认wencheng-1节点是否安装ntp,并修改时区。
[root@wencheng-1 ~]# rpm -qa |  grep ntp
[root@wencheng-1 ~]# yum install -y ntp
[root@wencheng-1 ~]# rpm -qa | grep ntp
ntpdate-4.2.6p5-29.el7.centos.2.x86_64
ntp-4.2.6p5-29.el7.centos.2.x86_64
[root@wencheng-1 ~]# systemctl start ntpd
[root@wencheng-1 ~]# 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 2021-03-25 01:09:13 EDT; 1 months 16 days ago
Process: 8716 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 8717 (ntpd)
CGroup: /system.slice/ntpd.service
└─8717 /usr/sbin/ntpd -u ntp:ntp -g Mar 25 01:09:13 wencheng-1 ntpd[8717]: Listen normally on 2 lo 127.0.0.1 UDP 123
Mar 25 01:09:13 wencheng-1 ntpd[8717]: Listen normally on 3 ens33 172.16.70.185 UDP 123
Mar 25 01:09:13 wencheng-1 ntpd[8717]: Listen normally on 4 lo ::1 UDP 123
Mar 25 01:09:13 wencheng-1 ntpd[8717]: Listen normally on 5 ens33 fe80::20c:29ff:fe7f:222b UDP 123
Mar 25 01:09:13 wencheng-1 ntpd[8717]: Listening on routing socket on fd #22 for interface updates
Mar 25 01:09:13 wencheng-1 ntpd[8717]: 0.0.0.0 c016 06 restart
Mar 25 01:09:13 wencheng-1 ntpd[8717]: 0.0.0.0 c012 02 freq_set kernel 0.000 PPM
Mar 25 01:09:13 wencheng-1 ntpd[8717]: 0.0.0.0 c011 01 freq_not_set
Mar 25 01:09:20 wencheng-1 ntpd[8717]: 0.0.0.0 c61c 0c clock_step +4075317.470688 s
May 11 05:11:18 wencheng-1 ntpd[8717]: 0.0.0.0 c614 04 freq_mode [root@wencheng-1 ~]# netstat -ntplu | grep ntp
udp 0 0 172.16.70.185:123 0.0.0.0:* 11655/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 11655/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 11655/ntpd
udp6 0 0 fe80::20c:29ff:fe7f:123 :::* 11655/ntpd
udp6 0 0 ::1:123 :::* 11655/ntpd
udp6 0 0 :::123 :::* 11655/ntpd [root@wencheng-1 ~]# systemctl enable ntpd
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service. [root@wencheng-1 ~]# timedatectl set-timezone Asia/Shanghai
[root@wencheng-1 ~]# timedatectl
Local time: Tue 2021-05-11 17:16:10 CST
Universal time: Tue 2021-05-11 09:16:10 UTC
RTC time: Thu 2021-03-25 05:04:14
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
  • 2.wencheng-1修改文件 /etc/ntp.conf。
[root@wencheng-1 ~]# mv /etc/ntp.conf /etc/ntp.conf_bak
[root@wencheng-1 ~]# vim /etc/ntp.conf
# 新增一下内容
# --------------------------------------
##记录和上级时间服务器的时间差异.
driftfile /var/lib/ntp/drift ##新增:日志目录.
logfile /var/log/ntpd.log restrict default nomodify
##参数解释
## restrict可以限制客户端权限,可以使用的 parameter说明:
## kod kod技术可以阻止“Kiss of Death “包对服务器的破坏
## nomodity client可通过ntp进行时间同步,但不能通过 ntpq, ntpc 等更改server参数
## notrap 不提供trap远程登陆 (remote event logging) 功能
## nopeer 不与其它同一层的ntp server进行时间同步
## noquery 客户端不能够使用 ntpq, ntpc 等指令来查询时间服务器,即拒绝ntp时间同步;
## notrust 拒绝无认证的client
## ignore 拒绝所有连接到ntp server的请求
## 如果出现问题,可能是ipv6配置出错,可以尝试添加restrict -6 default kod nomodify notrap nopeer noquery #针对ipv6设置
## 或者修改默认为restrict -4 default nomodify notrap nopeer noquery ##打开允许本地所有操作
restrict 127.0.0.1
restrict ::1 restrict 172.16.0.0 mask 255.255.255.0 nomodify notrap
## restrict 用来分配指定网段权限,格式如下:
## restrict [授权同步的网段] mask [netmask] [parameter]
##这一行的含义是授权172.16.0.0网段上的所有机器可以从这台机器上查询和同步时间. ##新增:时间服务器列表.
server time1.aliyun.com
server time2.aliyun.com
server time3.aliyun.com prefer
##参数解释
## server 用来设置上一级ntp服务器,这里使用阿里云提供的ntp服务器,parameter说明:
## prefer 最高优先级
## burst 当一个运程NTP服务器可用时,向它发送一系列的并发包进行检测。
## iburst 当一个运程NTP服务器不可用时,向它发送一系列的并发包进行检测。 # 如果无法与上层ntp server通信以本地时间为标准时间
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10 includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor
# ------------------------------------------
  • 3.ntp服务,默认只会同步系统时间。如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件
[root@wencheng-1 ~]# mv /etc/sysconfig/ntpd /etc/sysconfig/ntpd_bak
[root@wencheng-1 ~]# vim /etc/sysconfig/ntpd
# 添加一下内容
# -------------------------------------------
# Drop root to id 'ntp:ntp' by default.
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid"
# 设置是否同步到硬件时间
SYNC_HWCLOCK=yes
# Additional options for ntpdate 默认选项为-g
NTPDATE_OPTIONS="-g"
# -------------------------------------------
  • 4.验证与状态检查
[root@wencheng-1 ~]# systemctl restart ntpd
[root@wencheng-1 ~]# netstat -ntplu | grep ntp
udp 0 0 172.16.70.185:123 0.0.0.0:* 11655/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 11655/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 11655/ntpd
udp6 0 0 fe80::20c:29ff:fe7f:123 :::* 11655/ntpd
udp6 0 0 ::1:123 :::* 11655/ntpd
udp6 0 0 :::123 :::* 11655/ntpd [root@wencheng-1 ~]# ntpstat
synchronised to NTP server (203.107.6.88) at stratum 3
time correct to within 479 ms
polling server every 64 s
注意:此命令出现上述synchronised结果比较慢,都等待几分钟。 [C:\~]$ ping time3.aliyun.com    # 验证文件/etc/ntp.conf的server time3.aliyun.com prefer对应IP地址
正在 Ping ntp.aliyun.com [203.107.6.88] 具有 32 字节的数据:
来自 203.107.6.88 的回复: 字节=32 时间=40ms TTL=51
来自 203.107.6.88 的回复: 字节=32 时间=40ms TTL=51
来自 203.107.6.88 的回复: 字节=32 时间=44ms TTL=51
来自 203.107.6.88 的回复: 字节=32 时间=41ms TTL=51
203.107.6.88 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 40ms,最长 = 44ms,平均 = 41ms [root@wencheng-1 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*203.107.6.88 10.137.38.86 2 u 66 64 377 39.198 5.282 2.988
LOCAL(0) .LOCL. 10 l 531 64 0 0.000 0.000 0.000 ntpq -p 参数详解
remote :本地主机所连接的上层NTP服务器,最左边的符号如下:
如果有[*] 代表目前正在使用当中的上层NTP服务器。
如果有[+] 代表也有连上上层NTP服务器,可以作为提高时间更新的候选NTP服务器
如果有[-] 代表同步的该NTP服务器被认为是不合格的NTP Server
如果有[x] 代表同步的外网NTP服务器不可用
refid :指的是给上层NTP服务器提供时间校对的服务器。
St:上层NTP服务器的级别。
When: 上一次与上层NTP服务器进行时间校对的时间(单位:s)
Poll :本地主机与上层NTP服务器进行时间校对的周期(单位:s)
reach:八进制数,表示最近8次时钟同步包接收情况(1表示接收成功,0表示接收失败。每接收一个包左移一位。对于一个运行较长时间的NTP client而言,这个值应该是377->11,111,111,即最近8次包接收均成功;否则表示有丢包情况发生).
delay:网络传输过程当中延迟的时间,单位为 10^(-6) 秒
offset:时间补偿的结果,单位为10^(-6) 秒
jitter:Linux 系统时间与 BIOS 硬件时间的差异时间, 单位为 10^(-6) 秒。

 NTP客户端操作步骤。

  • 1.确认是否安装ntp,并修改时区。
[root@wencheng-2 ~]# yum install -y ntp
[root@wencheng-1 ~]# rpm -qa | grep ntp
ntpdate-4.2.6p5-29.el7.centos.2.x86_64
ntp-4.2.6p5-29.el7.centos.2.x86_64 [root@wencheng-2 ~]# timedatectl set-timezone Asia/Shanghai
[root@wencheng-2 ~]# date -s "2020-10-10 10:10"    #预设置错误的时间
[root@wencheng-2 ~]# timedatectl
Local time: Sat 2020-10-10 10:16:35 CST
Universal time: Sat 2020-10-10 02:16:35 UTC
RTC time: Wed 2021-05-12 04:18:08
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
  • 2.修改文件/etc/ntp.conf,主要修改Server选择部分。
[root@wencheng-2 ~]# cp /etc/ntp.conf /etc/ntp.conf_bak
[root@wencheng-2 ~]# 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 #注释所有centos.pool.ntp,再新增
server 172.16.70.185 frefer
fudge 172.16.70.185 stratum 10
  • 3.验证与状态检查
[root@wencheng-2 ~]# systemctl start ntpd
[root@wencheng-2 ~]# systemctl enable ntpd [root@wencheng-2 ~]# netstat -nutpl | grep ntp
udp 0 0 172.16.70.186:123 0.0.0.0:* 9088/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 9088/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 9088/ntpd
udp6 0 0 fe80::20c:29ff:fef6:123 :::* 9088/ntpd
udp6 0 0 ::1:123 :::* 9088/ntpd
udp6 0 0 :::123 :::* 9088/ntpd [root@wencheng-2 ~]# ntpstat
synchronised to NTP server (172.16.70.185) at stratum 4
time correct to within 76 ms
polling server every 256 s [root@wencheng-2 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*172.16.70.185 203.107.6.88 3 u 253 256 377 0.312 1.557 0.997 [root@wencheng-2 ~]# timedatectl
Local time: Wed 2021-05-12 14:24:30 CST
Universal time: Wed 2021-05-12 06:24:30 UTC
RTC time: Wed 2021-05-12 06:24:30
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
  • 4.添加时间同步计划任务。
[root@wencheng-2 ~]# vim /etc/cron.d/ntp
# 每两个小时同步一次,并修改硬件时间
0 */2 * * * /usr/sbin/ntpdate 172.16.70.185 && /usr/sbin/hwclock -w &>/dev/null

至此,NTP服务器构建,并完成客户端时间同步!

 
 
 
 
 
 

Linux集群环境下NTP服务器时间同步的更多相关文章

  1. CAS服务器集群和客户端集群环境下的单点登录和单点注销解决方案

    CAS的集群环境,包括CAS的客户应用是集群环境,以及CAS服务本身是集群环境这两种情况.在集群环境下使用CAS,要解决两个问题,一是单点退出(注销)时,CAS如何将退出请求正确转发到用户sessio ...

  2. 在Hadoop1.2.1分布式集群环境下安装hive0.12

    在Hadoop1.2.1分布式集群环境下安装hive0.12 ● 前言: 1. 大家最好通读一遍过后,在理解的基础上再按照步骤搭建. 2. 之前写过两篇<<在VMware下安装Ubuntu ...

  3. 在tomcat集群环境下redis实现分布式锁

    上篇介绍了redis在集群环境下如何解决session共享的问题.今天来讲一下如何解决分布式锁的问题 什么是分布式锁? 分布式锁就是在多个服务器中,都来争夺某一资源.这时候我们肯定需要一把锁是不是 , ...

  4. 分布式集群环境下,如何实现session共享一(应用场景)

    在web应用中,由于http的请求响应式,无状态.要记录用户相关的状态信息,比如电商网站的购物车,比如用户是否登录等,都需要使用session.我们知道session是由servlet容器创建和管理, ...

  5. 分布式集群环境下,如何实现session共享四(部署项目测试)

    这是分布式集群环境下,如何实现session共享系列的第四篇.在上一篇:分布式集群环境下,如何实现session共享三(环境搭建)中,已经准备好了相关的环境:tomcat.nginx.redis.本篇 ...

  6. 分布式集群环境下,如何实现session共享三(环境搭建)

    这是分布式集群环境下,如何实现session共享系列的第三篇.在上一篇:分布式集群环境下,如何实现session共享二(项目开发)中,准备好了一个通过原生态的servlet操作session的案例.本 ...

  7. quartz在集群环境下的最终解决方案

    在集群环境下,大家会碰到一直困扰的问题,即多个 APP 下如何用 quartz 协调处理自动化 JOB . 大家想象一下,现在有 A , B , C3 台机器同时作为集群服务器对外统一提供 SERVI ...

  8. 集群环境下,Session管理的几种手段

    集群环境下,Session管理的几种手段 1.Session复制 缺点:集群服务器间需要大量的通信进行Session复制,占用服务器和网络的大量资源. 由于所有用户的Session信息在每台服务器上都 ...

  9. Redis集群环境下的键值空间监听事件实现方案

    一直想记录工作中遇到的问题和解决的方法,奈何没有找到一方乐土,最近经常反思,是否需要记录平时的点滴,后台还是决定下定决心记录一些,以便以后用到的时候找不着,实现这样的一个功能主要也是业务所需要的. 需 ...

随机推荐

  1. 前端用网址生成二维码(jquery)

    1.加载jquery.qrcode.min.js 2.html部分: 3.js部分:url为生成二维码的网址 附: jquery.qrcode.min.js下载 链接:https://pan.baid ...

  2. sql常识-RIGHT JOIN

    SQL RIGHT JOIN 关键字 RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行. RIGHT JOIN ...

  3. c++vs类图

    安装visual studio扩展开发工具 一定要勾选右侧栏中的类设计器 安装完成后在菜单栏点击视图--类视图,会出现类视图框,在框中右键项目--查看类视图,就自动生成了.

  4. 【Web前端HTML5&CSS3】05-样式继承与其他概念

    笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版 目录 样式继承与其他概念 1. 继承 2. 选择器的权重 3. 长度单位 像素 屏幕分辨率 图像分辨率 百分比 em ...

  5. Apache Hudi集成Spark SQL抢先体验

    Apache Hudi集成Spark SQL抢先体验 1. 摘要 社区小伙伴一直期待的Hudi整合Spark SQL的PR正在积极Review中并已经快接近尾声,Hudi集成Spark SQL预计会在 ...

  6. 02、SpringBoot2入门

    1.系统要求 Java 8 & 兼容java14 . Maven 3.3+ idea 2019.1.2 1.1.maven设置 <mirrors> <mirror> & ...

  7. zimbra启用SMTP认证

    zmprov modifyServer {{ you domain }} zimbraMtaTlsAuthOnly FALSE zmcontrol restart 查看对应配置 zmprov getS ...

  8. [刷题] PTA 02-线性结构4 Pop Sequence

    模拟栈进出 方法一: 1 #include<stdio.h> 2 #define MAXSIZE 1000 3 4 typedef struct{ 5 int data[MAXSIZE]; ...

  9. CentOS 7 vs. CentOS 8 版本差异大比拼

    CentOS 7 vs. CentOS 8 版本差異大比拼 2020-02-14 CentOS 最近剛好在撰寫課鋼,必須要以最新的 CentOS 8 版本為主,剛好來做一下 CentOS 7 和 Ce ...

  10. 解决 Ubuntu 无法使用 root 用户进行 ssh 远程登陆

    解决 Ubuntu 无法使用 root 用户进行 ssh 远程登陆 操作系统 Ubuntu 20.04.2 LTS 一.修改sshd配置文件 //打开 /etc/ssh/sshd_config 配置文 ...