在运维工作中,服务器时间不同步会引发多种问题,本文将在 CentOS7 系统下,系统介绍 NTP 与 Chrony 两种时间同步方案,涵盖原理、适用场景、完整配置步骤、验证方法及常见问题处理。
一、时间同步的必要性
服务器本地时钟在长时间运行后会产生漂移。对于单机影响有限,但在集群、分布式服务、日志审计、定时任务和安全认证等场景中,统一时间是系统稳定运行的基础:
日志可追溯性:统一的时间戳便于在多台服务器间精准定位问题。
集群稳定性:MySQL 主从、Redis 集群、K8s 节点等组件对时间有严格要求,偏差过大可能引发故障。
任务执行准确性:定时任务及备份脚本依赖正确时间,时间错误会导致任务漏执行或重复执行。
安全合规:证书验证、登录审计、安全策略,都依赖准确的系统时间。
说明:在 CentOS7 中,NTP为传统方案,兼容性强;Chrony为官方默认推荐,同步速度快、断网恢复后校准迅速,生产环境优先采用 Chrony,对老旧系统或需兼容 NTP 协议的场景则使用 NTP。
NTP vs Chrony 对比
使用场景说明
在实际部署前,请先根据你的环境和需求,确定采用哪种方案:
场景一:单机或少量服务器同步公网时间
如果你的服务器可以访问互联网,只需将本机时间与外部标准时间源对齐,那么:
推荐使用 Chrony(CentOS7 默认方案),配置简单,同步速度快,资源占用低。
若你正在维护较老的操作系统(如 CentOS 6 或更早),或必须与现有 NTP 基础设施保持协议兼容,则选择 NTP。
场景二:搭建内网时间服务器,为局域网内多台设备提供时间同步
当你的服务器位于内网(无法访问外网),或需要统一内网所有设备的时间基准时,需要在一台机器上搭建时间服务,其余机器作为客户端指向这台服务器。
内网环境以 CentOS7 为主:推荐使用 Chrony,只需在 chrony.conf 中添加 allow 指令即可授权指定网段的客户端,配置简单,同步精度高。
内网存在较老的操作系统(如 CentOS6、Ubuntu 14.04 等):这些系统默认使用 NTP,为了兼容性,建议使用 NTP 搭建服务端,并通过 restrict 指令控制访问权限。
二、NTP服务配置
该方案适用于需兼容老旧设备或在内网自建 NTP 服务器的场景。
前提准备
CentOS7 服务器,具备 root 权限;
防火墙允许 NTP 服务端口(123/UDP),或临时关闭防火墙进行测试;
若需同步外网,服务器需可访问公网 NTP 源;内网环境则需配置本地 NTP 服务器。
步骤1:安装NTP服务
# 安装ntp和ntpdate(ntpdate用于临时同步时间)yum install -y ntp ntpdate
# 安装ntp和ntpdate(ntpdate用于临时同步时间)
yum install -y ntp ntpdate
步骤2:配置上游NTP服务器
# 在修改前先备份原配置文件,如果后续配置出错,可以用备份文件快速恢复。cp /etc/ntp.conf /etc/ntp.conf.bak# 编辑配置文件vi /etc/ntp.conf
# 在修改前先备份原配置文件,如果后续配置出错,可以用备份文件快速恢复。
cp /etc/ntp.conf /etc/ntp.conf.bak
# 编辑配置文件
vi /etc/ntp.conf
找到server开头的行,注释掉原有默认源,添加国内公网 NTP 源。
# 注释原有默认配置,是 CentOS 默认的 NTP 池地址,服务器在国外,国内访问可能存在延迟高、不稳定等问题。# server 0.centos.pool.ntp.org iburst# 新增国内NTP源server ntp.aliyun.com iburstserver cn.ntp.org.cn iburstserver ntp.tencent.com iburst# 配置解读server #指定一个上游 NTP 时间服务器。ntp.aliyun.com #阿里云提供的公共NTP 服务。cn.ntp.org.cn #国内 NTP 池项目,域名指向国内多台 NTP 服务器。ntp.tencent.com #腾讯云提供的公共 NTP 服务。iburst #当NTP 服务启动或与服务器初次同步时,它会快速发送多个时间请求包,从而缩短首次同步的时间,让系统时间快速对齐。
# 注释原有默认配置,是 CentOS 默认的 NTP 池地址,服务器在国外,国内访问可能存在延迟高、不稳定等问题。
# server 0.centos.pool.ntp.org iburst#
新增国内NTP源
server ntp.aliyun.com iburst
server cn.ntp.org.cn iburst
server ntp.tencent.com iburst
# 配置解读
server #指定一个上游 NTP 时间服务器。
ntp.aliyun.com #阿里云提供的公共NTP 服务。
cn.ntp.org.cn #国内 NTP 池项目,域名指向国内多台 NTP 服务器。
ntp.tencent.com #腾讯云提供的公共 NTP 服务。
iburst #当NTP 服务启动或与服务器初次同步时,它会快速发送多个时间请求包,从而缩短首次同步的时间,让系统时间快速对齐。
保存退出(Esc + :wq)。
步骤3:启动服务并设置开机自启
# 启动ntpd服务systemctl start ntpd# 设置开机自启systemctl enable ntpd# 查看服务状态,显示active (running)即为成功systemctl status ntpd
# 启动ntpd服务
systemctl start ntpd
# 设置开机自启
systemctl enable ntpd
# 查看服务状态,显示active (running)即为成功
systemctl status ntpd
步骤4:同步与验证
# 临时强制同步时间(首次配置建议执行)ntpdate ntp.aliyun.com# 查看当前系统时间date# 查看NTP同步状态ntpq -p
# 临时强制同步时间(首次配置建议执行)
ntpdate ntp.aliyun.com
# 查看当前系统时间
date
# 查看NTP同步状态
ntpq -p
出现服务器列表、延迟等信息,说明NTP同步正常。
三、Chrony服务配置
Chrony是CentOS7默认的时间同步服务,轻量、快速、容错性强,虚拟机、云服务器、生产集群推荐,配置比NTP更简单,默认已安装,直接改配置就能用。
步骤1:检查是否安装
# 检查chrony安装状态rpm -qa | grep chrony# 未安装则执行安装yum install -y chrony
# 检查chrony安装状态
rpm -qa | grep chrony
# 未安装则执行安装
yum install -y chrony
步骤2:配置Chrony上游NTP源
# 备份原有配置cp /etc/chrony.conf /etc/chrony.conf.bak# 编辑配置文件vi /etc/chrony.conf
# 备份原有配置
cp /etc/chrony.conf /etc/chrony.conf.bak
vi /etc/chrony.conf
注释原有 pool 配置,添加国内 NTP 源:
# 注释默认配置# pool 2.centos.pool.ntp.org iburst# 新增国内NTP源pool ntp.aliyun.com iburstpool cn.ntp.org.cn iburstpool ntp.tencent.com iburst
# 注释默认配置
# pool 2.centos.pool.ntp.org iburst
# 新增国内NTP源
pool ntp.aliyun.com iburst
pool cn.ntp.org.cn iburst
pool ntp.tencent.com iburst
补充:若需将本机作为内网时间服务器,为局域网内的其他服务器或设备提供统一的时间基准。
可添加以下配置:
# 允许192.168.0.0/16网段的机器同步,按需修改网段allow 192.168.0.0/16# 本地时钟作为后备(避免断网后无时间源)local stratum 10
# 允许192.168.0.0/16网段的机器同步,按需修改网段
allow 192.168.0.0/16
# 本地时钟作为后备(避免断网后无时间源)
local stratum 10
步骤3:启动Chrony并设置开机自启
# 重启chronyd服务(修改配置后必须重启)systemctl restart chronyd# 设置开机自启systemctl enable chronyd# 查看服务状态systemctl status chronyd
# 重启chronyd服务(修改配置后必须重启)
systemctl restart chronyd
systemctl enable chronyd
# 查看服务状态
systemctl status chronyd
步骤4:验证Chrony同步状态
# 查看时间同步是否开启,显示System clock synchronized: yes 即为成功timedatectl# 查看Chrony详细同步状态chronyc tracking# 查看上游NTP服务器列表chronyc sources -v
# 查看时间同步是否开启,显示System clock synchronized: yes 即为成功timedatectl
# 查看Chrony详细同步状态
chronyc tracking
# 查看上游NTP服务器列表
chronyc sources -v
成功标志:timedatectl结果里,NTP synchronized: yes、System clock synchronized: yes,代表时间同步正常运行!
四、时区配置
时间同步正常但时区错误仍会导致显示时间不正确。中国标准时间使用上海时区(东八区):
# 查看当前时区timedatectl# 设置为上海时区(中国标准时间)timedatectl set-timezone Asia/Shanghai# 再次查看,确认时区正确date
# 查看当前时区
timedatectl
# 设置为上海时区(中国标准时间)
timedatectl set-timezone Asia/Shanghai
# 再次查看,确认时区正确
五、常见问题与处理
坑1:NTP和Chrony同时运行:两个服务冲突,会导致时间同步异常,只能开一个!用Chrony就关掉ntpd,用NTP就关掉chronyd;
坑3:修改配置后不重启服务:无论NTP还是Chrony,改完配置必须重启服务,否则配置不生效;
坑4:内网不同步:客户端配置的服务器IP错误,或服务器未允许客户端同步,检查allow配置和网络连通性;
坑5:系统时间偏差过大:Chrony 可自动校准;NTP 需先使用 ntpdate 手动同步后再启动服务。
六、常用命令参考
通用时间命令
查看系统时间:date
查看时区和同步状态:timedatectl
修改时区:timedatectl set-timezone Asia/Shanghai
NTP常用命令
临时同步:ntpdate ntp.aliyun.com
查看同步状态:ntpq -p
服务管理:start/stop/enable/disable ntpd
Chrony常用命令
查看同步详情:chronyc tracking
查看上游源:chronyc sources -v
服务管理:restart/start/stop/enable/disable chronyd
结语
时间同步是运维基础中的关键环节,直接关系到系统稳定性和业务正常运行。在 CentOS7 环境下,生产场景优先使用 Chrony,配置简便且同步效率高;老旧或特殊兼容场景可选择 NTP。本文提供的双方案均经过实操验证,可根据实际环境选用。
配置完成后,请使用 timedatectl 确认同步状态,确保系统时间准确无误。
长按下图(👇👇)二维码,一键关注“武汉木亘信息技术有限公司”
武汉木亘信息技术有限公司
诚信 共赢 创新 发展