网络时间服务的简介及搭建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络时间服务的简介及搭建相关的知识,希望对你有一定的参考价值。

网络时间服务NTP/CHRONY


  当多台主机协作工作时,各个主机的时间同步很重要,时间不一致会造成很多重要应用的故障,如:加密协议、日志、集群等,利用NTP(Network Time Protocol)协议使网络中的各个计算机时间达到同步。目前NTP协议属于运维基础架构中必备的基本服务之一

实现时间同步的工具

  1) ntp
  2) chrony

ntp

  将系统时钟和世界协调时UTC同步,精度在局域网内可达0.1ms,在互联网上绝大多数的地方精度可以达到1-50ms

chrony

  实现NTP协议的的自由软件。可使系统时钟与NTP服务器,参考时钟(例如GPS接收器)以及使用手表和键盘的手动输入进行同步。还可以作为NTPv4(RFC 5905)服务器和对等体运行,为网络中的计算机提供时间服务。设计用于在各种条件下良好运行,包括间歇性和高度拥挤的网络连接,温度变化(计算机时钟对温度敏感),以及不能连续运行或在虚拟机上运行的系统。通过Internet同步的两台机器之间的典型精度在几毫秒之内,在LAN上,精度通常为几十微秒。利用硬件时间戳或硬件参考时钟,可实现亚微秒的精度

chrony的优势

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

关于chrony的介绍

安装包名:chrony

两个主要的程序:chronyd、chronyc

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

  chronyc:命令行用户工具,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可在一台不同的远程计算机上工作

服务unit文件

  /usr/lib/systemd/system/chronyd.service

监听端口

  323/udp,123/udp

配置文件

  /etc/chrony.conf

配置文件中参数的介绍

  server - 可用于时钟服务器,iburst 选项当服务器可达时,发送一个八个数据包而不是通常的一个数据包。 包间隔通常为2秒,可加快初始同步速度

  driftfile - 根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中,会在重启后为系统时钟作出补偿

  rtcsync - 启用内核模式,系统时间每11分钟会拷贝到实时时钟(RTC)

  allow / deny - 指定一台主机、子网,或者网络以允许或拒绝访问本服务器

  cmdallow / cmddeny - 可以指定哪台主机可以通过chronyd使用控制命令

  bindcmdaddress - 允许chronyd监听哪个接口来接收由chronyc执行的命令

  makestep - 通常chronyd将根据需求通过减慢或加速时钟,使得系统逐步纠正所有时间偏差。在某些特定情况下,系统时钟可能会漂移过快,导致该调整过程消耗很长的时间来纠正系统时钟。该指令强制chronyd在调整期大于某个阀值时调整系统时钟

  local stratum 10 - 即使server指令中时间服务器不可用,也允许将本地时间作为标准时间授时给其它客户端

chronyc命令

  help命令可以查看更多chronyc的交互命令
  accheck 检查是否对特定主机可访问当前服务器
  activity 显示有多少NTP源在线/离线
  sources [-v] 显示当前时间源的同步信息
  sourcestats [-v]显示当前时间源的同步统计信息
  add server 手动添加一台新的NTP服务器
   clients 报告已访问本服务器的客户端列表
  delete 手动移除NTP服务器或对等服务器
  settime 手动设置守护进程时间
  sracking 显示系统时间信息

公共NTP服务

pool.ntp.org:项目是一个提供可靠易用的NTP服务的虚拟集群

  cn.pool.ntp.org,0-3.cn.pool.ntp.org

阿里云公共NTP服务器

  Unix/linux类:ntp.aliyun.com,ntp1-7.aliyun.com
  windows类: time.pool.aliyun.com

大学ntp服务

  s1a.time.edu.cn 北京邮电大学
  s1b.time.edu.cn 清华大学
  s1c.time.edu.cn 北京大学

国家授时中心服务器

  210.72.145.44

时间工具

timedatectl

  查看日期时间、时区及NTP状态:timedatectl
  查看时区列表:timedatectl list-timezones
  修改时区:timedatectl set-timezone Asia/Shanghai
  修改日期时间:timedatectl set-time "2017-01-23 10:30:00"
  开启NTP: timedatectl set-ntp true/flase

system-config-date:图形化配置chrony服务的工具

实验:网络时间同步

  本次实验通过系统时间、硬件时间的设定和修改;
  通过ntp、chrony两个服务实现时间同步。
centos6 192.168.36.100 两个网卡:1、外网卡DHCP获取IP,通过配置NTP实现外网时钟同步。2、内网卡充当内网时钟同步服务器
centos7 192.168.36.101 内网客户端

两台主机查看并修改系统时间

[[email protected] ~]# date
Thu Apr 18 15:54:17 CST 2019
[[email protected] ~]# date -s "-1 years"
Wed Apr 18 15:54:27 CST 2018

ntp配置文件修改

[[email protected] ~]# vim /etc/ntp.conf
...
8 restrict default kod nomodify #允许客户端进行网络校时
9 restrict -6 default kod nomodify notrap nopeer noquery
...
22 server 172.22.0.1 iburst #设定NTP主机来源,其中iburst也可以设置成prefer,表示优先此主机
23 #server 0.centos.pool.ntp.org iburst
24 #server 1.centos.pool.ntp.org iburst
25 #server 2.centos.pool.ntp.org iburst
26 #server 3.centos.pool.ntp.org iburst
...

各选项信息

restrict 控制相关权限

语法为: restrict IP地址 mask 子网掩码 参数

其中IP地址也可以是default ,default 就是指所有的IP
参数有以下几个

    ignore  :关闭所有的 NTP 联机服务  
    nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时  
    notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网  
    noquery :不提供客户端的时间查询:用户端不能使用ntpq,ntpc等命令来查询ntp服务器  
    notrap :不提供trap远端登陆:拒绝为匹配的主机提供模式 6 控制消息陷阱服务。陷阱服务是 ntpdq 控制消息协议的子系统,用于远程事件日志记录程序  
    nopeer :用于阻止主机尝试与服务器对等,并允许欺诈性服务器控制时钟  
    kod : 访问违规时发送 KoD 包  
    restrict -6 表示IPV6地址的权限设置  

启动服务实现时间同步

服务器同步网络时间

[[email protected] ~]# ntpdate 172.22.0.1
18 Apr 10:38:25 ntpdate[10305]: adjust time server 172.22.0.1 offset 0.002210 sec

重启服务

[[email protected] ~]# service ntpd start
Starting ntpd:                                             [  OK  ]

监听udp的123端口

[[email protected] ~]# ss -lun
State       Recv-Q Send-Q              Local Address:Port                Peer Address:Port
UNCONN      0      0                       127.0.0.1:981                            *:*
UNCONN      0      0                               *:111                            *:*
UNCONN      0      0                               *:631                            *:*
UNCONN      0      0                               *:43130                          *:*
UNCONN      0      0                   172.22.58.250:123                            *:*
UNCONN      0      0                  192.168.36.100:123                            *:*
UNCONN      0      0                       127.0.0.1:123                            *:*
UNCONN      0      0                               *:123                            *:*
UNCONN      0      0                               *:923                            *:*
UNCONN      0      0                              :::56515                         :::*
UNCONN      0      0                              :::111                           :::*
UNCONN      0      0                             ::1:123                           :::*
UNCONN      0      0        fe80::20c:29ff:fe5a:43c1:123                           :::*
UNCONN      0      0        fe80::20c:29ff:fe5a:43b7:123                           :::*
UNCONN      0      0                              :::123                           :::*
UNCONN      0      0                              :::923                           :::*

查看ntp服务器

[[email protected] ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*172.22.0.1      144.76.76.107    3 u   19   64    1    0.801   -1.318   0.334

检查时间是否同步

[[email protected] ~]# date
Thu Apr 18 15:56:48 CST 2019

由于centos6开启了ntpd服务,所以可以充当时间服务器被客户端使用

修改时间并通过ntpdate进行时间同步

[[email protected] ~]#date -s "-1 years"
Wed Apr 18 16:37:40 CST 2018
[[email protected] ~]#ntpdate 192.168.36.100
18 Apr 16:38:00 ntpdate[14923]: step time server 192.168.36.100 offset 31536000.000052 sec

在centos7上chrony软件实现时间永久同步

  chrony同ntp,也可以配置成客户端和服务器端两种

说明

/usr/bin/chronyc是客户端程序  
/usr/sbin/chronyd是服务器端查询  
/usr/lib/systemd/system/chronyd.service是服务控制?件  

修改配置文件

[[email protected] ~]#vim /etc/chrony.conf
3 server 192.168.36.100 iburst
4 #server 0.centos.pool.ntp.org iburst
5 #server 1.centos.pool.ntp.org iburst
6 #server 2.centos.pool.ntp.org iburst
7 #server 3.centos.pool.ntp.org iburst

启动服务并设置开机启动

[[email protected] ~]#systemctl start chronyd.service
[[email protected] ~]#systemctl start chronyd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/chronyd.service to /usr/lib/sservice.

监听udp的323端口

[[email protected] ~]#ss -lun | grep 323
UNCONN     0      0      127.0.0.1:323                      *:*
UNCONN     0      0          ::1:323                     :::*

查看时间源的同步信息

[[email protected] ~]#chronyc sources -v
210 Number of sources = 1

  .-- Source mode  ‘^‘ = server, ‘=‘ = peer, ‘#‘ = local clock.
 / .- Source state ‘*‘ = current synced, ‘+‘ = combined , ‘-‘ = not combined,
| /   ‘?‘ = unreachable, ‘x‘ = time may be in error, ‘~‘ = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                     |          |  zzzz = estimated error.
||                                 |    |           MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.36.100                4   6   377     2    +14us[  +33us] +/-  237ms

查看时间是否同步

[[email protected] ~]#date
Thu Apr 18 17:01:16 CST 2019

以上是关于网络时间服务的简介及搭建的主要内容,如果未能解决你的问题,请参考以下文章

1.Tornado简介&&本专栏搭建tornado项目简介

搭建NFS服务器

samba服务及配置

samba服务及配置

微服务监控和报警-Prometheus简介及环境搭建

Kickstart无人值守原理及简介