Linux 时间同步

一、Chrony与ntp对比

ntp(Network Time Protocol)和Chrony都是用于同步计算机时钟的协议,它们都可以在计算机集群中实现时间同步。但是,它们有一些不同之处:

  • 算法:NTP使用一种复杂的算法来同步时钟,而Chrony使用一种叫做"temporal median"的算法,该算法可以在更短的时间内同步时钟。

  • 精度:Chrony通常比NTP更准确,尤其是在网络延迟较高的情况下。Chrony可以在网络延迟较高的情况下保持更好的同步精度。

  • 配置:Chrony的配置比NTP简单,而且可以自动适应网络环境。另外,Chrony可以在没有网络连接的情况下使用本地时钟源进行同步。

  • 安全性:NTP在安全性方面存在一些问题,因为它没有内置的身份验证机制。而Chrony支持加密和身份验证机制,可以提供更好的安全性。

综上所述,Chrony通常比NTP更适合在计算机集群中使用,因为它可以提供更好的同步精度和安全性,并且配置更简单。

1.1 其他区别:

  • ntp是一种较为传统的时间同步工具,chrony是一种相对较新的时间同步工具
  • Chrony运行于udp/323端口,ntp运行于udp/123端口
ss -nul    # 查看已开放的端口,可查看到“*:123”或“::1:323”端口
  • 使用chrony服务器可以同时为chrony客户端和ntp客户端提供服务
  • chrony和ntp不能同时兼容的,只能运行一个,否则会出错

1.2 注意:

CentOS8系统中,原有的时间同步服务 ntp/ntpdate服务已经无法使用,使用yum安装,提示已不存在。时间同步将由chrony来实现。

No match for argument: ntpdate Error: Unable to find a match: ntpdate

之前的版本:yum install -y ntp # CentOS 6或7 系统
centos8:yum -y install chrony

二、Chrony

Chrony包括两个核心组件:

  • chronyd:一个后台运行的守护进程,用于调整内核中运行的系统时钟与NTP服务器同步。它确定服务器增减时间的比率,并对此进行调整补偿,即是服务器端进程也可以是客户端进程

  • chronyc:提供用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的服务器上工作,也可以在一台不同的远程服务器上工作

2.1 Chrony安装

yum -y install chrony  # 服务器和客户端都需要安装,然后启动
systemctl status chronyd  # 查看是否安装chrony
rpm -qa | grep chrony    # 查看是否安装chrony, 输出chrony-3.3-3.el8.x86_64

在这里插入图片描述

2.2 修改配置文件

vi /etc/chrony.conf   # 修改后保存

2.3 关闭防火墙(一般不需要)

为了避免集群中各虚拟机通过NTP服务进行时间同步的操作被禁止,需要关闭服务器和客户端的防火墙服务。命令如下:

systemctl status firewalld  #查看防火墙服务启动状态
systemctl stop firewalld  #关闭防火墙服务
systemctl disable firewalld  #禁止防火墙开机启动

2.4 修改配置文件需要重启

# 开机自动启用chronyd服务
systemctl enable chronyd.service    # 安装后需要启动
# 重启chronyd服务
systemctl restart chronyd.service   # 修改配置文件需要重启
# 查看chronyd服务状态
systemctl status chronyd.service

注意:
修改后重启chronyd服务后,自动同步时间比较久,还有一种手动同步的方法:
yum install ntpdate
ntpdate ***,例如ntpdate ntp.aliyun.com

2.5 查看时间同步源状态

重启Chrony服务使配置内容生效后,可查看:
该命令用于显示 chrony 正在从哪些来源获取时间同步的详细信息。

chronyc sources -v

在这里插入图片描述

  • M:这表示信号源的模式。^表示服务器,=表示对等方,#表示本地连接的参考时钟。
  • S:此列指示源的状态。
    在这里插入图片描述
  • 来源的 IP 地址或主机名
  • address:来源的参考 ID(通常是源的 IP 地址)
  • Stratum:来源的层级(距离参考时钟的跳数)
  • Poll:这显示轮询源的速率,以秒为单位的时间间隔的以2为底的对数。因此,值为6表示每64秒进行一次测量。chronyd会根据当前情况自动更改轮询速率。
  • Reach:这显示了源的可达性寄存器以八进制数字打印。寄存器有8位,并在每个从源接收或丢失的数据包上更新。值377表示从最后八次传输中收到了对所有用户的有效答复。
  • LastRx:此列显示多长时间前从来源接收到了最后一个好的样本(在下一列中显示)。未通过某些测试的测量将被忽略。通常以秒为单位。字母m,h,d或y表示分钟,小时,天或年。
  • Last sample:此列显示上次测量时本地时钟与源之间的偏移。方括号中的数字表示实际测得的偏移量。可以用ns(表示纳秒),us (表示微秒),ms(表示毫秒)或s(表示秒)作为后缀。
    方括号左侧的数字表示原始测量值,已调整为允许此后施加于本地时钟的任何摆度。
    +/-指示器后面的数字表示测量中的误差范围。正偏移表示本地时钟位于源时钟之前。

2.6 chronyc 及timedatectl命令

chronyc sources -v  # 查看 ntp_servers
chronyc sourcestats -v  # 查看 ntp_servers 状态
chronyc activity -v     # 查看 ntp_servers 是否在线
chronyc tracking -v     # 查看 ntp 详细信息
chronyc -a makestep     # 强制同步下系统时钟
chronyc clients         # 查看哪些ip连接我的ntp时间了
timedatectl   # 查看日期时间、时区及NTP状态
timedatectl list-timezones   # 查看时区列表
timedatectl set-timezone +所要修改的时区   # 修改时区
timedatectl set-time “所要修改的日期”      # 修改日期时间

2.7 主配置文件chrony.conf详解

1、客户端设置

# 使用 pool.ntp.org 项目中的公共服务器。以server开,理论上想添加多少时间服务器都可以。

server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst

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

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

rtcsync  # 启用实时时钟(RTC)的内核同步。该指令使得chronyd定期将系统时间复制到RTC时钟。启用硬件时钟同步。

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

minsources 2  # 增加调整系统时钟所需的最小可选源数。

# 即使未同步到时间源,也要提供时间。
# Serve time even if not synchronized to a time source.
local stratum 10(取值范围1-15,当默认时钟源无法同步,则当前系统层级为10)

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

logdir /var/log/chrony  # 指定日志文件的目录。

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

注意:如果客户端和服务端时间相差较大,开启makestep 1.0 3参数是可以加快时间同步的,参数说明:

  • 1.0:指定每秒钟的步进量为 1.0 秒。这意味着系统时钟将以每秒 1.0 秒的速度进行调整
  • 3:表示允许的最大步进次数。如果时钟偏离太大,在 makestep 执行期间,默认情况下 chrony 将最多执行 3 次步进调整

如何修改该客户端同步某服务端

# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst   # 注释掉原先默认的服务器
server ntp.aliyun.com iburst   # 表示添加的时间服务器为阿里云授时中心
或
server 192.168.142.188 iburst   # 表示添加的时间服务器为该ip
# iburst:加快调整时间的频率(突发)

2、服务端设置

如果不设置则所有客户端都可同步

allow 192.168.30.0/24  # 允许本地哪个网段的机器来同步本机的时间

3、查看是否同步

date

2.8 chrony配置中问题的发现与解决

1、添加的客户端时钟源时会出现 ?(已失去连接性或其数据包未通过所有测试的源)导致无法同步时钟源
解决:①查看防火墙是否关闭②查看selinux是不是permissive或者disable的状态③ping一下看一看链路是否为通的④检查一下网络配置⑤chrony配置中allow指令默认情况下不允许ntp客户端访问

2.9 示例

【Linux】NTP时间服务器Chrony配置详解
linux进阶 — chrony服务器

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值