centos ntp服务设置 - freshman

时间:2024-03-10 18:44:13

centos ntp服务设置

摘自:http://www.blogjava.net/spray/archive/2008/07/10/213964.html

        http://blog.sina.com.cn/s/blog_6243051e0100q8ee.html 

Network Time Protocol (NTP) 也就是linux上的时间校准程序,基本的原理就是本地一台服务器连接远方的公用时间服务器,然后对本地这台服务器进行时间校正,然后本地的这台服务器再当做上层的服务器,然后被集群里的其他机器连接,进行时间校准。

1.为集群中每个节点安装ntp服务,关键是要关闭本地的firewall服务:

 centos下有关firewall的命令为 :

 systemctl start firewalld.service#启动firewall
 systemctl stop firewalld.service#停止firewall
 systemctl disable firewalld.service#禁止firewall开机启动

 systemctl命令的基本操作格式是:

 systemctl   动作   服务名.service

 动作有:start,stop,restart,status,enable,disable,is-enabled

2.对本地ntp主服务服务器进行设置,vi /etc/ntp.conf

 a. 在ntp.conf中设置作为校正对象的远端标准服务, 也就是上级时间服务器的设定 

   由于我们配置的NTP 服务器需要网络上面时间比较准确的NTP服务器来更新自己的时间,所以在我们的 NTP 服务器上面要配置一部上级时间服务器来进行校准!
  用server这个参数设定上级时间服务器,语法为: 
  server  IP地址或域名 [prefer] 
  IP地址或域名就是我们指定的上级时间服务器,如果 Server 参数最后加上 prefer,表示我们的 NTP 服务器主要以该部主机时间进行校准。

  b. 在ntp.conf 中设置要连接的与主服务器进行校正的client 的一些特性,设定主要以 restrict 这个参数来设定,主要的语法为: 
  restrict IP地址 mask 子网掩码 参数 
  其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP 
  参数有以下几个: 
  ignore :关闭所有的 NTP 联机服务 
  nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。 
  notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网 
  noquery :不提供客户端的时间查询 
  注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制!

  设定完default之后也可以再对单独的ip地址进行设定

 解决NTP服务器校准时间时的传送延迟 
使用driftfile参数设置:
driftfile 文件名
在与上级时间服务器联系时所花费的时间,记录在driftfile参数后面的文件内。
注意:  driftfile 后面接的文件需要使用完整的路径文件名,不能是链接文件,并且文件的权限需要设定成 ntpd守护进程可以写入。

3.client 端设置ntp服务

  类似于本地server段对于远端校时服务器的设置

4.服务端客户端启动的方式:service ntpd start

完整配置过程:

1.ntp服务器

 修改/etc/ntp.conf,注释掉默认的四个server,添加三行配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
vim /etc/ntp.conf
 
###comment following lines:
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
 
###add following lines:
server 127.127.1.0 minpoll 4
fudge 127.127.1.0 stratum 0
restrict 192.168.56.0 mask 255.255.0.0 nomodify notrap #这一行需要根据client的IP范围设置。

修改/etc/ntp/step-tickers文件如下:

1
2
3
4
# List of NTP servers used by the ntpdate service.
 
# 0.centos.pool.ntp.org
127.127.1.0

重启ntp服务,并查看server端是否运行正常,正常的标准就是ntpq -p指令的最下面一行是*:

1
2
3
4
5
6
7
[root@ceph-admin ~]# systemctl enable ntpd
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
[root@ceph-admin ~]# systemctl restart ntpd
[root@ceph-admin ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*LOCAL(0) .LOCL. 0 l - 16 1 0.000 0.000 0.000

至此,NTP server端已经配置完毕,下面开始配置client端。

2.在client-1/2/3三个节点上分别:
修改/etc/ntp.conf,注释掉四行server,添加一行server指向ceph-admin:

1
2
3
4
5
6
7
8
vim /etc/ntp.conf
 
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
 
server 192.168.56.200

重启ntp服务并观察client是否正确连接到server端,同样正确连接的标准是ntpq -p的最下面一行以*号开头:

1
2
3
4
5
6
7
[root@ceph-1 ~]# systemctl enable ntpd
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
[root@ceph-1 ~]# systemctl restart ntpd
[root@ceph-1 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*ceph-admin .LOCL. 1 u 1 64 1 0.329 0.023 0.000

这个过程不会持续太久,实际生产最久5min内也会达到*状态,下图给了一个未能正确连接的输出:

1
2
3
4
[root@ceph-1 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
ceph-admin .INIT. 16 u - 64 0 0.000 0.000 0.000

可以观察到ceph-admin前面是没有*的,一定要确定所有server和client端的NTP都正确连接才能继续 ! ! !

ntpd -p 各个字段含义

摘自:http://blog.csdn.net/yelang_110/article/details/38292895

位置 标志 含义
符号 * 响应的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的分布情况。简单地说这个数值的绝对值越小,主机的时间就越精确

5.排错

 在ntp客户端先停止运行ntp服务,运行ntpdate \'serverIP\'(替换为服务器ip)进行排错

 

错误1.Server dropped: Strata too high

在ntp客户端运行ntpdate \'serverIP\',出现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.conf中定义的server都不可用时,将使用local时间作为ntp服务提供给ntp客户端。

server 127.127.1.0
fudge 127.127.1.0 stratum 8


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

那么如何知道何时ntp server完成了和自身同步的过程呢?

在ntp server上使用命令:

# watch ntpq -p

出现画面:

Every 2.0s: ntpq -p Thu Jul 10 02:28:32 2008

remote refid st t when poll reach delay offset jitter

==============================================================================

192.168.30.22 LOCAL(0) 8 u 22 64 1 2.113 179133. 0.001

LOCAL(0) LOCAL(0) 10 l 21 64 1 0.000 0.000 0.001

注意LOCAL的这个就是与自身同步的ntp server。

注意reach这个值,在启动ntp server服务后,这个值就从0开始不断增加,当增加到17的时候,从0到17是5次的变更,每一次是poll的值的秒数,是64秒*5=320秒的时间。

如果之后从ntp客户端同步ntp server还失败的话,用ntpdate –d来查询详细错误信息,再做判断。

错误2.Server dropped: no data

从客户端执行netdate –d时有错误信息如下:

transmit(192.168.30.22)
transmit(192.168.30.22)

transmit(192.168.30.22)

transmit(192.168.30.22)

transmit(192.168.30.22)

192.168.30.22: Server dropped: no data

server 192.168.30.22, port 123

.....
28 Jul 17:42:24 ntpdate[14148]: no server suitable for synchronization found
出现这个问题的原因可能有2:

a。检查ntp的版本,如果你使用的是ntp4.2(包括4.2)之后的版本,在restrict的定义中使用了notrust的话,会导致以上错误。

使用以下命令检查ntp的版本:

# ntpq -c version

下面是来自ntp官方网站的说明:
The behavior of notrust changed between versions 4.1 and 4.2.

In 4.1 (and earlier) notrust meant "Don\'t trust this host/subnet for time".

In 4.2 (and later) notrust means "Ignore all NTP packets that are not cryptographically authenticated." This forces remote time servers to authenticate themselves to your (client) ntpd

解决:

把notrust去掉。


b。检查ntp server的防火墙。可能是server的防火墙屏蔽了upd 123端口。

可以用命令

#systemctl stop firewalld.service#停止firewall


来关掉firewall服务后再尝试从ntp客户端的同步,如果成功,证明是防火墙的问题,需要更改firewall的设置。