1. Ubuntu 上 NTP 的重要性
NTP 是什么?
NTP(网络时间协议)是一种旨在通过网络准确同步计算机系统时间的协议。保持准确的系统时间对于日志一致性、事务处理和网络通信的可靠性至关重要。如果系统时钟漂移,可能会发生网络错误或数据不一致,因此准确的时间同步尤为重要,尤其是在服务器环境中。
在 Ubuntu 上,推荐使用 chrony,因为它即使在不稳定的网络环境中也能提供准确的时间同步。Chrony 还提供低延迟和快速同步,使其适合服务器和客户端环境。
2. 如何配置 NTP
安装和配置 Chrony
Chrony 是 Ubuntu 18.04 及更高版本的默认 NTP 客户端。使用以下步骤安装 Chrony 并使用 NTP 服务器配置时间同步。
安装步骤
sudo apt update
sudo apt install chrony
接下来,启动 Chrony 服务并启用其自动启动。
sudo systemctl start chrony
sudo systemctl enable chrony
配置文件位于 /etc/chrony/chrony.conf。如果您想使用位于日本的 NTP 服务器,请按以下方式配置:
server ntp.nict.jp iburst
server 0.jp.pool.ntp.org iburst
server 1.jp.pool.ntp.org iburst
server 2.jp.pool.ntp.org iburst
iburst 选项在连接到 NTP 服务器时加速初始同步。
3. 优化和选择 NTP 服务器
使用 NTP Pool 项目
NTP Pool 项目提供来自世界各地的区域优化的 NTP 服务器。通过配置多个 NTP 服务器,可以提高可靠性,确保如果一个服务器不可用,其他服务器可以无缝继续时间同步。
下面的示例显示了一个使用位于日本的服务器的配置:
server ntp.nict.jp iburst
server 0.jp.pool.ntp.org iburst
server 1.jp.pool.ntp.org iburst
server 2.jp.pool.ntp.org iburst
4. 设置时区
使用 timedatectl 命令
默认情况下,Ubuntu 使用 UTC 作为系统时区。您可以使用以下命令将其更改为日本标准时间 (JST):
sudo timedatectl set-timezone Asia/Tokyo
更改后,使用以下命令验证当前时区设置:
timedatectl
5. 故障排除
当 NTP 未同步时
检查防火墙
NTP 使用 UDP 端口 123,如果防火墙阻止此端口,同步可能会失败。使用以下命令打开端口 123:
sudo ufw allow 123/udp
检查假时间服务器
使用 ntpq -p 命令验证 NTP 服务器是否正常运行。提供不准确时间的服务器会标记为 x 符号。如果检测到,请在配置中移除或替换这些服务器。
Stratum 16 错误
如果 NTP 服务器无法与上游服务器同步,会发生 Stratum 16 错误。这表明存在连接或配置问题。请验证您的网络设置并重新配置 NTP 服务器,以确保与可靠的上游源同步。
手动时间同步
使用 Chrony 手动同步时间,请运行以下命令:
sudo ntpdate ntp.nict.jp
您还可以查看 Chrony 日志来诊断同步问题:
sudo journalctl -u chrony
6. 高负载环境中的 NTP 优化
调整 minpoll 和 maxpoll
在需要高精度时间同步的环境中,调整 NTP 轮询间隔可以允许更频繁的更新,并有助于最小化时间漂移。下面的配置示例增加了同步频率:
server ntp.nict.jp iburst minpoll 4 maxpoll 10
使用 Juju 管理 NTP
在大规模云环境中,Juju 可以自动化 NTP 服务的部署。Juju 监控主机负载,并自动选择最优主机作为 NTP 服务器。通过 Juju 部署 NTP 如下:
juju deploy cs:ntp ntp
juju config ntp auto_peers=true
这实现了自动化的 NTP 管理,有效分配负载并确保高效的时间同步。
7. 增强安全性
NTP 服务器的访问控制
为了提升安全性,您可以将 NTP 服务器的访问限制在特定的 IP 地址。向 /etc/chrony/chrony.conf 添加访问控制规则,如下所示,仅允许来自批准网络的请求:
allow 192.168.1.0/24
这可以防止外部主机的未授权 NTP 请求,增强内部网络的安全性。
