Centos 下NTP环境的创建

分类:CentOS教程 阅读:39077 次

最近在搭建Openstack以及Ceph的集群,由于集群中都存在多个节点,且节点间需要时间的同步,所以需要使用NTP,又考虑到有些时候网络环境是封闭的,所以需要自己搭建一个NTP的服务器

服务器IP

角色

说明

同步方式

192.168.100.203

NTPD服务

1、负责与外部公共NTPD服务同步标准时间

2、作为内外网络的NTPD服务

NTPD服务平滑同步

192.168.40.xxx

内外NTP客户端

内网设备与192.168.100.203同步时间

NTPD服务平滑同步

NTP时间同步方式选择

NTP同步方式在linux下一般两种:使用ntpdate命令直接同步和使用NTPD服务平滑同步。有什么区别呢,简单说下,免得时间长了,概念又模糊。

现有一台设备,系统时间是13:00 ,真实的当前时间(在空中,也许卫星上,这里假设是在准备同步的上级目标NTP服务器)是: 12:30 。如果我们使用ntpdate同步(ntpdate -u目标NTP服务器IP),操作系统的时间立即更新为12:30,假如,我们的系统有一个定时应用,是在每天12:40运行,那么实际今天这个的任务已经运行过了(当前时间是13:00嘛),现在被ntpdate修改为12:30,那么意味作10分钟后,又会执行一次任务,这就糟糕了,这个任务只能执行一次的嘛!!我想你(其实是我)已经懂了ntpdate时间同步的隐患,当然这个例子有些极端,但的确是有风险的,生产环境我不打算这么干,还是稳妥点好。所以解决该问题的办法就是时间平滑更改,不会让一个时间点在一天内经历两次,这就是NTPD服务方式平滑同步时间,它每次同步时间的偏移量不会太陡,是慢慢来的(问:怎么来,没有细究,只晓得一次一点的同步,完全同步好需要较长时间,所以一般开启NTPD服务同步前先用ntpdate先手动同步一次)。

安装配置

CentOS 6.3系统已经自带了NTPD服务,一般默认是按照了的,如果没有安装,先检查下,然后配置好yum仓库,yum方式安装下就OK,具体如下:

  1. #rpm-qntp

如果没有安装,我们按照下

  1. #yuminstallntp

按上面的安装方式在内网每台服务器上都安装好NTP软件包。

完成后,都需要配置NTP服务为自启动

  1. #chkconfigntpdon
  2. #chkconfig--listntpd

在配置前,先使用ntpdate手动同步下时间,免得本机与外部时间服务器时间差距太大,让ntpd不能正常同步。

  1. #ntpdate-u202.112.10.36
  2. 22Dec16:52:38ntpdate[6400]:adjusttimeserver202.112.10.36offset0.012135se

配置内网NTP-Server(192.168.100.203)

下面主要是配置内网的NPTD服务器(192.168.100.203), NTPD服务配置核心就在/etc/ntp.conf文件,配置好了就OK。网上特别是老外的文章都很简单,我上当了,妈哟,基础环境不一样,我们得中国特色才行。先上配置文件再说,红色部分是我的修改,其他的是默认。

  1. #Formoreinformationaboutthisfile,seethemanpages
  2. #ntp.conf(5),ntp_acc(5),ntp_auth(5),ntp_clock(5),ntp_misc(5),ntp_mon(5).
  3. driftfile/var/lib/ntp/drift
  4. #Permittimesynchronizationwithourtimesource,butdonot
  5. #permitthesourcetoqueryormodifytheserviceonthissystem.
  6. restrictdefaultkodnomodifynotrapnopeernoquery
  7. restrict-6defaultkodnomodifynotrapnopeernoquery
  8. #Permitallaccessovertheloopbackinterface.Thiscould
  9. #betightenedaswell,buttodosowouldeffectsomeof
  10. #theadministrativefunctions.
  11. restrict127.0.0.1
  12. restrict-6::1
  13. #Hostsonlocalnetworkarelessrestricted.
  14. #允许内网其他机器同步时间
  15. restrict192.168.40.0mask255.255.255.0nomodifynotrap
  16. #Usepublicserversfromthepool.ntp.orgproject.
  17. #Pleaseconsiderjoiningthepool(http://www.pool.ntp.org/join.html).
  18. #中国这边最活跃的时间服务器:http://www.pool.ntp.org/zone/cn
  19. server210.72.145.44perfer#中国国家受时中心
  20. server202.112.10.36#1.cn.pool.ntp.org
  21. server59.124.196.83#0.asia.pool.ntp.org
  22. #broadcast192.168.40.255autokey#broadcastserver
  23. #broadcastclient#broadcastclient
  24. #broadcast224.0.1.1autokey#multicastserver
  25. #multicastclient224.0.1.1#multicastclient
  26. #manycastserver239.255.254.254#manycastserver
  27. #manycastclient239.255.254.254autokey#manycastclient
  28. #allowupdatetimebytheupperserver
  29. #允许上层时间服务器主动修改本机时间
  30. restrict210.72.145.44nomodifynotrapnoquery
  31. restrict202.112.10.36nomodifynotrapnoquery
  32. restrict59.124.196.83nomodifynotrapnoquery
  33. #UndisciplinedLocalClock.Thisisafakedriverintendedforbackup
  34. #andwhennooutsidesourceofsynchronizedtimeisavailable.
  35. #外部时间服务器不可用时,以本地时间作为时间服务
  36. server127.127.1.0#localclock
  37. fudge127.127.1.0stratum10
  38. #Enablepublickeycryptography.
  39. #crypto
  40. includefile/etc/ntp/crypto/pw
  41. #Keyfilecontainingthekeysandkeyidentifiersusedwhenoperating
  42. #withsymmetrickeycryptography.
  43. keys/etc/ntp/keys
  44. #Specifythekeyidentifierswhicharetrusted.
  45. #trustedkey4842
  46. #Specifythekeyidentifiertousewiththentpdcutility.
  47. #requestkey8
  48. #Specifythekeyidentifiertousewiththentpqutility.
  49. #controlkey8
  50. #Enablewritingofstatisticsrecords.
  51. #statisticsclockstatscryptostatsloopstatspeerstats

配置参数和命令简单说明请参考:http://linux.vbird.org/linux_server/0440ntp.php#server_ntp.conf

配置文件修改完成,保存退出,启动服务。

  1. #servicentpdstart

启动后,一般需要5-10分钟左右的时候才能与外部时间服务器开始同步时间。可以通过命令查询NTPD服务情况。

查看服务连接和监听

  1. #netstat-tlunp|grepntp
  2. udp00192.168.100.203:1230.0.0.0:*23103/ntpd
  3. udp00127.0.0.1:1230.0.0.0:*23103/ntpd
  4. udp000.0.0.0:1230.0.0.0:*23103/ntpd
  5. udp00fe80::6cae:8bff:fe3d:f65:123:::*23103/ntpd
  6. udp00fe80::6eae:8bff:fe3d:f65:123:::*23103/ntpd
  7. udp00::1:123:::*23103/ntpd
  8. udp00:::123:::*23103/ntpd

ntpq -p查看网络中的NTP服务器,同时显示客户端和每个服务器的关系

  1. #ntpq-p
  2. #ntpq-p
  3. remoterefidsttwhenpollreachdelayoffsetjitter
  4. ==============================================================================
  5. *202.112.10.36202.112.10.602u277128314201.5539.19317.068
  6. +59.124.196.83129.6.15.282u8812837771.153-25.11114.004
  7. LOCAL(0).LOCL.10l15643770.0000.0000.000

位置

标志

含义

符号

*

响应的NTP服务器和最精确的服务器

+

响应这个查询请求的NTP服务器

blank(空格)

没有响应的NTP服务器

标题

remote

响应这个请求的NTP服务器的名称

refid

NTP服务器使用的更高一级服务器的名称

st

正在响应请求的NTP服务器的级别

when

上一次成功请求之后到现在的秒数

poll

本地和远程服务器多少时间进行一次同步,单位秒,在一开始运行NTP的时候这个poll值会比较小,服务器同步的频率大,可以尽快调整到正确的时间范围,之后poll值会逐渐增大,同步的频率也就会相应减小

reach

用来测试能否和服务器连接,是一个八进制值,每成功连接一次它的值就会增加

delay

从本地机发送同步要求到ntp服务器的往返时间

offset

主机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒,offset越接近于0,主机和ntp服务器的时间越接近

jitter

统计了在特定个连续的连接数里offset的分布情况。简单地说这个数值的绝对值越小,主机的时间就越精确

ntpstat命令查看时间同步状态,这个一般需要5-10分钟后才能成功连接和同步。所以,服务器启动后需要稍等下。

刚启动的时候,一般是:

  1. #ntpstat
  2. unsynchronised
  3. timeserverre-starting
  4. pollingserverevery64s

连接并同步后:

  1. synchronisedtoNTPserver(202.112.10.36)atstratum3
  2. timecorrecttowithin275ms
  3. pollingserverevery256s

OK,内网的NTPD服务已经配置完成,如果所有正常后,开始配置内网的其他设备与这台服务器作为时间同步服务。

配置内网NTP-Clients

内网其他设备作为NTP的客户端配置,相对就比较简单,而且所有设备的配置都相同。

首先需要安装NTPD服务,然后配置为自启动(与NTP-Server完全一样)。然后找其中一台配置/etc/ntp.conf文件,配置完成验证通过后,拷贝到其他客户端机器,直接使用即可。

  1. #yuminstallntp
  2. #chkconfigntpon
  3. #vim/etc/ntp.conf
  1. driftfile/var/lib/ntp/drift
  2. restrict127.0.0.1
  3. restrict-6::1
  4. #配置时间服务器为本地的时间服务器
  5. server192.168.100.203
  6. restrict192.168.100.203nomodifynotrapnoquery
  7. server127.127.1.0#localclock
  8. fudge127.127.1.0stratum10
  9. includefile/etc/ntp/crypto/pw
  10. keys/etc/ntp/keys

保存退出,请求服务器前,请先使用ntpdate手动同步下时间

  1. #ntpdate-u192.168.0.135
  2. 22Dec17:09:57ntpdate[6439]:adjusttimeserver192.168.100.203offset0.004882sec


这里有可能出现同步失败,一般情况下原因都是本地的NTPD服务器还没有正常启动起来,一般需要几分钟时间后才能开始同步。

错误判断请参考后面的错误处理。

  1. #servicentpdstart

启动后,查看同步情况

  1. #ntpq-p
  2. #ntpstat
!若要每日进行时间校正,可以写入 cron [root@test root]# vi /etc/crontab
# 加入这一行: 10 5 * * * root /usr/sbin/ntpdate192.168.100.203; /sbin/hwclock -w
使用 cron 之后,每天 5:10 Linux 系统就会自动的进行网络校时

错误问题处理

用于收集安装,配置和应用中出现的问题

错误1:ntpdate -u ip -< no server suitable for synchronization found

判断:在ntp客户端用ntpdate–d serverIP查看,发现有“Server dropped: strata too high”的错误,并且显示“stratum 16”。而正常情况下stratum这个值得范围是“0~15”。

原因:NTP server还没有和其自身或者它的server同步上。在ntp server上重新启动ntp服务后,ntp server自身或者与其server的同步的需要一个时间段,这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令时会产生no server suitable for synchronization found的错误。

处理:等待几分钟后,重试一般解决。

也可以使用命令ntpq -p查看情况