部署NTP服务(集群)¶
在 ntp快速起步 我介绍了在 RHEL/CentOS 环境中如何快速构建 ntpd
服务,提供集群以及自身服务器的时间同步。不过, ntpd
虽然功能强大,并且也是目前最完善实现NTP协议的标准服务,但是,在我们日常服务器运行环境中,已经逐步分化并采用了其他时钟同步方案:
主流发行版采用了
chrony
作为NTP服务器,原因是chrony虽然不如ntpd适合复杂全面的NTP协议,但是对于维护普通数据中心集群已完全满足要求,并且在网络中断后恢复同步时钟更为稳定,也适合支持大规模客户端对于单纯的NTP客户端不在安装沉重的ntpd整套软件,而是采用 Systemd进程管理器 的组件 Systemd Timesyncd服务 实现SNTP客户端,这样不在需要安装ntpd,也不需要ntpdate来实现同步,仅需要简单的一个组件就可以实现客户端时钟同步
采用
systemd
的各个Linux发行版已经模式采用 Systemd Timesyncd服务 取代了ntpdate
以及chrony
(用于取代ntpd
服务) 的客户端。以往通过操作系统启动时运行ntpdate
来矫正时间,现在只需要默认启动systemd-timesyncd
服务就可以矫正并保持本地时间同步不过,如果系统再安装
chrony
,则timedatectl
将使用chrony
来实现时间同步,这样可以确保不会同时运行两个时间同步服务。ntpdate
今后将在未来的timedatectl
(或者chrony
)中去除,并且默认不在安装。timesyncd
用于常规的时钟同步,而chrony
则处理更为复杂的案例。
设置网络时间协议的服务¶
在Ubuntu平台,有多个软件可以实现网络时间服务,如 chrony
, ntpd
和 open-ntp
,建议使用 chrony
chrony(d)¶
NTP服务 chronyd
计算系统时钟的drift和offset并持续修正。如果长时间不能连接网络NTP服务器,也可以保证时钟不偏移。该服务只消耗很少的处理能力和内存,在现代服务器硬件环境这个消耗往往可以忽略。
安装:
sudo apt install chrony
备注
chrony
软件包包含2个执行程序:
chronyd
通过NTP协议提供时间同步的服务chronyc
命令行和chrony
服务交互的接口
chronyd配置¶
编辑
/etc/chrony/chrony.conf
添加服务配置行:pool 2.debian.pool.ntp.org offline iburst allow 192.168.6.0/24
备注
这里提供内部局域网 192.168.6.0/24
网段NTP客户端访问,一定需要配置这行,否则 chronyd
服务启动后不监听端口
启动服务:
sudo systemctl restart chrony.service
检查状态:
chronyc sources
配置ufw¶
Ubuntu系统使用ufw管理防火墙,对于NTP服务器,需要开放 UDP 端口 123
sudo ufw allow ntp
sudo ufw disable
sudo ufw enable
timesyncd客户端配置¶
chrony客户端配置¶
修订
/etc/chrony/chrony.conf
配置服务器指向NTP服务器地址:
#pool pool.ntp.org iburst
#initstepslew 10 pool.ntp.org
pool 192.168.7.200 iburst
initstepslew 10 192.168.7.200
driftfile /var/lib/chrony/chrony.drift
rtcsync
cmdport 0