首页 > 代码库 > Centos 下NTP环境的创建

Centos 下NTP环境的创建

最近在搭建 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 ,具体如下:

#rpm -q ntp

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

# yum install ntp

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

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

# chkconfig ntpd on# chkconfig --list ntpd

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

# ntpdate -u 202.112.10.3622 Dec 16:52:38 ntpdate[6400]: adjust time server 202.112.10.36 offset 0.012135 se

配置内网 NTP-Server(192.168.100.203)

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

# For more information about this file, see the man pages# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).driftfile /var/lib/ntp/drift# Permit time synchronization with our time source, but do not# permit the source to query or modify the service on this system.restrict default kod nomodify notrap nopeer noqueryrestrict -6 default kod nomodify notrap nopeer noquery# Permit all access over the loopback interface.  This could# be tightened as well, but to do so would effect some of# the administrative functions.restrict 127.0.0.1restrict -6 ::1# Hosts on local network are less restricted.# 允许内网其他机器同步时间restrict 192.168.40.0 mask 255.255.255.0 nomodify notrap# Use public servers from the pool.ntp.org project.# Please consider joining the pool (http://www.pool.ntp.org/join.html).# 中国这边最活跃的时间服务器 : http://www.pool.ntp.org/zone/cnserver 210.72.145.44 perfer   # 中国国家受时中心server 202.112.10.36             # 1.cn.pool.ntp.orgserver 59.124.196.83             # 0.asia.pool.ntp.org#broadcast 192.168.40.255 autokey        # broadcast server#broadcastclient                        # broadcast client#broadcast 224.0.1.1 autokey            # multicast server#multicastclient 224.0.1.1              # multicast client#manycastserver 239.255.254.254         # manycast server#manycastclient 239.255.254.254 autokey # manycast client# allow update time by the upper server # 允许上层时间服务器主动修改本机时间restrict 210.72.145.44 nomodify notrap noqueryrestrict 202.112.10.36 nomodify notrap noqueryrestrict 59.124.196.83 nomodify notrap noquery# Undisciplined Local Clock. This is a fake driver intended for backup# and when no outside source of synchronized time is available. # 外部时间服务器不可用时,以本地时间作为时间服务server  127.127.1.0     # local clockfudge   127.127.1.0 stratum 10# Enable public key cryptography.#cryptoincludefile /etc/ntp/crypto/pw# Key file containing the keys and key identifiers used when operating# with symmetric key cryptography. keys /etc/ntp/keys# Specify the key identifiers which are trusted.#trustedkey 4 8 42# Specify the key identifier to use with the ntpdc utility.#requestkey 8# Specify the key identifier to use with the ntpq utility.#controlkey 8# Enable writing of statistics records.#statistics clockstats cryptostats loopstats peerstats

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

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

# service ntpd start

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

查看服务连接和监听

# netstat -tlunp | grep ntp      udp        0      0 192.168.100.203:123           0.0.0.0:*                               23103/ntpd          udp        0      0 127.0.0.1:123               0.0.0.0:*                               23103/ntpd          udp        0      0 0.0.0.0:123                 0.0.0.0:*                               23103/ntpd          udp        0      0 fe80::6cae:8bff:fe3d:f65:123 :::*                                    23103/ntpd          udp        0      0 fe80::6eae:8bff:fe3d:f65:123 :::*                                    23103/ntpd          udp        0      0 ::1:123                     :::*                                    23103/ntpd          udp        0      0 :::123                      :::*                                    23103/ntpd

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

# ntpq -p# ntpq -p  remote		 refid	 st t when poll reach   delay   offset  jitter==============================================================================*202.112.10.36   202.112.10.60    2 u  277  128  314  201.553    9.193  17.068+59.124.196.83   129.6.15.28	 2 u   88  128  377   71.153  -25.111  14.004 LOCAL(0)	   .LOCL.		10 l   15   64  377    0.000    0.000   0.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 分钟后才能成功连接和同步 。所以,服务器启动后需要稍等下。

刚启动的时候,一般是:

# ntpstat unsynchronised  time server re-starting   polling server every 64 s

连接并同步后 :

synchronised to NTP server (202.112.10.36) at stratum 3    time correct to within 275 ms   polling server every 256 s

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

配置内网 NTP-Clients

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

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

# yum install ntp# chkconfig ntp on# vim /etc/ntp.conf
driftfile /var/lib/ntp/driftrestrict 127.0.0.1restrict -6 ::1# 配置时间服务器为本地的时间服务器server 192.168.100.203restrict 192.168.100.203 nomodify notrap noqueryserver  127.127.1.0     # local clockfudge   127.127.1.0 stratum 10includefile /etc/ntp/crypto/pwkeys /etc/ntp/keys

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

# ntpdate -u 192.168.0.13522 Dec 17:09:57 ntpdate[6439]: adjust time server 192.168.100.203 offset 0.004882 sec

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

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

# service ntpd start

启动后,查看同步情况

# ntpq -p# ntpstat

错误问题处理

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

错误 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 查看情况

  • 相关文章推荐:
  • linux下ntpdate同步网络日期与时间
  • 一键安装与配置NTP server的脚本
  • 本文来自:爱好Linux技术网
  • 本文链接:http://www.ahlinux.com/centos/9128.html
 

Centos 下NTP环境的创建