概述

linux服务器在提供服务时,要和其他机器进行请求的交互,实际生产环境中,可能因为时间不同步,导致了服务异常。

下面介绍下怎么部署NTP服务来解决这个问题。

ps:强烈吐槽下头条这个新排版功能,只要图片分辨率比较低然后点添加的时候直接白屏,也无法回退,这个很明显的bug居然没测出来,导致我重新写了三次...
一、NTP服务概述

1、原理

NTP(Network TimeProtocol,网络时间协议)是用来使计算机时间同步的一种协议。它可以使计算机对其服务器或时钟源做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),切可介由加密确认的方式来防止恶意的协议攻击。

模式:C/S模式

2、使用的端口

默认NTP服务端口:UDP/123

3、ntp和ntpdate区别

1)两个服务都是centos自带的(centos7中不自带ntp)。ntp的安装包名是ntp;ntpdate的安装包是ntpdate。他们并非由一个安装包提供。

2)ntp守护进程为ntpd,配置文件是/etc/ntp.conf

3)ntpdate用于客户端的时间矫正,非NTP服务器可以不启动NTP。


二、安装部署

1、IP规划

ntp服务端配置了还是超时(基于centos7系统部署NTP服务及配置时间定时同步)(1)


2、环境准备

以下基于centos7.3

2.1、关闭SELINUX和防火墙

systemctl stop firewalld systemctl disable firewalld sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0

2.2、配置yum

# cat /etc/yum.repos.d/t.repo [InstallMedia] name=Centos 7.3 baseurl=file:///media/cdrom/ enabled=1 gpgcheck=0 # mount -o loop -t iso9660 /root/CentOS-7-x86_64-Everything-1611.iso /media/cdrom/ # yum clean all && yum makecache

2.3、EDT 和 CST区别和设置

要检查各个服务器时间格式,EDT或者是CST,在中国我们将服务器的时间格式调为CST

EDT:指美国东部夏令时间,波士顿、纽约市、华盛顿哥伦比亚特区,都在这个时区内,跟北京时间有12小时的时差,晚12小时。

CST:可以指下面两种:

1). 美国中部标准时间(西六区,-6:00),中国是东八区( 8:00),北京时间比美国中部标准时间早14个小时。3:45 PMCST是北京时间凌晨1:45。

2). 中澳大利亚标准时间( 10:30),中国是东八区( 8:00),北京时间比中澳大利亚标准时间晚2个半小时。3:45 PMCST是北京时间下午上午5:45。

将系统的时间格式调整为CST的命令如下两条:

# mv /etc/localtime /etc/localtime.bak # ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime


3、搭建NTP服务端

3.1、部署ntp服务

#确定是否已经安装NTP包,客户端只安装ntpdate安装包 rpm -qa | grep ntp #用yum源安装 yum -y install ntp /*yum安装NTP服务*/

ntp服务端配置了还是超时(基于centos7系统部署NTP服务及配置时间定时同步)(2)

3.2、服务端修改配置

# vim /etc/ntp.conf ==================================================================================== #设置默认策略为拒绝所有访问方式的请求 restrict default ignore #允许哪些机器同步 restrict 127.0.0.1 restrict -6 ::1 #允许局域网内机器同步时间,nomodify拒绝让他们修改服务器上的时间 restrict 172.xx.xx.xx mask 255.255.255.0 nomodify notrap #将该服务器的本地时间作为ntp server的时间,如果其他客户端同步,将同步这台服务器的时间 server 127.127.1.0 #stratum这行是时间服务器的层次。设为0则为顶级,如果要向别的NTP服务器更新时间,请不要把它设为0 fudge 127.127.1.0 stratum 2 #每一个system clock的频率都有小小的误差,这个就是为什么机器运行一段时间后会不精确. NTP会自动来监测我们时钟的误差值并予以调整. #但问题是这是一个冗长的过程,所以它会把记录下来的误差先写入driftfile.这样即使你重新开机以后之前的计算结果也就不会丢失了 driftfile /var/lib/ntp/drift # Enable public key cryptography. includefile /etc/ntp/crypto/pw keys /etc/ntp/keys # Disable the monitoring facility to prevent amplification attacks using ntpdc disable monitor ====================================================================================

说明:

关于restrict格式如下:

其中parameter如下:

  1. ignore:忽略所有类型的ntp连接
  2. nomodify:不允许客户端修改服务器的时间参数,但是允许客户端透过这部主机进行时间校验。
  3. noquery: 不允许客户端进行时间校验。
  4. notrap:不提供trap时间登录
  5. notrust:拒绝没有认证的客户端

ntp服务端配置了还是超时(基于centos7系统部署NTP服务及配置时间定时同步)(3)

3.3、启动ntp服务

systemctl restart ntpd

3.4、验证

现在已经启动了NTP的服务,但是系统时间到底和服务器同步了没有呢? 为此NTP提供了一个很好的查看工具: ntpq (NTP query)

# watch ntpq -p

建议大家在打开NTP服务器后就可以运行ntpq命令来监测服务器的运行.这里可以使用watch命令来查看一段时间内服务器各项数值的变化。

ntp服务端配置了还是超时(基于centos7系统部署NTP服务及配置时间定时同步)(4)

这里st为 配置文件设置的stratum,范围是0--15,如果为16就是错误的

说明:


三、配置时间同步

客户端需要停用ntp服务,否则无法运行ntpdata 服务器地址这个命令 来同步时间,同步的时候会提示ntp被使用中。

1、停用ntp服务

systemctl stop ntpd

2、手动同步ntp服务器时间

ntpdate 172.xx.xx.xx

3、定期同步

#每天8点执行同步命令 * 8 * * * /usr/sbin/ntpdate 172.xx.xx.xx;/sbin/hwclock -w


觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

ntp服务端配置了还是超时(基于centos7系统部署NTP服务及配置时间定时同步)(5)

,