Chrony服务同步集群时间
目录
一、Chrony简介
Chrony是一个开源的自由软件,像CentOS 7或基于RHEL 7操作系统,已经是默认服务,默认配置文件在 /etc/chrony.conf 它能保持系统时间与时间服务器(NTP)同步,让时间始终保持同步。相对于NTP时间同步软件,占据很大优势。其用法也很简单。
Chrony有两个核心组件,分别是:chronyd:是守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿。chronyc:提供一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。
二、使用Chrony
2.1 环境
OS | IP | Roles |
---|---|---|
Centos 7.2 | 192.168.99.233 | server |
Centos 7.2 | 192.168.99.234 | clinet |
情况说明:两台机器都是内网,将192.168.99.233作为时间服务器,192.168.99.234到此服务器上同步时间!
2.2 安装Chrony
Centos 7 系列系统已经默认安装,如果没有安装,可使用以下命令进行安装!
$ yum install chrony -y
2.3 启动并加入开机自启
$ systemctl restart chronyd && systemctl enable chronyd
2.4 firewalld设置
因NTP使用123/UDP端口协议,所以允许NTP服务即可。
$ firewall-cmd --add-service=ntp --permanent $ firewall-cmd --reload
2.5 Chrony配置文件详解
$ egrep -v '^$|^#' /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 # 默认使用pool.ntp.org项目中的公共服务器。以server开,理论上你想添加多少时间服务器都可以。 driftfile /var/lib/chrony/drift # 根据实际时间计算出服务器增减时间的比率,然后记录到一个文件中,在系统重启后为系统做出最佳时间补偿调整。 rtcsync # 将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC)。 makestep 10 3 # 只有在因chronyd启动时间超过指定的限制时(可使用负值来禁用限制)没有更多时钟更新时才生效。 hwtimestamp eth0 hwtimestamp eth1 hwtimestamp * # 通过使用hwtimestamp指令启用硬件时间戳 allow 192.168.0.0/16 deny 192.168/16 # 指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器 keyfile /etc/chrony.keys # 指定包含NTP验证密钥的文件。 logdir /var/log/chrony # 指定日志文件的目录。
2.6 设置时区
$ timedatectl # 查看当前系统时区 Local time: Thu 2020-06-25 20:39:16 CST Universal time: Thu 2020-06-25 12:39:16 UTC RTC time: Thu 2020-06-25 12:39:16 Time zone: Asia/Shanghai (CST, +0800) # 注意这里 NTP enabled: yes NTP synchronized: yes RTC in local TZ: no DST active: n/a $ timedatectl list-timezones # 查看所有可用的时区 $ timedatectl list-timezones | grep -E "Asia/S.*" # 筛选式查看在亚洲S开的上海可用时区 Asia/Sakhalin Asia/Samarkand Asia/Seoul Asia/Shanghai Asia/Singapore Asia/Srednekolymsk $ timedatectl set-timezone Asia/Shanghai # 设置当前系统为Asia/Shanghai上海时区 $ chronyc -a makestep # 设置完时区后,强制同步下系统时钟 200 OK $ timedatectl status # 查看时间同步状态 $ timedatectl set-ntp true # 开启网络时间同步(内网环境下,该步骤可省略)
2.7 服务器集群之间的系统时间同步
在生产环境中,其网络都是内网结构,那么内网如何保证服务器之间的时间同步呢?其实这个问题很简单,只需要搭建一台内网时间服务器,然后让所有计算机都到服务端(192.168.99.233)去同步时间即可。
具体操作:
服务端将默认同步的服务器注释,并添加以下内容:(表示与本机同步时间) server 192.168.99.233 iburst 这样我们需求的一台内网时间服务器已经配置完毕。 同样在客户端注释掉其他server,并在客户端(192.168.99.234)添加以下: server 192.168.99.233 iburst
到此已经完成系统时间的同步。如有多台机器,操作也是如此。
2.8 常用指令
$ chronyc sources -v # 查看 ntp_servers 状态 $ chronyc sourcestats -v # 查看 ntp_sync 状态 $ chronyc activity -v # 查看 ntp_servers 是否在线 $ chronyc tracking -v # 查看 ntp 详细信息 $ chronyc tracking # 校准时间服务器
*************** 当你发现自己的才华撑不起野心时,就请安静下来学习吧!***************
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律