生产上Ntp Server的研究与配置
###推荐使用的NTP服务器:http://www.pool.ntp.org/zone/cn
time.pool.aliyun.com
cn.pool.ntp.org
2.cn.pool.ntp.org
s1a.time.edu.cn
s2c.time.edu.cn
s2m.time.edu.cn
time.asia.apple.com
1.asia.pool.ntp.org
3.asia.pool.ntp.org
#加两个IP的,防止DNS域名解析有问题
202.112.10.60
202.112.10.36
有的可能是集群,一个域名后面有很多服务器。可以通过ntpdate -q cn.pool.ntp.org
# ntpdate -q cn.pool.ntp.org
server 202.118.1.130, stratum 2, offset -0.011422, delay 0.18146
server 202.120.2.101, stratum 3, offset -0.051815, delay 0.07179
server 202.118.1.81, stratum 2, offset -0.010541, delay 0.18280
server 202.112.29.82, stratum 2, offset -0.021839, delay 0.15935
25 Nov 20:53:54 ntpdate[4641]: adjust time server 202.112.29.82 offset -0.021839 sec
生产环境的架构部署:
NTP服务器:三台
- 一定要两台或者两台以上
- 两台可以设为对等模式,互为备份
- 如果只有一台NTP服务器,一旦出现问题,后面的服务器可能都会跟着出问题
生产中有碰到过当时只有一台NTP服务器,有次突然快了一分钟,结果跟它同步的服务器全部快了一分钟,有两台的话就能避免这种情况)
172.30.1.2 (redhat6.4)
172.30.1.3 (redhat6.4)
172.30.1.4 (redhat6.4)
客户端: 客户端应用、数据库服务器有Redhat、Oracle Linux、HP-UX、Solaris
一、配置NTP服务器:
[root@172.31.1.2 ~]# cat /etc/ntp.conf
#IPv4 的用户只能同步时间
restrict default kod nomodify notrap nopeer noquery
#IPv6 的用户只能同步时间
restrict -6 default kod nomodify notrap nopeer noquery
#因为上级NTP全部是域名,最好这级不要写ignore,要不然可能同步不会正常
#默认值,放行本机来源
restrict 127.0.0.1
restrict -6 ::1
#放行局域网来源(不能修改查询时间)
restrict 172.28.9.0 mask 255.255.255.0 nomodify
restrict 172.31.1.0 mask 255.255.255.0 nomodify
restrict 172.28.6.0 mask 255.255.255.0 nomodify
restrict 192.168.0.0 mask 255.255.255.0 nomodify
server time.pool.aliyun.com iburst
server cn.pool.ntp.org iburst
server 2.cn.pool.ntp.org iburst
server s1a.time.edu.cn iburst
server s2c.time.edu.cn iburst
server s2m.time.edu.cn iburst
server time.asia.apple.com iburst
server 1.asia.pool.ntp.org iburst
server 3.asia.pool.ntp.org iburst
server 202.112.10.60 iburst
server 202.112.10.36 iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 8
logfile /var/log/ntp.log
broadcastdelay 0.008
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys
二、各种服务器客户端的设置:
# cat /etc/ntp.conf
restrict default ignore #拒绝 IPv4 上的所有类型的 NTP 连接
restrict -6 default ignore #拒绝 IPv6 上的所有类型的 NTP 连接
restrict 127.0.0.1 #默认值,放行本机来源
restrict -6 ::1 #默认值,放行本机来源
restrict 172.31.1.0 mask 255.255.255.0 #放行局域网来源
server 172.31.1.2 iburst
server 172.31.1.3 iburst
server 172.31.1.4 iburst
</pre>
<pre>#对于上级不要用优先prefer级,让客户端自动选择</pre>
<pre>
#server 127.127.1.0
#fudge 127.127.1.0 stratum 11
#如果是最后一级的客户端,可以不添加上面两句,这样上面一级变成同步LOCAL,这一级也能正常同步。
logfile /var/log/ntp.log
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys
三、开启"微调模式"
也就是在options中要加入 -x的选项,(NTP服务器和下面的各系统最后都配置一下
- 注:数据库服务器一定要开启微调模式,其它应用服务器可根据实际情况决定是否开启
- 不过对于ntp4.2.2版本的话,加上-x,重启ntp服务时会同步一次,如果不加-x,重启时不会同步时间,不过重启后也会跳跃同步时间
- 对于4.2.4版本的话,加-x,重启时不会同步时间,不加-x,虽然重启时不会同步时间,但重启后会很快跳跃同步时间
注:600s以下才会微调,而且是以0.5ms/s的速度进行微调,如果差距太大,需要非常长的时间才能微调到正常时间。所以第一次安装完系统要使用ntpdate命令进行同步一次,后面如果服务故障引起差距很大的时候,也最好关闭应用,用ntpdate同步一次。
[root@ ~]# vi /etc/sysconfig/ntpd
#The following item added by Robinson
#Set to 'yes' to sycn hw clock after successful ntpdate
SYNC_HWCLOCK=yes #开启同步更新硬件时间
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid -g" #加-x 参数,开启微调模式
四、NTP服务
# chkconfig ntpd on
重启一下,使配置生效
# service ntpd restart
五、检查ntpd的状态
通常需要一段时间(5-10分钟)才能与上层NTP服务器通信
# ntpq -pn
remote refid st t when poll reach delay offset jitter
===========================================================================
*172.31.1.3 172.31.1.1 9 u 316 512 377 0.335 0.057 0.619
+172.31.1.4 172.31.1.1 9 u 329 512 377 0.462 0.061 0.778
127.127.1.0 .LOCL. 10 l 82h 64 0 0.000 0.000 0.000
六、如果有开防火墙,还需要添加一条策略
iptables -A INPUT -p udp -s 172.31.1.0/24 --dport 123 -j ACCEPT
查询语句:
ntpq -p
ntpstate
ntptime
ntptrace [localhost/remotehost]
ntpdate -d [localhost/remotehost]
ntpdate -q [localhost/remotehost] 常用,查询远程主机状态,stratum值
ntpq -c rv [localhost/remotehost] 能查询出主机信息
ntpdc -c sysinfo [localhost/remotehost] 能查询出主机信息
ntpdc -n -c monlist [localhost/remotehost] 能查询出同步过时间的主机
各种参数详解:
NTP服务的四种模式: 服务器/客户端模式 server [IP or hostname] [prefer]
对等体模式 peer [IP or hostname] [prefer] 如果双方的时钟都已经同步,则以层数小的时钟为准
广播模式 broadcast 192.168.1.255 autokey 广播服务端 broadcastclient 广播客户端
组播模式 broadcast 224.0.1.1 autokey 组播服务端 multicastclient 224.0.1.1 组播客户端
多播(选播) manycastserver 239.255.254.254 manycastclient 239.255.254.254 autokey
# ntpq -pn
remote refid st t when poll reach delay offset jitter
===========================================================================
*172.31.1.3 172.31.1.1 9 u 316 512 377 0.335 0.057 0.619
+172.31.1.4 172.31.1.1 9 u 329 512 377 0.462 0.061 0.778
127.127.1.0 .LOCL. 10 l 82h 64 0 0.000 0.000 0.000
表头 • remote – 用于同步的远程节点或服务器。“LOCAL”表示本机 (当没有远程服务器可用时会出现) • refid – 远程的服务器进行同步的更高一级服务器 • st – 远程节点或服务器的 Stratum(级别,NTP 时间同步是分层的) • t – 类型 (u: unicast(单播) 或 manycast(选播) 客户端, b: broadcast(广播) 或 multicast(多播) 客户端, l: 本地时钟, s: 对称节点(用于备份), A: 选播服务器, B: 广播服务器, M: 多播服务器, 参见“Automatic Server Discovery“) • when – 最后一次同步到现在的时间 (默认单位为秒, “h”表示小时,“d”表示天) • poll – 同步的频率:rfc5905建议在 NTPv4 中这个值的范围在 4 (16秒) 至 17 (36小时) 之间(即2的指数次秒),然而观察发现这个值的实际大小在一个小的多的范围内 :64 (26 )秒 至 1024 (210 )秒 • reach – 一个8位的左移移位寄存器值,用来测试能否和服务器连接,每成功连接一次它的值就会增加,以 8 进制显示 • delay – 从本地到远程节点或服务器通信的往返时间(毫秒) • offset – 主机与远程节点或服务器时间源的时间偏移量,offset 越接近于0,主机和 NTP 服务器的时间越接近(以方均根表示,单位为毫秒) • jitter – 与远程节点同步的时间源的平均偏差(多个时间样本中的 offset 的偏差,单位是毫秒),这个数值的绝对值越小,主机的时间就越精确 字段的统计代码 表中第一个字符(统计代码)是状态标识(参见 Peer Status Word),包含 " “,“x”,”-","#","+","",“o”: • " " – 无状态,表示: • 没有远程通信的主机 • “LOCAL” 即本机 • (未被使用的)高层级服务器 • 远程主机使用的这台机器作为同步服务器 • “x” – 已不再使用 • “-” – 已不再使用 • “#” – 良好的远程节点或服务器但是未被使用 (不在按同步距离排序的前六个节点中,作为备用节点使用) • “+” – 良好的且优先使用的远程节点或服务器(包含在组合算法中) • “” – 当前作为优先主同步对象的远程节点或服务器 • “o” – PPS 节点 (当优先节点是有效时)。实际的系统同步是源于秒脉冲信号(pulse-per-second,PPS),可能通过PPS 时钟驱动或者通过内核接口。 参考 Clock Select Algorithm. refid refid 有下面这些状态值 • 一个IP地址 – 远程节点或服务器的 IP 地址 • .LOCL. – 本机 (当没有远程节点或服务器可用时) • .PPS. – 时间标准中的“Pulse Per Second”(秒脉冲) • .IRIG. – Inter-Range Instrumentation Group 时间码 • .ACTS. – 美国 NIST 标准时间 电话调制器 • .NIST. –美国 NIST 标准时间电话调制器 • .PTB. – 德国 PTB 时间标准电话调制器 • .USNO. – 美国 USNO 标准时间 电话调制器 • .CHU. – CHU (HF, Ottawa, ON, Canada) 标准时间无线电接收器 • .DCFa. – DCF77 (LF, Mainflingen, Germany) 标准时间无线电接收器 • .HBG. – HBG (LF Prangins, Switzerland) 标准时间无线电接收器 • .JJY. – JJY (LF Fukushima, Japan) 标准时间无线电接收器 • .LORC. – LORAN-C station (MF) 标准时间无线电接收器,注: 不再可用 (被 eLORAN 废弃) • .MSF. – MSF (LF, Anthorn, Great Britain) 标准时间无线电接收器 • .TDF. – TDF (MF, Allouis, France)标准时间无线电接收器 • .WWV. – WWV (HF, Ft. Collins, CO, America) 标准时间无线电接收器 • .WWVB. – WWVB (LF, Ft. Collins, CO, America) 标准时间无线电接收器 • .WWVH. – WWVH (HF, Kauai, HI, America) 标准时间无线电接收器 • .GOES. – 美国静止环境观测卫星; • .GPS. – 美国 GPS; • .GAL. – 伽利略定位系统欧洲 GNSS; • .ACST. – 选播服务器 • .AUTH. – 认证错误 • .AUTO. – Autokey (NTP 的一种认证机制)顺序错误 • .BCST. – 广播服务器 • .CRYPT. – Autokey 协议错误 • .DENY. – 服务器拒绝访问; • .INIT. – 关联初始化 • .MCST. – 多播服务器 • .RATE. – (轮询) 速率超出限定 • .TIME. – 关联超时 • .STEP. – 间隔时长改变,偏移量比危险阈值小(1000ms) 比间隔时间 (125ms)大 转载本站文章请注明出处:itbing.cn
配置命令: server address [options …] peer address [options …] broadcast address [options …] manycastclient address [options …] pool address [options …] unpeer [address | associd]
server : 以c/s模式,与远程的服务器或本地参考时钟持续的调整时间 peer : 以symmetric-active模式,与远端的节点同步时间。即同层的节点间同步,可以增加稳定性。 broadcast: 对广播和多播地址,调整 manycastclient: 根据多播组的地址进行调整。 pool : 调整与以DNS名字规定的池的关联。 unpeer : 根据地址或ID,移除以前注册的关联,可以用ntpq在运行时配置。 注: server 与 peer的区别:server是上一级的时间服务器。peer是同级的同步节点。
options说明: autokey :发送和接受经过Autokey机制验证的数据包 burst :当server可达时,以默认发包速率的8倍向服务器发包。 iburst : 当server不可达时,以默认发包速率的8倍向服务器发包。 key :发送和接受经过symmetric key机制验证的数据包. prefer : 设置首选 ttl :为多播和广播数据包设置ttl version :设置version number。1-4,默认值是4 preempt :设置关联为可抢占式的。 noselect :标识server 或peer 不执行selection算法,即不会被选择作为源来同步时间
restrict [IP] mask [netmask_IP] [parameter]
其中 parameter 的參數主要有底下這些: flake: 以0.1的概率丢弃NTP包,测试用。 ignore :拒绝所有的包,包括ntpq和ntpdc的查询包。 kod : 如果设置了limited标识和使用discard命令控制速率,则返回一个Kod(kiss-O’-death)包。 limited : 拒绝服务,如果数据包超过了diacard设置的速率。对ntpq和ntpdc不起作用。 lowpriotrap:对匹配的主机的trap设置低优先级。 mssntp :启动Microsoft的简单ntp协议 nomodify:拒绝ntpq和ntpdc的修改消息。时间同步服务不受影响 noquery : 拒绝ntpq和ntpdc的查询,时间同步服务不受影响 nopeer :拒绝没有认证的消息包,主要针对association相关的包。 noserve :拒绝除ntpq和ntpdc的消息报文。 notrap :拒绝对匹配主机提供Mode 6的控制消息服务。 notrust :拒绝对不经过加密验证的包服务 ntpport :拒绝对源端口是NTP指定端口123的数据包服务 version :拒绝对非当前版本的数据包服务