《Linux centos NTP的配置方法》—那些你应该知道的知识(五)
写在前面:
在NTP改造的过程中,会涉及到NTP客户端设备的NTP配置的修改。不同的操作系统有不同的配置方法,在实际NTP取时的行为过程中也有些许差异,本文将重点阐述Linux centos 操作系统NTP服务的配置方法、不同配置间的差异以及其他值得我们注意的相关技术细节。
知识准备:
在NTP服务端
首先,我们知道专业的NTP设备,通过卫星同步的方式获取准确的时间。目前NTP设备可以选择同步北斗或者GPS卫星的时间,两个时间没有差异。而数据中心内的其他设备,在设备数量不大,且网络质量较好的情况下,可以直接向专业的NTP设备取时,打造扁平化的NTP架构,减少NTP层级,确保我们设备时间的准确性。
在NTP设备部署时,要注意设备天线部署的位置、天线的防雷、馈线的长度等等,这些一般由专业的厂家直接完成,博主不在这里阐述。
NTP设备获取到的时间为UTC时间,所以NTP客户端到NTP设备上取得的也是UTC时间。有关时区的设置需要在NTP客户端本地独立完成。中国所处的时区比UTC时间快8小时,也就是UTC+8,时区为CST。
在NTP客户端
针对本文重点要讲的Linux centos操作系统,要通过NTP获取时间一共有两种方式。分别是ntpdate和ntpd
ntpdate—采用这种方式,操作系统会直接发起向NTP设备的时间同步请求,操作系统的时间会直接调整到从NTP服务器获取到的准确时间。获取准确时间后,操作系统将依赖操作系统本身的运算机制计算本地时间,而不会再去进行同步。所以,有些操作系统会配合crontab,定时进行时间的同步工作。
ntpd—采用这种方式,操作系统会去尝试与NTP设备进行时间同步,当发现两者的时间偏差较大的时候,会通过多次同步过程来完成同步,而不是直接调整到位。这个过程可能会持续10几分钟,甚至更多的时间,这取决于时间偏差有多少,直到操作系统时间准确。之后操作系统会以一定的间隔向NTP设备同步时间,保持操作系统时间的同步。
我们知道有些程序—尤其是数据库在运行时依赖时间的准确性,而采用ntpdate的方式,直接将操作系统时间同步,可能会导致操作系统时间发生跃变,因此我们选择采用ntpd的方式,来同步时间。
在NTP客户端层面,除了操作系统时间以外,还有硬件时间的概念。硬件时间一般是硬件设备在出厂时设备制造地在硬件底层便设置好的,我们可以设置硬件时间与操作系统时间进行同步,确保硬件时间是我们当地的时间。
具体怎么做:
手动设置的方法:
首先,我们可以通过date命令查看当前时间
[code][root@ansible ~]# date Mon Oct 1 00:00:01 CST 2018
这里,我们可以看到当前的时间,时区为CST时间,我们可以通过timedatectl查看当前的时区
[code][root@ansible ~]# timedatectl Local time: Wed 2018-10-24 11:19:42 CST Universal time: Wed 2018-10-24 03:19:42 UTC RTC time: Wed 2018-10-24 03:19:43 Timezone: Asia/Shanghai (CST, +0800) NTP enabled: yes NTP synchronized: yes RTC in local TZ: no DST active: n/a
可以通过hwclock查看当前硬件时间
[code][root@ansible ~]# hwclock Wed 24 Oct 2018 10:16:33 AM CST -0.864798 seconds
通过hwclock -w 将操作系统时间同步到硬件时间
[code][root@ansible ~]# hwclock -w [root@ansible ~]# hwclock Mon 01 Oct 2018 12:01:25 AM CST -0.956970 seconds
除了通过NTP同步时间以外,我们也可以通过date-s手动设置时间
[code][root@ansible ~]# date -s "20181001 00:00:00" Mon Oct 1 00:00:00 CST 2018
手动设置时区
[code]timedatectl set-timezone Asia/Shanghai
采用ntpd的方式进行同步:
首先要安装ntp服务,可以与互联网通信的话,可以通过yum进行安装
[code]yum -y install ntp
查看当前ntp状态
[code][root@ansible ~]# ntpstat timeout
NTP设置主要涉及到两个配置文件,分别为在/etc/ntp.conf和/etc/sysconfig/ntpd
在/etc/ntp.conf设置NTP服务器
[code][root@ansible ~]# vi /etc/ntp.conf server cn.pool.ntp.org prefer
上述用到的cn.pool.ntp.org为互联网上的一个提供ntp服务的网址
重启NTPD服务
[code][root@ansible ~]# service ntpd restart Redirecting to /bin/systemctl restart ntpd.service
查看当前NTP状态
[code][root@ansible ~]# ntpstat unsynchronised time server re-starting polling server every 8 s
查看NTP同步情况
[code][root@ansible ~]# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== 192.168.126.98 .INIT. 16 u - 64 0 0.000 0.000 0.000 dns1.synet.edu. 202.118.1.46 2 u 27 64 1 44.996 2024174 0.000
这里有几个重要参数,when代表了多少秒前进行了时间的同步;poll代表了时间同步的间隔;delay代表从客户端到NTP服务端之间的延时;offset代表了当前时间的差距。
可见当前操作系统时间与NTP服务器有较大的差距
过了一会
[code][root@ansible ~]# ntpstat unsynchronised polling server every 64 s [root@ansible ~]# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== 192.168.126.98 .STEP. 16 u - 64 0 0.000 0.000 0.000 203.107.6.88 100.107.25.114 2 u 45 64 1 24.507 6.837 0.000
等待了十几分钟以后
[code][root@ansible ~]# ntpstat synchronised to NTP server (203.107.6.88) at stratum 3 time correct to within 43 ms polling server every 64 s [root@ansible ~]# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== 192.168.126.98 .STEP. 16 u - 512 0 0.000 0.000 0.000 *203.107.6.88 100.107.25.114 2 u 24 64 377 24.974 17.522 2.376
过了一会,同步成功
[code][root@ansible ~]# ntpstat synchronised to NTP server (203.107.6.88) at stratum 3 time correct to within 42 ms polling server every 128 s [root@ansible ~]# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== 192.168.126.98 .STEP. 16 u - 1024 0 0.000 0.000 0.000 *203.107.6.88 10.165.84.13 2 u 124 128 377 20.336 -5.768 3.414
其他ntpd参数设置
-g参数
查看当前ntpd的配置,系统默认使用了-g参数
[code][root@ansible ~]# cat /etc/sysconfig/ntpd # Command line options for ntpd OPTIONS="-g"
这里解释一下-g参数,通过增加-g 可忽略本地与远端NTP服务器时钟相差大于1000s时,ntpd停止工作的问题,如果不设置-g参数,当偏差大于1000s时,ntp服务会停止,测试过程如下:
在这里我们尝试不使用 无 -g参数,查看使用效果
[code][root@ansible ~]# cat /etc/sysconfig/ntpd # Command line options for ntpd # OPTIONS="-g"
重启ntpd服务
[code][root@ansible ~]# service ntpd restart Redirecting to /bin/systemctl restart ntpd.service
查看当前ntp状态
[code][root@ansible ~]# ntpstat unsynchronised time server re-starting polling server every 8 s [root@ansible ~]# ^C [root@ansible ~]# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== 192.168.126.98 .INIT. 16 u - 64 0 0.000 0.000 0.000 dns1.synet.edu. 202.118.1.46 2 u 27 64 1 44.996 2024174 0.000
过一会在看
[code][root@ansible ~]# ntpstat Unable to talk to NTP daemon. Is it running? [root@ansible ~]# ntpq -p ntpq: read: Connection refused
可见NTP服务停止。
-x参数
设置-x参数 操作系统在进行NTP同步时只做微调,当偏差大于600s时步进,但也不是一次到位的。
不使用-x参数 则小于128ms时微调,大于128ms步进,同样,也不是一步到位的。
centos系统默认是不带-x参数的,配置方法如下:
[code][root@linux_tcp_2 ~]# cat /etc/sysconfig/ntpd # Command line options for ntpd OPTIONS="-g -x"
-x的参数带来的差异不好模拟,没有做相关实验。
SYNC_HWCLOCK参数
可用该参数保持硬件时间与操作系统时间的自动同步,配制方法如下:
[code][root@linux_tcp_2 ~]# cat /etc/sysconfig/ntpd # Command line options for ntpd OPTIONS="-g" SYNC_HWCLOCK=yes
该参数设置带来的差异,在虚拟机环境没有模拟出来。
ntpdate的使用
我们也可以通过ntpdate的方式,手动进行时间的同步,在前文已经讲到,使用这种方式同步时间,操作系统的时间会一次到位,但可能会影响应用程序的运行,需要谨慎操作,使用时需要重启NTP服务,使用效果如下:
[code][root@ansible ~]# date -s "20181001 00:00:00" Mon Oct 1 00:00:00 CST 2018 [root@ansible ~]# [root@ansible ~]# [root@ansible ~]# date Mon Oct 1 00:00:01 CST 2018 [root@ansible ~]# ntpdate cn.pool.ntp.org 24 Oct 13:05:00 ntpdate[3059]: step time server 34.198.99.183 offset 2034288.744837 sec [root@ansible ~]# date Wed Oct 24 13:05:04 CST 2018
可见,操作系统时间直接同步到了准确的时间
总结
至此,我将目前所掌握的NTP配制方法和相关参数带来的差异在前文中进行了讲述,并做了相关的实验。除了配制方法以外,我们应该能够熟练地使用ntpstat命令和ntpq -p命令,查看当前ntp同步的状态。希望以上内容能够对大家有所帮助。除了上文讲到的参数以外,在操作系统中,应该还有许多其他NTP参数可以进行设置,以后工作中有需要再去研究吧~
阅读更多
- centos 5.5 vnc server配置方法_Linux_vnc viewer
- CentOS(Linux)下的apache服务器配置与管理方法分享
- Linux/CentOS配置:使用yum update更新时不升级内核的方法
- 关于linux Centos 7一个网卡配置多个IP的方法
- 【Linux Is Not Unix】虚拟机下CentOS配置ip三种方法(1)-桥接模式(bridge)
- linux(centos)中的cron计划任务配置方法
- linux 系统基础知识 - 配置ntp服务
- CentOS 7下配置ntp服务的方法教程
- Linux开发者都应该知道的知识要点~
- Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置的详细方法
- Linux centos系统的IP设置配置方法
- 每个Linux开发者都应该知道的一些知识
- 【Linux Is Not Unix】虚拟机下CentOS配置ip三种方法(1)-NAT模式
- CentOS Linux防火墙配置及关闭方法
- (Linux)Centos7网络配置方法
- CentOS(Linux)下的apache服务器配置与管理方法分享
- 【Linux Is Not Unix 】虚拟机下CentOS配置ip三种方法的区别
- linux(centos)中的cron计划任务配置方法[详细]
- 关于linux Centos 7一个网卡配置多个IP的方法