凌峰创科服务平台

Linux服务器如何设置时间同步?

在Linux服务器管理中,时间同步是确保系统日志、任务调度、安全认证等关键功能正常运行的基础,由于硬件时钟的漂移或网络环境的变化,服务器时间可能会出现偏差,因此配置时间同步机制至关重要,以下是Linux服务器设置时间同步的详细步骤和注意事项。

Linux服务器如何设置时间同步?-图1
(图片来源网络,侵删)

时间同步的重要性

Linux服务器的时间准确性直接影响多个方面:

  1. 日志管理:系统日志、应用日志的时间戳需一致,便于故障排查和审计。
  2. 任务调度cron等定时任务依赖系统时间,时间偏差可能导致任务执行失败或重复执行。
  3. 安全认证:基于时间的证书(如SSL/TLS)、Kerberos等认证服务对时间精度要求严格。
  4. 分布式系统:在集群环境中,各节点时间同步可避免数据一致性问题。

时间同步工具的选择

Linux系统中常用的时间同步工具包括:

  • NTP(Network Time Protocol):传统时间同步协议,适用于大多数场景,通过ntpd服务实现。
  • Chrony:现代时间同步工具,相比NTP,在网络不稳定或频繁切换网络的场景下表现更优,通过chronyd服务实现。
  • systemd-timesyncd:轻量级时间同步服务,适用于桌面或简单服务器环境,依赖systemd。

推荐生产环境使用Chrony,其优势包括:快速同步时间、支持硬件时钟校准、低资源占用等。

使用Chrony配置时间同步

安装Chrony

以CentOS/RHEL为例,使用yum安装:

Linux服务器如何设置时间同步?-图2
(图片来源网络,侵删)
sudo yum install chrony -y

对于Ubuntu/Debian系统,使用apt安装:

sudo apt update && sudo apt install chrony -y

配置Chrony服务

安装完成后,编辑配置文件/etc/chrony/chrony.conf

sudo vim /etc/chrony/chrony.conf

核心配置参数如下:

参数 说明 示例
server 指定NTP服务器地址,可配置多个以提高可靠性 server 0.centos.pool.ntp.org iburst
pool 指定NTP服务器池,自动选择最优节点 pool pool.ntp.org iburst
iburst 启动时快速同步时间(默认发送8个包而非1个) server ntp.aliyun.com iburst
driftfile 记录硬件时钟频率偏差,用于离线时校准 driftfile /var/lib/chrony/drift
makestep 时间偏差过大时直接跳步调整(避免缓慢同步) makestep 1.0 3(偏差超过1秒时,前3次调整直接跳步)
local stratum 当无法同步外部时间时,作为本地时间服务器(stratum 10) local stratum 10

配置示例

Linux服务器如何设置时间同步?-图3
(图片来源网络,侵删)
# 使用NTP服务器池(推荐公共NTP源,如阿里云、阿里云等)
pool 2.cn.pool.ntp.org iburst
pool 3.cn.pool.ntp.org iburst
pool ntp.aliyun.com iburst
# 允许其他服务器同步本机时间(可选)
allow 192.168.1.0/24
# 记录硬件时钟偏差
driftfile /var/lib/chrony/drift
# 启动时快速同步
makestep 1.0 3
# 禁止以低权限用户运行
cmdport 0

启动并启用Chrony服务

# 启动服务
sudo systemctl start chronyd
# 设置开机自启
sudo systemctl enable chronyd
# 检查服务状态
sudo systemctl status chronyd

验证时间同步状态

使用chronyc tracking查看同步状态:

chronyc tracking

输出关键信息包括:

  • System time:当前系统时间与NTP服务器的时间偏差。
  • Ref time:参考服务器的时间戳。
  • Last offset:最后一次同步的时间偏差。

使用chronyc sources查看NTP服务器源状态:

chronyc sources

输出^表示服务器可用,表示当前使用的源。

手动同步时间

若需立即同步时间,可执行:

sudo chronyc makestep

使用NTP配置时间同步(传统方案)

若仍需使用NTP(如老旧系统兼容),步骤如下:

  1. 安装NTP服务
    sudo yum install ntp -y  # CentOS/RHEL
    sudo apt install ntp -y   # Ubuntu/Debian
  2. 配置NTP服务器:编辑/etc/ntp.conf,添加server指令(如server 0.pool.ntp.org)。
  3. 启动服务
    sudo systemctl start ntpd
    sudo systemctl enable ntpd
  4. 验证同步
    ntpq -p  # 查看NTP服务器状态

防火墙与端口配置

时间同步依赖UDP协议,默认端口为123,需确保防火墙允许该端口通信:

  • firewalld(CentOS/RHEL)
    sudo firewall-cmd --permanent --add-port=123/udp
    sudo firewall-cmd --reload
  • ufw(Ubuntu/Debian)
    sudo ufw allow 123/udp

硬件时钟(RTC)校准

Linux系统使用两个时钟:系统时钟(软件时钟)硬件时钟(RTC),建议定期同步两者:

  1. 将系统时间写入硬件时钟
    sudo hwclock --systohc
  2. 将硬件时钟同步到系统时间
    sudo hwclock --hctosys

    Chrony或NTP会自动管理硬件时钟,手动操作仅在特殊场景(如离线维护)时需要。

常见问题与优化

  1. 时间同步失败

    • 检查网络连通性:ping NTP服务器地址
    • 确认防火墙或安全组未阻止123端口。
    • 检查chrony.confserverpool地址是否正确。
  2. 时间偏差过大

    • 增加makestep的阈值(如makestep 10.0 3)。
    • 检查NTP服务器是否可达,或更换服务器源。
  3. 频繁时间跳变

    • 可能是硬件时钟不稳定,可通过chronyc sourcestats查看源稳定性。
    • 检查系统负载过高导致时钟调度异常。

相关问答FAQs

问题1:如何查看Linux系统当前时间和同步状态?
解答:可通过以下命令查看:

  • 查看系统时间:date
  • 查看硬件时间:hwclock
  • 查看Chrony同步状态:chronyc trackingchronyc sources
  • 查看NTP同步状态(若使用NTP):ntpq -p

问题2:服务器无法访问外网时,如何配置时间同步?
解答:若服务器无法连接外网NTP服务器,可搭建本地NTP服务器或使用内部时间源:

  1. 选择一台可访问外网的服务器作为时间源,配置Chrony/NTP服务。
  2. 在目标服务器上,将时间源指向内部服务器(如server 192.168.1.100 iburst)。
  3. 若为集群环境,可配置一台服务器作为主时间源,其他服务器同步该主机时间。
  4. 对于完全离线的场景,可定期手动同步时间或使用GPS/原子钟等硬件时间源。
分享:
扫描分享到社交APP
上一篇
下一篇