Ubuntu/CentOS 配置部署 时间同步、NTP服务(chronyd,ntpd,ntpdate)

一、概述

NTP服务器的阶层概念

网络时间按照NTP服务器的等级进行传播,根据离基准时间的远近将不同服务器归纳到不同的层中(Stratum),单个Stratum层的总数限制在15

0层(Stratum 0):表示高精度设备,例如原子钟、GPS时钟等,0层也称为参考时钟

1层(Stratum 1):这些设备和0层的设备相连,误差仅为微秒

2层(Stratum 2):这些设备和1层的设备通过网络相连

依次类推...,时间是按NTP的层级进行传播的(Peer之间是同层级传播)

NTP服务为C/S架构,NTP客户端请求NTP服务端,通过交互往返的数据包,客户端能够根据这个结果计算出准确的时间,客户端为了保证计算结果的精确度、可靠度,一般建议NTP服务客户端配置最少3个NTP服务器地址

列举部分NTP协议的软件实现

  • ntpdate:运行一次ntpdate命令,进行一次时间同步(该命令不是守护进程设计)
  • ntp:NTP协议的实现,可充当NTP Client、NTP Server(守护进程设计)
  • chrony:一个较新的NTP协议的实现,可充当NTP Client、NTP Server,Chrony相比ntp来说同步时间速度更快,精度更准,也是目前推荐的实现(守护进程设计)

二、ntpdate命令

ntpdate命令是一个客户端NTP程序,该程序并不是守护进程设计,ntpdate软件的绝大部分功能都已在ntpd中有包含,且ntpdate会逐渐进行退役

ntpdate设计用来通过指定的ntp服务器获取时间,并设置本地的时间,ntpdate的准确性、可靠性取决于服务器的数量,轮询查询的次数、间隔(该命令需要root权限执行)

#安装ntpdate
CentOS中执行 yum install ntpdate
Ubuntu中执行 apt install ntpdate

#ntpdate语法如下
ntpdate [ -46bBdqsuv ] [ -a key ] [ -e authdelay] [ -k keyfile ] [ -o version ] [ -p samples ] [ -t timeout ] [ -U user_name] server [ ... ]

#ntpdate命令选项解释如下:(可通过man ntpdate查看)
-4	仅使用IPv4
-6	仅使用IPv6
-a key		启用认证,并指定认证需要的密钥(默认禁用该功能)
-B		强制每次都使用adjtime()系统调用调整时间,即使偏移量+-500ms,默认情况下+-500ms使用settimeofday(),该情况下同步时间可能会超过1-2小时
-b		强制使用settimeofday()系统调用调整时间,而不是使用adjtime()调用来设置时间,在启动脚本中调用可以使用此选项

-d		启用调试模式,ntpdate将会完成所有动作,但是不修改本地时间,打印的输出信息可能会对调试很有帮助

-e authdelay		指定身份验证功能的处理延迟为authdelay,以秒和分为单位,给数字通常足够小,对于大多数用途来说可以忽略不记
-k keyfile		指定身份验证的密钥路径,默认为/etc/ntp/keys,该文件应该采用ntpd中所描述的格式

-o version		指定传出数据包的ntpd整数形式的版本号,可以为1、2,默认为4,该选项允许与较旧的NTP版本一起使用
-p samples		指定从每个服务器获取的样本数,可以是1-8,默认为4

-q		仅查询,不设置clock
-s		从标准输出转义日志输出到syslog,这主要是为了方便cron脚本而设计

-t timeout		指定从服务器收到响应的超时时间,可以是秒,分,该值四舍五入为0.2秒的倍数,默认值为1s
-u		ntpdate为传出数据包使用非特权端口,当处于防火墙背后且知名端口被防火墙阻断时很有用,-d选项始终使用非特权端口
-v		显示更多详细信息

-U user_name		ntpdate不使用root权限,并将用户ID更改为user_name,并将GroupID更改为server_user的主要组

ntpdate可以根据需要来手动设置时间,或者设置开机脚本达到每次启动时运行一次,也可以使用cron脚本来周期性运行ntpdate命令(带cron脚本的ntpdate不能替代ntpd,ntpd使用了很多复杂的算法来最大限度提高时间的准确性、可靠性,ntpdate不会约束本地主机的时钟频率,ntpdate的准确性是有限的)

使用ntpdate和NTP服务器同步一次时间
[root@ ~]# ntpdate 172.16.32.254
 6 May 10:54:35 ntpdate[2614]: adjust time server 172.16.32.254 offset 0.031896 sec


将同步好的Linux Kernel时间写入BIOS硬件时钟,以便重启后保持时间准确
hwclock -w


(可选)可以在cron中设置每2个小时运行一次
0 */2 * * * root /usr/sbin/ntpdate 172.16.32.254 > /dev/null 2>&1

若本机上运行了ntpd服务的话,无法再通过ntpdate命令来设置日期

三、ntpd守护进程、服务

使用ntpd守护能够自动调整时间

#安装ntpd守护进程
CentOS系统中执行    yum install ntp
Ubuntu系统中执行    apt install ntp

安装完成之后,该服务可用systemd进行管理

#在CentOS中ntp服务的服务名和Ubuntu中有点不一样
#CentOS中该service文件为
/usr/lib/systemd/system/ntpd.service

#Ubuntu中该service文件为
/lib/systemd/system/ntp.service

#当使用systemd进行管理的时候,注意名称区别(CentOS中服务名带d,Ubuntu中不带)
systemctl enable ntpd.service
systemctl enable ntp.service

systemctl start ntpd.service
systemctl start ntp.service

3.1 ntpd配置文件

ntpd的服务配置文件路径为/etc/ntp.conf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>