【Linux系列】Chrony时间同步服务器搭建完整指南

1. 简介

Chrony是一个用于Linux系统的高效、精准的时间同步工具,通常用于替代传统的NTP(Network Time Protocol)服务。Chrony不仅在系统启动时提供快速的时间同步,还能在时钟漂移较大的情况下进行及时调整,因此广泛应用于生产环境中。尤其是在虚拟化环境、高负载服务器和高精度要求的场景下,Chrony具有较大的优势。
在这里插入图片描述

2. 有了NTP,为什么还需要用Chrony?

NTP(Network Time Protocol)是一种经典的时间同步协议,用于保持计算机时钟与UTC(世界协调时间)同步。虽然NTP在大多数情况下表现良好,但在某些特殊情况下(如频繁重启的服务器、虚拟化环境、低网络带宽等),它的同步速度较慢,且在处理时钟漂移方面的精度和效率较低。

Chrony是NTP的一个现代化替代品,它可以:

  • 在启动时快速同步时间。
  • 在系统时钟漂移较大时进行修正。
  • 在离线环境中仍然能够提供本地时间同步。
  • 高效地处理虚拟化环境中的时间同步。

因此,Chrony在现代化的运维环境中,尤其是在高负载和虚拟化场景下,提供了更高的同步精度和更优的性能。

3. Chrony服务器端安装与配置

在CentOS 7及以上版本中,Chrony默认已经安装,且作为系统的默认时间同步工具。你可以通过以下命令确认是否已安装:

rpm -qa | grep chrony

如果没有安装,可以通过以下命令安装:

yum install chrony

配置文件

Chrony的主要配置文件是/etc/chrony.conf,我们可以对其进行优化配置,以确保系统的时间同步更加精准、可靠。

以下是一个默认的chrony.conf配置文件示例:

# Use public servers from the pool.ntp.org project.
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# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3# Enable kernel synchronization of the real-time clock (RTC).
rtcsync# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2# Allow NTP client access from local network.
#allow 192.168.0.0/16# Serve time even if not synchronized to a time source.
#local stratum 10# Specify file containing keys for NTP authentication.
#keyfile /etc/chrony.keys# Specify directory for log files.
logdir /var/log/chrony# Select which information is logged.
#log measurements statistics tracking

主要配置说明

  • server:指定NTP服务器地址,iburst选项用于首次同步时快速发送多个请求。
  • driftfile:保存系统时钟漂移信息,用于后续时钟校正。
  • makestep:当时钟偏差较大时,允许跳跃式校正,1.0 3表示偏差大于1秒时,最多进行三次修正。
  • rtcsync:确保系统时钟与硬件实时时钟(RTC)同步。
  • hwtimestamp:启用硬件时间戳功能(可选)。
  • minsources:指定最少需要多少个同步源进行时间校正(可选)。
  • logdir:指定日志文件存放路径,便于后续监控和分析。

配置优化建议

为了提高Chrony的时间同步精度和稳定性,可以做如下优化:

1. 优化时间源选择

选择多个高质量的NTP服务器进行时间同步,并确保这些服务器的稳定性和低延迟。

# CentOS NTP Servers
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# Apple NTP Servers
server time1.apple.com iburst
server time2.apple.com iburst
server time3.apple.com iburst
server time4.apple.com iburst
server time5.apple.com iburst# Google NTP Servers
server time1.google.com iburst
server time2.google.com iburst
server time3.google.com iburst
server time4.google.com iburst# Pool.ntp.org NTP Servers (Global)
server pool.ntp.org iburst# China NTP Servers (Local)
server cn.pool.ntp.org iburst# Aliyun NTP Servers
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server time1.aliyun.com iburst
server time2.aliyun.com iburst
  • 使用多个时间源以确保同步的可靠性。
  • iburst选项能在首次连接时发送多个请求,加速同步。
2. 减少时钟漂移影响

Chrony会记录时钟漂移并根据漂移数据进行同步。确保driftfile配置项设置正确,并定期检查漂移文件。

driftfile /var/lib/chrony/drift
3. 优化makestep参数

makestep参数允许Chrony在时钟偏差较大时进行修正,可以根据实际需求调整该值:

makestep 1.0 3
  • 1.0表示允许1秒以内的修正,3表示最多进行三次修正。
4. 启用硬件时间戳

如果硬件支持,可以启用硬件时间戳功能,进一步提高同步精度。

hwtimestamp *
5. 设置最小源数量

可以设置minsources来确保同步的准确性和可靠性,要求至少需要多个同步源。

minsources 2
6. 本地时钟作为备用源

当没有可用的NTP源时,可以回退到本地时钟进行同步。你可以设置local stratum来指定备用时钟的优先级。

local stratum 10
7. 限制访问范围

如果需要限制哪些网络可以访问Chrony进行时间同步,可以配置allow选项。

allow 192.168.1.0/24
8. 启用日志记录

可以启用详细的日志记录,以便后续跟踪和诊断同步问题。

logdir /var/log/chrony
log measurements statistics tracking
9. 启用NTP认证(可选)

如果需要更高的安全性,可以启用NTP认证,确保同步的时间数据未被篡改。

keyfile /etc/chrony.keys

配置文件示例

# 使用多个时间源进行同步
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# 启用系统时钟与硬件实时时钟同步
rtcsync# 启用硬件时间戳功能
hwtimestamp *# 最少需要两个同步源进行时间校正
minsources 2# 如果没有可用的时间源,使用本地时钟作为备用
local stratum 10# 允许本地网络访问Chrony服务
allow 192.168.1.0/24# 配置日志存储路径并启用日志记录
logdir /var/log/chrony
log measurements statistics tracking# 启用NTP认证(如果需要)
# keyfile /etc/chrony.keys

3. 启动Chrony服务(Server端)

systemctl start chronyd
systemctl enable chronyd

4. Chrony客户端安装与配置

如果你需要将Chrony作为客户端进行时间同步,请按照以下步骤配置:

1. 安装Chrony(如果未安装)

yum install chrony

2. 编辑配置文件/etc/chrony.conf,并设置服务器配置为您自己的Chrony服务器:

server chrony1.xxx.com iburst
server chrony2.xxx.com iburst

确保至少配置两个Chrony服务器节点,以保证高可用性。

3. 启动Chrony服务(Client端)

systemctl start chronyd
systemctl enable chronyd

4. 检查同步状态:

chronyc tracking

5. 监控与告警

Chrony提供了丰富的命令和日志功能,可以用来监控时间同步状态,并进行必要的告警配置。通过这些工具,管理员能够实时了解系统时钟的同步情况以及潜在的时间同步问题。

5.1 使用Chrony命令监控同步状态

chronyc tracking
该命令可以查看系统当前的时间同步状态,包括当前时钟偏差、上次同步时间、偏差稳定性等信息。常用来检查Chrony服务是否正常同步系统时间。

chronyc tracking

输出示例:

Reference ID    : C0A89693 (chrony1.xxx.com)
Stratum         : 4
Ref time (UTC)  : Thu Nov 28 04:59:55 2024
System time     : 0.000000084 seconds fast of NTP time
Last offset     : -0.000120594 seconds
RMS offset      : 0.000120594 seconds
Frequency       : 7.614 ppm slow
Residual freq   : -29.260 ppm
Skew            : 1.438 ppm
Root delay      : 0.019204240 seconds
Root dispersion : 0.007626829 seconds
Update interval : 2.0 seconds
Leap status     : Normal
  • System time:表示系统时间与NTP时间的偏差。
  • RMS offset:表示时间同步的精度。
  • Update interval:表示时间同步的间隔。

chronyc sources该命令可以查看Chrony当前使用的时间源状态,包括每个源的延迟、偏差和质量等信息。

chronyc sources

输出示例:

210 Number of sources = 2
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^+ chrony2.xxx.com             1   7   377    28   +946us[ +946us] +/-   30ms
^* chrony1.xxx.com             1   6    37    26   +516us[-1728us] +/-   30ms
  • MS:表示源的状态,*表示当前正在使用的时间源,+表示备用源。
  • Last sample:表示最后一次获取到的时间样本。

5.2 配置日志记录与告警

Chrony通过logdir配置项启用了日志记录功能。可以通过监控日志文件并结合现有的监控平台(如Prometheus、Zabbix、Nagios等)设置告警。以下是Chrony日志记录配置的示例:

logdir /var/log/chrony
log measurements statistics tracking
  • log measurements:记录时间同步的测量数据。
  • log statistics:记录时间源的统计数据。
  • log tracking:记录系统时钟的跟踪信息。

日志记录后,可以通过设置监控工具,定期检查/var/log/chrony目录中的日志文件,若发现系统时钟偏差较大或时间同步异常,可以触发告警。

举例: 如果你使用Zabbix作为监控工具,可以创建一个基于Chrony日志的触发器,来监控时钟同步的状态。例如,配置一个告警,当chronyc tracking中的RMS offset值超过某个阈值时触发告警。

5.3 使用Prometheus监控Chrony状态

Chrony服务对于关键业务系统尤为重要,尤其是在金融等行业,时间不同步可能导致日终结算异常、交易错误等问题。因此,必须对Chrony同步进行监控。
在这里插入图片描述

1. 监控业务服务器与监控服务器的时间差

为避免Chrony同步异常,可以设置监控项,确保业务服务器与监控服务器的时间差在合理范围内。如果超过500毫秒,应该触发告警。

2. 监控Chronyd服务是否正常运行

对于监控Chrony服务的稳定性,可以通过Chrony exporter等监控工具来实时监控Chrony服务。如果发现Chronyd服务停止运行,及时发出告警,避免对业务造成影响。

3. 独立配置监控服务器与业务服务器的Chrony同步

为了避免因单一Chrony服务器故障而导致的同步问题,建议分别为监控服务器和业务服务器配置不同的Chrony服务器。即使共享同一Chrony服务器,也应保证服务的高可用性。

5.4 配置告警

结合上述日志监控和Prometheus的收集,可以在系统中设置告警规则。常见的告警场景包括:

时钟偏差超过阈值:例如,chronyc tracking中的System time偏差大于0.1秒时。
同步源不可用:如果chronyc sources显示同步源不可达,系统应发出警报。
告警可以配置为短信、邮件或通过企业微信等消息平台发送,确保运维人员能及时处理时间同步问题。

6. Chrony常用命令

Chrony提供了多个有用的命令,可以帮助管理员检查时间同步状态、管理时间源、调试问题等。

6.1 chronyc tracking

查看当前的时间同步状态,包括时钟偏差、更新时间间隔、同步质量等信息。

chronyc tracking

6.2 chronyc sources

查看当前系统使用的NTP时间源的状态,包括延迟、同步质量等。

chronyc sources

6.3 chronyc sourcestats

查看NTP源的详细统计信息。

chronyc sourcestats

6.4 chronyc makestep

强制Chrony立即对系统时钟进行步进修正,通常用于在时钟偏差过大的情况下。

chronyc makestep

7. 总结

Chrony是一个现代化的时间同步工具,比传统的NTP更适合高负载、虚拟化环境以及对时间同步精度要求较高的场景。通过合理配置Chrony,可以大大提高系统时钟的同步精度,减少时钟漂移,并确保在网络不稳定的情况下仍能维持准确的系统时间。

本文介绍了如何在CentOS环境下安装和配置Chrony,包括常见的优化配置、客户端配置、监控与告警方法以及常用命令。通过结合日志记录、Prometheus等工具,可以对Chrony的状态进行实时监控,确保系统时间的高精度与高可用性。

希望这篇文章能帮助你更好地理解和使用Chrony,在运维中保持精准的时间同步,确保系统的稳定运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/480185.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu问题 -- 使用scp将本机文件传输至ubuntu服务器中

目的 临时没有文件传输工具使用一条命令快速传输指定文件或文件夹 使用scp命令 传输指定文件 scp -P 22 D:\Storage\myCache\UE\Linux_ue_demo.zip txl10.1.112.93:/home/txl-P是远程机器的ssh端口号, SCP(安全复制协议)使用和SSH(安全外壳…

Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:电影院后台管理系统(前后端源码 + 数据库 sql 脚本)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 项目介绍 2.0 用户登录功能 3.0 用户管理功能 4.0 影院管理功能 5.0 电影管理功能 6.0 影厅管理功能 7.0 电影排片管理功能 8.0 用户评论管理功能 9.0 用户购票功…

PHP 函数的未来发展有哪些变化呢

PHP 8.0 引入了一些新特性,比如 JIT 编译器、联合类型、nullsafe 运算符等。 JIT 编译器 (Just-In-Time Compiler):PHP 8.0 引入了实验性的 JIT 编译器,可以显著提高代码执行速度。联合类型(Union Types):…

Java文件遍历那些事

文章目录 一、简要概述二、文件遍历几种实现1. java实现2. Apache common-io3. Spring 三、最终结论 一、简要概述 文件遍历基本上是每个编程语言具备的基本功能,Java语言也不例外。下面我们以java原生实现,Apache common-io、spring框架实现为例来比较…

【网络安全设备系列】12、态势感知

0x00 定义: 态势感知(Situation Awareness,SA)能够检测出超过20大类的云上安全风险,包括DDoS攻击、暴力破解、Web攻击、后门木马、僵尸主机、异常行为、漏洞攻击、命令与控制等。利用大数据分析技术,态势感…

MySQL 启动失败问题分析与解决方案:`mysqld.service failed to run ‘start-pre‘ task`

目录 前言1. 问题背景2. 错误分析2.1 错误信息详解2.2 可能原因 3. 问题排查与解决方案3.1 检查 MySQL 错误日志3.2 验证 MySQL 配置文件3.3 检查文件和目录权限3.4 手动启动 MySQL 服务3.5 修复 systemd 配置文件3.6 验证依赖环境 4. 进一步优化与自动化处理结语 前言 在日常…

企业如何落地搭建商业智能BI系统

随着新一代信息化、数字化技术的应用,引发了新一轮的科技革命,现代化社会和数字化的联系越来越紧密,数据也变成继土地、劳动力、资本、技术之后的第五大生产要素,这一切都表明世界已经找准未来方向,前沿科技也与落地并…

docker搭建nginx

一. 直接启动nginx镜像 1. 下载nginx镜像 docker pull nginx 2. 运行镜像 docker run -p 8080:80 --name web -d nginx 3. 网址查看 xx.xx.xx.xx:8080 二. 挂在文件启动nginx镜像 1. 拷贝docker文件到本地 docker cp web:/etc/nginx/nginx.conf /root/data/config/nginx…

Java开发工程师最新面试题库系列——Java基础部分(附答案)

如果你有更好的想法请在评论区留下您的答案,一起交流讨论# 面向对象有哪些特征? 答:继承、封装、多态 JDK与JRE的区别是什么? 答:JDK是java开发时所需环境,它包含了Java开发时需要用到的API,JRE…

DICOM医学影像应用篇——窗宽窗位概念、原理及实现详解

目录 窗宽窗位调整(Windowing)在DICOM医学影像中的应用 窗宽窗位的基本概念 窗宽(Window Width, WW) 窗位(Window Level, WL) 窗宽窗位调整的基本原理 映射逻辑 数学公式 窗宽窗位调整的C实现 代码…

尚硅谷学习笔记——Java设计模式(一)设计模式七大原则

一、介绍 在软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,提出的解决方案。我们希望我们的软件能够实现复用性、高稳定性、扩展性、维护性、代码重用性,所以…

网络原理->DNS协议和NAT协议解

前言 大家好我是小帅,今天我们来了解应用层的DNS协议和NAT技术 个人主页:再无B~U~G 文章目录 1.重要应⽤层协议DNS(Domain Name System)1.1 DNS背景 2. NAT技术3. 总结 1.重要应⽤层协议DNS(Domain Name System) DNS是⼀整套从域…

虚拟机ubuntu-20.04.6-live-server搭建OpenStack:Victoria(一:工具、环境准备-controller node)

文章目录 一、软件准备A. 下载ubuntu-live-server:B. 下载并安装Xshell: 二、安装Ubuntu(控制节点主机)A. 开启服务B. 先预安装C. 虚拟机设置D. 安装系统 三、连接XshellA. 配置网络接口B. 连接 Xshell 一、软件准备 温馨提示&…

面试——HashMap的并发问题

HashMap是线程不安全,在并发使用HashMap时会发生下列问题: 数据丢失 HashMap底层数据结构为数组,之后如果发送了哈希冲突,那么数据会以列表的形式保存在这个下标下,当数据长度大于8时,则会转为红黑树。 存…

Vue+Elementui el-tree树只能选择子节点并且支持检索

效果&#xff1a; 只能选择子节点 添加配置添加检索代码 源码&#xff1a; <template><div><el-button size"small" type"primary" clearable :disabled"disabled" click"showSign">危险点评估</el-button>…

Pod 动态分配存储空间实现持久化存储

配置 Pod 以使用 PersistentVolume 作为存储 ​ 关于持久卷的介绍&#xff0c;可以看官方文档 https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes/ ​ 持久卷根据存储位置&#xff0c;可以使用本地存储和云存储&#xff0c;如果有云服务平台&#xff0c…

AIGC引领金融大模型革命:未来已来

文章目录 金融大模型的应用场景1. **金融风险管理**2. **量化交易**3. **个性化投资建议**4. **金融欺诈检测和预防**5. **智能客户服务** 金融大模型开发面临的挑战应对策略《金融大模型开发基础与实践》亮点内容简介作者简介获取方式 在AIGC&#xff08;Artificial Intellige…

数据库(MySQL黑马)

基础篇 MySQL概述 数据库概述 数据库相关概念 主流的关系型数据库管理系统 MySQL数据库的安装与启动 下载&#xff1a;MySQL :: MySQL Community Downloads 安装步骤 MySQL―8.0.40超详细保姆级安装教程_mysql8.0.40安装教程-CSDN博客文章浏览阅读1k次。_mysql8.0.40安装教…

MySQL8 CTE解决不定层级树形迭代问题

MySQL Common Table Expressions&#xff08;CTE&#xff0c;公用表表达式&#xff09;是在MySQL 8.0及更高版本中引入的一种高级SQL构造&#xff0c;它允许用户定义一个临时的结果集&#xff0c;这个结果集可以在同一个查询中被多次引用&#xff0c;从而简化复杂的查询逻辑和提…

第六届国际科技创新学术交流大会暨信息技术与计算机应用学术会议(ITCA 2024)

重要信息 会议官网&#xff1a;itca2024.iaecst.org 会议时间&#xff1a;2024年12月06-08日 会议地点&#xff1a;中国-广州&#xff08;越秀国际会议中心&#xff09; 会议简介 第六届信息技术与计算机应用学术会议(ITCA 2024) 依旧作为第六届国际科技创新学术交流大会…