认证目标5.05 时间同步
网络时间协议(Network Time Protocol, NTP)客户端的配置相当简单。因此,本节只是概括性地介绍NTP客户端的配置文件以及相应的命令工具。
让各个不同的系统按同一个时间运行有着充分的理由。例如,如果Web服务器和客户端按照不同的时间进行日志记录,就会让故障排除变得极其困难。一些服务依赖于精确的时间戳,例如,时间漂移超过5分钟将导致Kerberos客户端无法通过验证。
RHEL 7包含两个NTP守护进程的RPM:ntpd和chronyd。不要二者都安装。通常,建议为始终连接到网络的系统安装ntpd,如服务器,而chronyd则是虚拟系统和移动系统的首选。我们将介绍默认的时间同步服务chronyd的配置。但是,我们首先将介绍如何配置时区。
5.5.1 时区的配置
每个系统,不管是物理的还是虚拟的都有一个硬件时钟。此时钟的时间取决于电池的续航能力。当电池逐渐耗尽时,这些硬件时钟最终都无法计时。在RHEL 7系统的安装过程中,通常把硬件时钟设置为本地时间而非UTC时间。但是,UTC(通常就是格林威治标准时间GMT)通常是服务器上的最佳设置,它能在改变到夏令时避免出错。
每个RHEL 7系统都有一个时区,它在/etc/localtime文件中配置。这是一个符号链接,指向/usr/share/zoneinfo下的一个时区文件。例如,如果读者在加利福尼亚州,那么/etc/localtime应该指向/usr/share/zoneinfo/America/Los_Angeles。
不必手动设置时区文件的符号链接,而是可以使用timedatectl实用工具。如果单独执行此命令,不使用任何参数,则它会显示当前时间设置的一个摘要,包括当前时间、时区和NTP状态。图5-14给出了一个样本输出。
图5-14 日期和时间设置
执行下面的命令可显示可用时区的列表:
# timedatectl list-timezones
要切换到不同的时区,可执行timedatectl set-timezone命令,如下所示:
# timedatectl set-timezone America/Los_Angeles
5.5.2 使用chronyd同步时间
默认的chronyd配置文件/etc/chrony.conf被设置为从NTP pool项目连接到多个公共服务器。结合使用时,chronyd守护进程可使时间错误减到最少。
server 0.rhel.pool.ntp.org iburst server 1.rhel.pool.ntp.org iburst server 2.rhel.pool.ntp.org iburst server 3.rhel.pool.ntp.org iburst
重构发行版(如CentOS)的用户会看到不同的主机名,如0.centos.pool.ntp.org。此处显示的iburst配置选项可让chronyd服务启动时的初始同步变快。
要将chronyd配置为与另一个NTP服务器同步,只需要修改/etc/chrony.conf中的server指令,然后重启chronyd:
# systemctl restart chrnoyd
使用chronyc sources -v命令可显示当前时间来源信息。图5-15给出了一个例子。
图5-15 NTP服务器的统计数据
5.5.3 使用ntpd同步时间
ntpd守护进程的基本配置很直观。首先,应该确保停止chronyd和在引导时禁用chronyd,因为chronyd和ntpd不能同时运行在同一个机器上:
# systemctl stop chronyd.service # systemctl disable chronyd.service
然后安装ntp RPM包:
# yum install ntp
默认的ntpd配置文件是/etc/ntp.conf。它类似于/etc/chronyd.conf文件,包含4个服务器指令,指向NTP pool项目中的公共服务器。可以定制配置,或者使用默认设置运行ntpd。完成对此文件的修改后,启动并启用ntpd:
# systemctl start ntpd.service # systemctl enable ntpd.service
要现实关于NTP源的信息,可执行ntpd -p命令。