centos7下配置ntp客户端同步时间服务(包括解遇到ntp无法开机启动的问题)

需求:在CentOS7下配置NTP客户端同步时间服务
简介:
NTP服务是为了时钟同步使用,特别在一些实时性数据库场景中非常重要。
Centos7下默认使用chronyd服务代替过渡ntpd服务,因此经常遇到大部分人还是记住ntpd服务而不去配置chronyd服务,因此经常在centos7下遇到无法使用ntp服务或ntp服务存在一些问题。以下就centos7下配置和使用ntp服务、ntp验证、时区等配置进行讲解。

本篇所有操作和讲解只针对NTP客户端,不涉及ntp-server操作

CentOS7下安装和配置NTP(Centos6、redhat系列亦可以参考,不冲突)

    CentOS6和6之前的版本默认使用ndpd服务做客户端去向ntp-server同步时间。

1、安装ntp和ntpdate两个rpm包。
使用yum install ntp、yum install ntpdate命令执行安装操作(本次省略)
2、配置ntp客户端文件【/etc/ntp.conf】中的server项。如

server 172.29.12.120  perfer      #提供ntp-server的主机地址
server  172.29.120.12 perfer      #提供ntp-server的主机地址

3、启动ntpd服务、并添加至开机启动项。如

systemctl  start  ntpd        #启动ntpd服务
systemctl  start  ntpdate
systemctl enable  ntpd        #将ntpd添加到开机启动项
systemctl enable  ntpdate
systemctl is-enabled ntpd        #查看是否在开机启动项
systemctl is-enabled ntpdate
systemctl list-unit-files | grep ntp     #查看是否在开机启动项
systemctl status ntpd                     #查看ntpd服务的状态

4、验证

 ntpq -p       #查看该主机使用的ntp-server情况和同步延时等信息;
 timedatectl      #查看ntpd服务或chronyd服务是否生效。只有centos7、redhat7、ubuntu14等以上(含)才有该命令;

5、其他配置(或添加时间同步的计划任务)
使用ntpdate命令也可以执行ntp时间同步,不需要ntp客户的ntpd服务。如

ntpdate 172.29.120.12     #向172.29.120.12的ntpserver主机同步本地系统时间。
ntpdate -u  172.29.120.12  ##同上,-u参数是可以在客户端ntpd服务启动时同时执行的命令。

计划任务中的时间同步,同样的效果。也可以和客户端的ntpd服务同时存在。

crontab -l
0 0 * * 0 /usr/sbin/ntpdate -u 172.29.120.12 || /usr/sbin/ntpdate -u 172.29.12.120

例子:
centos7下配置ntp客户端同步时间服务(包括解遇到ntp无法开机启动的问题)

CentOS7下使用NTP遇到的问题

1、在CentOS7下使用NTP时,客户端ntpd服务添加到开机启动项中了,但主机系统启动后ntpd服务还是停止状态(dead),无法正常启动。
解决以上现象有两种方法 :
方法一
1.通过命令 systemctl enable ntpd 设置NTP服务开机自启动。
2.重启虚拟机后查看 服务运行状态 systemctl status ntpd ,发现服务并没有成功启动。
3.查看chrony是否被设置为开机自启动。通过指令 systemctl is-enabled chronyd
或systemctl list-unit-files | grep chrony 查看,发现这个服务已经被设置为开机自启动所以导致NTP服务的自启动失败。

4.所以要把 chrony 的自启动去掉。执行指令 systemctl disable chronyd 。
5.重启虚拟机, 执行 systemctl status ntpd ,问题解决。
systemctl list-unit-files|grep ntpd
systemctl list-unit-files|grep chrony
centos7下配置ntp客户端同步时间服务(包括解遇到ntp无法开机启动的问题)
方法二
需要开机自启动某服务,第一个想到的当然是开机启动自定义脚本
在Centos之前版本只要在 /etc/rc.d/rc.local 文件中加入 启动服务的命令,当虚拟机重启时就会执行该文件中的命令,服务也就启动了。但是但Centos7版本,这个文件的权限被降低了,所以当你打开这个文件时,注释中很友好的提示让你给这个文件赋权,以确保它有可执行权限。chmod +x /etc/rc.d/rc.local 。
所以只要把指令写到这个文件中,就可以在开机时启动服务或者让虚拟机做其它事情。
chmod +x /etc/rc.d/rc.local
echo "systemctl start ntpd" >> !$
centos7下配置ntp客户端同步时间服务(包括解遇到ntp无法开机启动的问题)

2、ntpdate命令执行报错,提示ntpd服务已经存在。

上一篇:[转帖]Linux配置NTP时间同步


下一篇:Linux 多服务器时间同步设置