Chrony时间同步服务

发布于 2023-08-10  2387 次阅读


  • 在运维工作的场景当中,存在着众多主机协同完成不同的任务;

  • 比如 LNMP 架构,它们可以分别部署在三台不同的主机上;那么这三台主机在工作时,由于分别位于不同的主机之上,它们需要根据文件或者数据流所生成的时间,来决定响应给客户端的结果该如何进行展示;此时就需要统一网络中的主机时间一致;

  • 但这个时间一致并不是说一定得是正确的,如果现在当前时间是下午2点,但是这三台主机的时间精确一致是昨天凌晨5点,这也没有什么问题

  • 但对于有些场景时间不正确也不行,比如https应用;客户端与服务端通讯时,如果客户端时间是准确的,而服务端时间来自昨天,或者来自未来的响应,则会提示存在风险,而不予接受;

1.1 chrony服务介绍

  • chrony 是基于 ntp 协议的实现时间同步服务,它既可以当做服务端,也可以充当客户端;
    • 1、chrony 是 NTP 的替代品,能更精确的时间和更快的速度同步时钟;
    • 2、chrony 占用系统资源少,只有被唤起时才占用少部分CPU,chrony兼容ntpdate;
    • 3、chrony 允许本地网络其他主机像本地进行时间同步;

1.2 为何需要chrony

  • 所有服务器直接同步公网上的时间不就可以了吗,为何需要自己搭建一台时间服务器呢?
    • 如果每台服务器都去同步公网时间服务器,且服务器较多,会带来如下问题:
    • 1、造成延迟
    • 2、浪费带宽
    • 解决方法:搭建内网时间服务器,来同步公网时间,然后所有服务器来与这台服务器进行时间同步
    • 1、减小服务器之间的误差,提升同步速度
    • 2、减少网络带宽损耗

image-20211128114624392

1.3 chrony安装

[root@chrony ~]# yum install chrony -y
  • 主配置文件:/etc/chrony.conf
  • 客户端程序:/usr/bin/chronyc
  • 服务端程序:/usr/sbin/chronyd

1.3.1 chrony服务端

  • 默认设置
[root@chrony ~]# cat /etc/chrony.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 

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

#如果系统时钟的偏移量大于1秒,则允许系统时钟在前三次 更新中步进
makestep 1.0 3 

#启用实时时钟(RTC)的内核同步 
rtcsync

#通过使用 hwtimestamp 
指令启用硬件时间戳 
#hwtimestamp * 

#增加调整所需的可选择源的最小数量 
#minsources 2 

# 允许指定网络的主机同步时间,不指定就是允许所有,默认不开启。 
allow 192.168.0.0/16 

# 默认情况下本地服务器无法同步互联网时间时,可能会出 现不精确,所以会拒绝提供授时服务; 
# 开启此选项,则表示允许接受不精确时间,继续为客户端提供授时服务; 
local stratum 10 

#指定包含 NTP 身份验证密钥的文件 
#keyfile /etc/chrony.keys 

#指定日志文件 
logdir /var/log/chrony 

#选择日志文件要记录的信息 
log measurements statistics tracking

1.Chrony服务端配置,修改 /etc/chrony.conf 文件三处,设定外部时间服务器、允许内网同步此服务端、设置断网继续同步

[root@chrony ~]# vim /etc/chrony.conf
# Please consider joining the pool 
(http://www.pool.ntp.org/join.html). 
server ntp.aliyun.com iburst 

# Allow NTP client access from local network. 
allow 172.16.1.0/24 

# Serve time even if not synchronized to a time source. 
local stratum 10

2.重启 Chrony 服务

[root@chrony ~]# systemctl restart chronyd

1.3.2 chrony客户端

1.客户端使用 ntpdate 或 chronyc 命令的方式进行手动同步

# ntpdate 
[root@chrony ~]# yum install ntpdate -y      # 不推荐
[root@chrony ~]# ntpdate 172.16.1.62 

# chronyc 
[root@chrony ~]# chronyc -a makestep 
200 OK

2.客户端使用 chrony 守护进程方式进行时间自动化同步

[root@chrony ~]# yum install chrony -y
[root@chrony ~]# vim /etc/chrony.conf 
# 指向至服务端 
server 172.16.1.62 iburst

[root@chrony ~]# systemctl restart chronyd

3.查看时间同步是否正常

[root@nfs ~]# chronyc sources 
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 172.16.1.62                   3   6    37    28  +1433ns[+5342us] +/-   25ms

[root@chrony ~]# chronyc sources -v

^*已同步

^?未同步

^+ 备份同步

chronyc tracking**

还记得妞妞吗
最后更新于 2023-08-10