通过NTP服务配置一台服务器为时间源,另一台安装NTP客户端并指向该源,重启服务以同步时间
Linux两台服务器时间同步方案
时间同步原理
Linux系统时间同步基于NTP(Network Time Protocol)或Chrony协议,通过客户端与时间源(如公共NTP服务器或内网主服务器)通信,校正本地时间,同步过程包含:
- 客户端发送时间请求
- 时间源返回标准时间
- 客户端计算时间偏移并修正系统时间
同步方式对比
方案 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
NTP(ntpd) | 传统网络环境 | 广泛兼容,稳定性好 | 收敛速度较慢 |
Chrony | 高延迟网络/虚拟化环境 | 快速同步,容忍网络波动 | 需单独配置 |
rsync+crontab | 简易定时同步 | 配置简单 | 精度低,依赖网络连通性 |
NTP同步实现步骤
安装NTP服务
# 服务器1(主时间源) yum install ntp -y # CentOS/RHEL apt install ntp -y # Ubuntu/Debian # 服务器2(客户端) 同上安装
配置主时间源(服务器1)
编辑/etc/ntp.conf
,添加以下内容:
# 指定上游时间源(例如阿里云NTP服务器) server ntp.aliyun.com iburst # 允许客户端访问 restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
配置客户端(服务器2)
编辑/etc/ntp.conf
,指向主时间源IP:
# 替换为主服务器IP server 192.168.0.1 iburst
启动并验证
# 两台服务器均执行 systemctl restart ntpd systemctl enable ntpd # 查看同步状态 ntpq -p # 显示""表示已同步
Chrony同步方案(替代方案)
安装Chrony
yum install chrony -y # CentOS/RHEL apt install chrony -y # Ubuntu/Debian
配置客户端(两台服务器均操作)
编辑/etc/chrony.conf
,添加:
# 指定时间源IP server 192.168.0.1 iburst # 允许同步调整硬件时钟 driftfile /var/lib/chrony/drift makestep 10 3
启动服务
systemctl restart chronyd systemctl enable chronyd
验证与排错
命令 | 作用 |
---|---|
date |
查看当前系统时间 |
ntpq -p |
查看NTP同步状态 |
chronyc tracking |
查看Chrony同步详情 |
systemctl status ntpd |
检查服务运行状态 |
常见问题:
- 时间偏差过大:先执行
timedatectl set-ntp false
禁用自动同步,手动ntpdate
修正后再启用服务 - 防火墙拦截:开放UDP 123端口(
firewall-cmd --add-port=123/udp
) - 时区不一致:通过
timedatectl set-timezone Asia/Shanghai
统一时区
相关问题与解答
Q1:如何检查Linux服务器是否已开启NTP同步?
A:
执行命令ntpq -p
,若输出中对应服务器行首出现符号,表示已成功同步。
remote refid st twhen poll reach delay offset jitter ============================================================================== LOCAL(0) .LOCL. 10 u 10 64 1 0.000 0.000 0.000
若未同步,可检查服务状态(systemctl status ntpd
)和网络连通性(telnet 目标IP 123
)。
Q2:两台服务器不在同一内网,如何实现时间同步?
A:
- 公网NTP服务器方案:两台服务器均配置公共NTP源(如
pool.ntp.org
),修改/etc/ntp.conf
为:server pool.ntp.org iburst
- 中继服务器方案:部署一台公网可访问的中继服务器作为时间源,其他服务器指向该中继,需确保中继服务器有稳定公网连接
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/68962.html