第十一章 时间同步服务
11.1 NTP简介
NTP是网络时间协议(Network Time Protocol)的简称,功能是同步各主机的时间。因为在服务集群中,很多服务要求所有主机必须保持时间一致,所以就需要一台时间服务器,下面所有主机都遵守这台服务器的时间配置,并定期到这台服务器上做时间调整。
其实在windows中,我们也是可以设置连接时间服务器的,如下图:
这种时间服务器就可以使用NTP服务实现。
NTP服务器的服务端口是:UDP 123。
11.2 NTP服务部署
实验环境:NTP服务器 ip 192.168.10.1,关闭防火墙
NTP客户端 ip 192.168.10.10,关闭防火墙
服务器配置:
yum -y install ntp ---安装ntp软件包
vi /etc/ntp.conf ---编辑ntp配置文件
其中:resctrict 行,定义针对客户端的访问权限,一般按默认设置。
server 行,设定本服务器的上层服务器,即本服务器通过上层服务器来确定自身时间。文件中默认指向公网的时间服务器。若本机已连网且ip、gw、dns等配置正确,则可使用默认的centos的NTP服务器作为上层,但如果未连网,则只能把本机作为顶层时间服务器。
写入:server 127.127.1.0 prefer ---指定自己为优先服务器
注:NTP指定自己时ip必须写127.127.0.1,prefer表示最高优先级,即本机为根服务器,也就是顶层服务器。
systemctl restart ntpd ---启动服务
systemctl enable ntpd
ntpstat ---查看ntp服务状态
客户端配置:
客户端连接服务器有两种方式,一种是人为手动更新时间,另一种是自动联系服务器做时间更新,下面来分别介绍下:
方式一:手动更新
ntpdate 192.168.10.1 ---联系服务器做时间同步
图中可见共调整的多少秒。
方式二:自动更新
yum -y install ntp ---安装ntp软件包
vi /etc/ntp.conf ---写入
server 192.168.10.1 ---指定上层服务器
systemctl restart ntpd ---启动服务
客户端会在服务启动后的15分钟联系服务器更新同步一次时间。 注:启动ntp服务后,客户端不可再使用手动方式,即ntpdate命令失效。
11.3 配置参数介绍
在配置文件/etc/ntp.conf中,有很多的默认配置项,其实在生产环境中,我们很少对这些做改动,但是也需要大体了解他们的功能。下面就来稍作介绍:
restrict行,用来管理ntp权限,常见参数说明:
default:所有IP地址
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时
notrust:客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery:不提供客户端的时间查询,即用户端不能使用ntpq,ntpdc等命令来查询ntp服务器的连接信息。但仍可调整时间。PS:客户端需要安装ntp包后,才可以使用ntpq 命令,如:ntpq –p
notrap:不提供trap远端登陆:拒绝为匹配的主机提供模式 6 控制消息陷阱服务。陷阱服务是 ntpdq 控制消息协议的子系统,用于远程事件日志记录程序。
nopeer:用于阻止主机尝试与服务器对等,并允许欺诈性服务器控制时钟
kod: 访问违规时发送 KoD 包。
restrict -6 :表示IPV6地址的权限设置
关于server行的配置,允许在上层服务器ip后设置三种配置:
prefer:优先级设定,表示优先使用该服务器做时间同步,可视为顶层服务器
iburst:作用是如果在一个标准的轮询间隔内没有应答,客户端会发送一定数量的包(八个包而不是通常的一个)给 NTP 服务器。如果在短时间内呼叫 NTP 服务器几次,没有出现可辨识的应答,那么本地时间将不会变化。
burst:该选项一般不用。这个选项不仅在轮询间隔发送大量包(明显又是八个),而且也会在服务器能正常使用时这样做。如果你在高层服务器持续发送包,甚至是它们在正常应答时,你可能会因为使用 “burst” 选项而被拉黑。
另外,客户端输入ntpq -p 命令后,会查看到连接服务器的信息:
参数说明:
remote - 本机和上层ntp的ip或主机名,“ ”表示优先,“*”表示次优先
refid - 参考上一层ntp主机地址
st - stratum阶层
when - 多少秒前曾经同步过时间
poll - 下次更新在多少秒后
reach - 已经向上层ntp服务器要求更新的次数
delay - 网络延迟
offset - 时间补偿
jitter - 系统时间与bios时间差
tips:本节内容借鉴了很多网络文章。但并非重点,能够了解即可。
11.4 其他相关参数
11.4.1 硬件时间
我们知道,计算机主板上有一个bios程序,它里面会记录一个时间,称为硬件时间,我们可以使用hwclock 命令查看到硬件时间。
而Linux系统中的时间为系统时间,二者可能会是不相同的,所以我们可以使用如下命令做二者的同步:
hwclock –w ---以系统时间为准同步到硬件时间
hwclock -s --- 以硬件时间为准,同步到系统时间
若要想让客户机通过ntp同步到时间后,一并同步给硬件时间,可以编辑/etc/sysconfig/ntpd,该其中的SYNC_HWCLOCK=yes即可:
11.4.2 时区设置
我们在安装centos系统时,我们已经指定过时区了,但后期也是可以更改的。
在Linux中可识别的、支持的所有时区,都以文件的形式存在,是存放在/usr/share/zoneinfo/下:
而系统中记录本机所在时区的配置文件是:/etc/localtime,其中存放的其实是某个时区文件中的内容,所以我们可以把某个时区文件的内容导入到/etc/localtime中,就等于更改了时区了,如下:
cat /usr/share/zoneinfo/Asia/Hong_Kong >/etc/localtime ---更改时区
11.5 chrony简介
在RHCE7中,开始改用新的时间服务chrony,它与NTP功能相同,可以认为是NTP的升级,它也借助于NTP服务工作。准确讲,chrony等同于NTP的功能,可认为是NTP的变身。其配置文件也与NTP类似,但配置更简洁。下面来看一下具体配置:
服务器配置
yum -y install chrony
vi /etc/chrony.conf ---编辑配置文件,写入:
allow192.168.10.0/24 ---指定允许来找本机做时间同步的客户端地址
local stratum10 ---如果无上层服务器则采用自己的时间来同步客户端
PS:这两行其实文件中已有,只是被注释了,也可以解注释后改之
systemctl restart chronyd
客户端配置:
yum -y install chrony
vi /etc/chrony.conf
在所有的server之前,写入:server192.168.10.1 iburst
systemctl restart chronyd ---重启后即可做时间同步了
注:同步可能会有延时,可以多重启几次试试。
chronyc sources –v ---查看服务器状态,相当于NTP的ntpq –p