时间同步服务--chrony

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

  • ntp
  • chrony
    ntp:
    将系统时钟和世界协调时UTC同步,精度在局域网内可达0.1ms,在互联网上绝大多数的地方精度可以达到1-50ms
    项目官网:http://www.ntp.org
    chrony:
    实现NTP协议的的自由软件。可使系统时钟与NTP服务器,参考时钟(例如GPS接收器)以及使用手表和键盘的手动输入进行同步。还可以作为NTPv4(RFC 5905)服务器和对等体运行,为网络中的计算机提供时间服务。设计用于在各种条件下良好运行,包括间歇性和高度拥挤的网络连接,温度变化(计算机时钟对温度敏感),以及不能连续运行或在虚拟机上运行的系统。
    通过Internet同步的两台机器之间的典型精度在几毫秒之内,在LAN上,精度通常为几十微秒。利用硬件时间戳或硬件参考时钟,可实现亚微秒的精度
    chrony 的优势:
  • 更快的同步只需要数分钟而非数小时时间,从而最大程度减少了时间和频率误差,对于并非全天24 小时运行的虚拟计算机而言非常有用
  • 能够更好地响应时钟频率的快速变化,对于具备不稳定时钟的虚拟机或导致时钟频率发生变化的节能技术而言非常有用
  • 在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响
  • 在应对临时非对称延迟时(例如,在大规模下载造成链接饱和时)提供了更好的稳定性
  • 无需对服务器进行定期轮询,因此具备间歇性网络连接的系统仍然可以快速同步时钟
    chrony官网:https://chrony.tuxfamily.org
    chrony官方文档:https://chrony.tuxfamily.org/documentation.html
    包:chrony
    两个主要程序:chronyd和chronyc
  • chronyd:后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿
  • chronyc:命令行用户工具,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可在一台不同的远程计算机上工作
    服务unit 文件: /usr/lib/systemd/system/chronyd.service
    监听端口: 323/udp,123/udp
    配置文件: /etc/chrony.conf
    配置文件chrony.conf
server #可用于时钟服务器,iburst 选项当服务器可达时,发送一个八个数据包而不是通常的一个数据
包。 包间隔通常为2秒,可加快初始同步速度
pool #该指令的语法与server 指令的语法相似,不同之处在于它用于指定NTP服务器池而不是单个
NTP服务器。池名称应解析为随时间可能会变化的多个地址
driftfile #根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中,会在重启后为系统时钟
作出补偿
rtcsync #启用内核模式,系统时间每11分钟会拷贝到实时时钟(RTC)
allow / deny #指定一台主机、子网,或者网络以允许或拒绝访问本服务器
cmdallow / cmddeny #可以指定哪台主机可以通过chronyd使用控制命令
bindcmdaddress #允许chronyd监听哪个接口来接收由chronyc执行的命令
makestep # 通常chronyd将根据需求通过减慢或加速时钟,使得系统逐步纠正所有时间偏差。在某些特定
情况下,系统时钟可能会漂移过快,导致该调整过程消耗很长的时间来纠正系统时钟。该指令强制chronyd在
调整期大于某个阀值时调整系统时钟
local stratum 10 #即使server指令中时间服务器不可用,也允许将本地时间作为标准时间授时给其它
客户端

ntp客户端工具
chronyc 可以运行在交互式和非交互式两种方式,支持以下子命令

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

时间同步服务--chrony_第1张图片
范例:实验环境如上图,利用chrony同步时间服务

环境准备:
3台centos8:10.0.0.8,10.0.0.18,10.0.0.28
centos6:10.0.0.6
centos7:10.0.0.7
ntp1:10.0.0.8 远程同步ntp.aliyun.com和time1.cloud.tencent.com
ntp2:10.0.0.18 远程同步ntp.aliyun.com和time1.cloud.tencent.com
客户端:10.0.0.28,10.0.0.6,10.0.0.7同步ntp1和ntp2

[root@centos8 ~]#hostnamectl set-hostname ntp1
[root@centos8 ~]#exit
[root@ntp1 ~]#

[root@centos8 ~]#hostnamectl set-hostname ntp2
[root@centos8 ~]#exit
[root@ntp2 ~]#

[root@ntp1 ~]#ping ntp.aliyun.com
PING ntp.aliyun.com (203.107.6.88) 56(84) bytes of data.
64 bytes from 203.107.6.88 (203.107.6.88): icmp_seq=1 ttl=128 time=21.9 ms
64 bytes from 203.107.6.88 (203.107.6.88): icmp_seq=2 ttl=128 time=21.2 ms
64 bytes from 203.107.6.88 (203.107.6.88): icmp_seq=3 ttl=128 time=20.6 ms
64 bytes from 203.107.6.88 (203.107.6.88): icmp_seq=4 ttl=128 time=21.3 ms
^C
--- ntp.aliyun.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 9ms
rtt min/avg/max/mdev = 20.642/21.259/21.889/0.441 ms
[root@ntp1 ~]#ping time1.cloud.tencent.com
PING time1.cloud.tencent.com (139.199.215.251) 56(84) bytes of data.
64 bytes from 139.199.215.251 (139.199.215.251): icmp_seq=1 ttl=128 time=35.1 ms
64 bytes from 139.199.215.251 (139.199.215.251): icmp_seq=2 ttl=128 time=35.3 ms
64 bytes from 139.199.215.251 (139.199.215.251): icmp_seq=3 ttl=128 time=34.6 ms
64 bytes from 139.199.215.251 (139.199.215.251): icmp_seq=4 ttl=128 time=34.6 ms
^C
--- time1.cloud.tencent.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 8ms
rtt min/avg/max/mdev = 34.587/34.914/35.335/0.393 ms
[root@ntp1 ~]#
[root@ntp1 ~]#date -s '-1 year'
Sun Sep  8 21:21:09 CST 2019
[root@ntp1 ~]#date
Sun Sep  8 21:21:11 CST 2019

[root@ntp1 ~]#yum -y install chrony
[root@ntp1 ~]#rpm -ql chrony 
/etc/NetworkManager/dispatcher.d/20-chrony
/etc/chrony.conf
/etc/chrony.keys
/etc/dhcp/dhclient.d/chrony.sh
/etc/logrotate.d/chrony
/etc/sysconfig/chronyd
/usr/bin/chronyc
/usr/lib/.build-id
/usr/lib/.build-id/32
/usr/lib/.build-id/32/6707563c0f596d3eddccf848be79bbe39e364a
/usr/lib/.build-id/86
/usr/lib/.build-id/86/a0335358944e05b80364cac79803094284d5c2
/usr/lib/systemd/ntp-units.d/50-chronyd.list
/usr/lib/systemd/system/[email protected]
/usr/lib/systemd/system/[email protected]
/usr/lib/systemd/system/chrony-wait.service
/usr/lib/systemd/system/chronyd.service
/usr/libexec/chrony-helper
/usr/sbin/chronyd
/usr/share/doc/chrony
/usr/share/doc/chrony/FAQ
/usr/share/doc/chrony/NEWS
/usr/share/doc/chrony/README
/usr/share/doc/chrony/ntp2chrony.py
/usr/share/licenses/chrony
/usr/share/licenses/chrony/COPYING
/usr/share/man/man1/chronyc.1.gz
/usr/share/man/man5/chrony.conf.5.gz
/usr/share/man/man8/chronyd.8.gz
/var/lib/chrony
/var/lib/chrony/drift
/var/lib/chrony/rtc
/var/log/chrony

[root@ntp1 ~]#vim /etc/chrony.conf 
#将原有的pool 2.centos.pool.ntp.org iburst删掉,添加如下内容:
server ntp.aliyun.com iburst
server time1.cloud.tencent.com iburst

#在#allow 192.168.0.0/16下添加内容:
allow 10.0.0.0/24
保存退出

[root@ntp1 ~]#systemctl restart chronyd.service 
[root@ntp1 ~]#chronyc sources -v
210 Number of sources = 2

  .-- 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               
===============================================================================
^* 203.107.6.88                  2   6    17    11   +553us[+1670us] +/-   25ms
^+ 139.199.215.251               2   6    17    11  -2304us[-1186us] +/-   57ms
[root@ntp1 ~]#date
Tue Sep  8 21:31:16 CST 2020

#在ntp2上做同样的配置,同上

#在10.0.0.6和10.0.0.7和10.0.0.28上做相同的配置,以10.0.0.28为例:
[root@centos8 ~]#yum -y install chrony
[root@centos8 ~]#vim /etc/chrony.conf
server 10.0.0.8 iburst
server 10.0.0.18 iburst
[root@centos8 ~]#date -s '-1 year'
Sun Sep  8 21:45:09 CST 2019
[root@centos8 ~]#systemctl restart chronyd.service 
[root@centos8 ~]#date
Tue Sep  8 21:45:24 CST 2020

你可能感兴趣的:(Linux运维,linux)