时间同步服务核心知识笔记:原理、配置
一、时间同步服务
在 Linux 系统中,准确的时间至关重要。对于服务器集群,时间同步确保各节点间数据处理和交互的一致性,避免因时间差异导致的事务处理错误、日志记录混乱等问题。在分布式系统中,时间同步有助于协调任务调度、数据备份等操作。对于依赖时间戳的数据库系统,准确的时间是保证数据完整性和事务正确性的基础。
时间同步对以下场景至关重要:
日志一致性:多台服务器日志时间对齐,便于故障排查。
安全协议:Kerberos、SSL证书验证等依赖精确时间。
分布式系统:数据库集群、区块链节点等需严格时间同步。
定时任务:确保 cron 或 systemd timer 按计划执行。
二、timedatectl 命令
(一)命令概述
timedatectl
是 systemd 工具集中用于管理系统时间和日期的命令行工具,功能丰富且使用便捷。
(二)常用操作
查看系统时间和日期:
在终端输入timedatectl
,可查看当前系统的时间、日期、时区、是否开启 NTP(网络时间协议)同步等信息。
Local time: 三 2024-09-25 14:30:00 CST ——> 当前系统时间
Universal time: 三 2024-09-25 06:30:00 UTC——>伦敦时间
RTC time: 三 2024-09-25 06:30:00——>硬件时间
Time zone: Asia/Shanghai (CST, +0800)——>时区
NTP enabled: yes——>系统时间同步开启
NTP synchronized: yes——>npy协议开启
RTC in local TZ: no
DST active: n/a
设置系统时间和日期:
若要手动设置时间,可使用timedatectl set-time "YYYY-MM-DD HH:MM:SS"
命令。
如设置时间为 2025 年 5 月 5 日 22 点整,执行
timedatectl set-time "2025-05-5 22:00:00"
。设置日期可单独使用timedatectl set-date "YYYY-MM-DD"
。
设置时区:
使用timedatectl set-timezone 时区名称
来设置系统时区。
例如设置为纽约时区,执行
timedatectl set-timezone America/New_York
。可通过timedatectl list-timezones
查看所有可用时区。
开启或关闭 NTP 同步:
开启 NTP 同步:
timedatectl set-ntp true
;关闭 NTP 同步:timedatectl set-ntp false
。开启后,系统会自动与 NTP 服务器同步时间。
关闭时间系统锁(System clock synchronized)
systemctl stop chronyd.service
修改时间
先创建一个监视器方便观察时间修改变化
watch -n 1 timedatectl
timedatectl set-time
设置时间命令
timedatectl set-time "2025-5-5 12:12:12"
三、chrony相关命令
(1) 设置同步时间
打开/etc/chrony.conf
vim /etc/chrony.conf
重启 chronyd.service 服务
systemctl restart chronyd.service
四、chrony.conf 配置文件
主要配置项
NTP 服务器配置:
使用server
关键字指定 NTP 服务器。例如:
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
iburst
选项表示在初始同步时,快速发送多个 NTP 请求,加快同步速度。可配置多个服务器,chronyd
会尝试从不同服务器同步时间,提高可靠性。
部署本地时间源(需要至少两台主机)
进入/etc/chrony.conf
vim /etc/chrony.conf
allow:指定一台主机、子网,或者网络以允许访问本服务器
local stratum 10: 即使 server 指令中时间服务器不可用
重启服务
systemctl start chronyd.service
再次进入
vim /etc/chrony.conf
重启服务
systemctl restart chronyd.service
服务端关闭火墙
systemctl stop firewalld