1.前言
当管理集群服务器时,各个主机之间的时间统一是很有必要的,某些中间件也强依赖于系统的时间,因此研究了NTP服务的搭建。
2.安装NTP服务
2.1机器准备
机器名称 | 机器ip |
---|---|
授时机器 | 10.0.0.1 |
客户端1 | 10.0.0.2 |
客户端2 | 10.0.0.3 |
2.2各个机器安装NTP
一般机器都是未安装NTP的,所以直接用下面的命令安装
如果机器无法联网需要离线配置yum源参见 [https://www.jianshu.com/p/857e5e6b5db9](https://www.jianshu.com/p/857e5e6b5db9)
yum install -y ntp
2.3授时机器配置
编辑文件 /etc/ntp.conf
将下面的内容直接覆盖原内容记得修改为自己的ip段
,或者将源文件备份新建文件
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -4 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
## 此处为允许10.0.0网段的机器可以访问授时服务
restrict 10.0.0.0 mask 255.255.255.0 nomodify notr
## 由于机器禁止连接互联网因此将外部授时注释掉,直接从本地获取时间
# restrict time1.aliyun.com nomodify notrap noquery
# restrict ntp1.aliyun.com nomodify notrap noquery
## 表示从本机同步时间
server 127.127.1.0
fudge 127.127.1.0 stratum 8
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
修改后重启ntp服务 systemctl restart ntpd.service
2.4客户端机器配置
直接编辑自动生成的配置文件 vim /ect/ntp.conf
,直接将服务端地址更改为授时机器的ip即可
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 10.0.0.1 iburst
修改后重启ntp服务 systemctl restart ntpd.service
2.5检查配置是否成功
使用 ntpstat
命令来检查同步是否成功,成功提示如下:
synchronised to NTP server (10.0.0.1) at stratum 10
time correct to within 42 ms
polling server every 1024 s
同步有一定延迟需要等几分钟,我的方法是重启后如果多次检查仍未同步时间,就再次重启ntp客户端,然后执行检查,一般几十秒内就同步成功了
2.6其他配置和指令
server 10.26.12.2 iburst minpoll 4 maxpoll 6
控制ntp的polling时间间隔,minpoll最小值(下限为4),maxpoll最大值(上线为17),两个值表示为2n次方,即最小是为16s,最大值为36小时。
watch ntpq -np
查看ntp的运行状态
remote 表示提供时间来源的服务器地址。
refid 表示提供时间来源的服务器的上层时间来源服务器地址。
st 表示stratum,即remote的层级。
t 表示类型 (u: unicast(单播) 或 manycast(选播) 客户端, b: broadcast(广播) 或 multicast(多播) 客户端, l: 本地时钟, s: 对称节点(用于备份), A: 选播服务器, B: 广播服务器, M: 多播服务器。
when 表示最后一次同步距离现在过去了多长时间 (默认单位为秒, “h”表示小时,“d”表示天)。
poll 表示同步的频率,根据rfc5905建议在 ntp版本4系列,这个值的范围在 4 (16秒) 至 17 (36小时) 之间(即2的指数次秒)。
reach 一个8位的左移移位寄存器值,用来测试能否和服务器连接,每成功连接一次它的值就会增加,以 8 进制显示。
delay 表示本地到remote的延迟,即建立通信往返所用的时间,单位是毫秒。
offset 表示本地与remote的时间偏移量,offset 越接近于0,本地与remote的时间越接近,单位为毫秒。
jitter 表示本地与remote同步的时间源的平均偏差(多个时间样本中的 offset 的偏差,单位是毫秒),这个数值的绝对值越小,主机的时间就越精确。