linux服务器应用NTP配置时间同步
linux服务器应用NTP配置时间同步
• 为什么建议使用ntpd而不是ntpdate?
原因很简单,ntpd是步进式的逐渐调整时间,而ntpdate是断点更新,比如现在服务器时间是9.18分,而标准时间是9.28分,ntpd会在一段时间内逐渐的把时间校准到与标准时间相同,而ntpdate会立刻把时间调整到9.28分,如果你往数据库内写入内容或在其他对时间有严格要求的生产环境下,产生的后果会是很严重的。(注:当本地时间与标准时间相差30分钟以上时ntpd会停止工作)
NTP通信协议原理
- 首先主机启动NTP。
- 客户端会向NTP服务器发送调整时间的message。
- 然后NTP server会送出当前的标准时间给client
- client接受来自server的时间后,会根据这个信息来调整自己的时间。这样就实现了网络对时。
NTP这个deamon采用了UDP 123端口。当我们要利用Tim server来进行实践的同步更新时,就需要使用NTP软件提供的ntpdate来连接端口123
相关的命令和配置文件
• /etc/ntp.conf: linux各版本虽然目录不同,但文件名相同。可以用which ntp.conf 或者locate ntp.conf来查找。这是NTP唯一的一个设置文件。
• /usr/share/zoneinfo/: 这个里面规定了这个主要时区的时间设置文件。
• /etc/sysconfig/clock:这个文件是linux的主要时区设置文件,每次开机后linux会自动读取这个文件来设置系统所默认的显示时间,可以看看它里面到底设置了什么:
• cat /etc/sysconfig/clock
• # The ZONE parameter is only evaluated by system-config-date.
• # The timezone of the system is defined by the contents of /etc/localtime.
• ZONE="Asia/Shanghai"
• UTC=true
• ARC=false
• /etc/localtime: 本地端时间配置文件。
• /bin/date: 这个是时间的修改命令,除了输出时间,还可以修改时间。
• /sbin/hwclock: 因为linux系统上面BIOS时间与linux系统时间是分开的,所以使用date这个指令调整了时间之后,还需要使用hwclock才能将修改过的时间写入BIOS中。
• /usr/sbin/ntpd: 这是NTP的daemon文件,需要启动它才能提供NTP服务,这个命令会读取/etc/ntp.conf里面的设置。
• /usr/sbin/ntpdate: 这是client用来连接NTP Server的主要执行文件,如果您不想启用NTP,只想启用NTP Client功能的话,可以只应用此命令。
• /usr/sbin/ntptrace: 可以用来追踪某台时间服务器的时间对应关系。
安装与配置
• 设置时区:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
• 安装ntpd服务:yum -y install ntp
• 配置ntpd /etc/ntp.conf:
restrict default kod nomodify notrap nopeer noquery
# restrict -6 default kod nomodify notrap nopeer noquery
# 针对ipv6设置
# 允许本地所有操作
restrict 127.0.0.1
#restrict -6 ::1
# 允许的局域网络段或单独ip
restrict 10.0.0.0 mask 255.0.0.0 nomodify motrap
restrict 192.168.0.0 mask 255.255.255.0 nomodify motrap
restrict 192.168.1.123 mask 255.255.255.255 nomodify motrap
# 使用上层的internet ntp服务器
restrict cn.pool.ntp.org
restrict 1.cn.poo.ntp.org
restrict 0.asia.pool.ntp.org
restrict 3.asia.pool.ntp.org
server cn.pool.ntp.org prefer
server 1.cn.poo.ntp.org
server 0.asia.pool.ntp.org
server 3.asia.pool.ntp.org
# 如果无法与上层ntp server通信以本地时间为标准时间
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
# 计算本ntp server 与上层ntpserver的频率误差
driftfile /var/lib/ntp/drift
# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys
#日志文件
logfile /var/log/ntp.log
• 修改/etc/sysconfig/ntpd:
# Drop root to id 'ntp:ntp' by default.
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid"
# Set to 'yes' to sync hw clock after successful ntpdate
SYNC_HWCLOCK=yes #make no into yes; BIOS的时间也会跟着修改
# Additional options for ntpdate
NTPDATE_OPTIONS=""
验证与状态检查
• 运行ntp
service ntpd start/stop/restart
# 查看ntp的端口,应该看到123端口
netstat -unlnp
# 查看ntp服务器有无和上层连通
ntpstat
synchronised to NTP server () at stratum 2
time correct to within 74 ms
polling server every 128 s
# 注意:此命令出现上述synchronised结果比较慢,我的用了大概5分
钟。
• 查看ntp服务器与上层间的联系:ntptrace
ntptrace -n 127.0.0.1
127.0.0.1: stratum 3, offset -0.001095, synch distance 0.532610
116.193.83.174: timed out, nothing received
• 查看ntp服务器与上层ntp服务器的状态:ntpq
ntpq -p
# 其中:
# remote - 本机和上层ntp的ip或主机名,“+”表示优先,“*”表示次优先
# refid - 参考上一层ntp主机地址
# st - stratum阶层
# when - 多少秒前曾经同步过时间
# poll - 下次更新在多少秒后
# reach - 已经向上层ntp服务器要求更新的次数
# delay - 网络延迟
# offset - 时间补偿
# jitter - 系统时间与bios时间差
如果所有远程服务器的jitter值是4000并且delay和reach的值是0,那么说明时间同步是有问题的。
可能的原因是防火墙阻断了与server之间的通讯,即123端口是否正常开放;
此外每次重启NTP服务器之后大约要3-5分钟客户端才能与server建立正常的通讯连接,否则你在客户端执行“ntpdate 服务器ip”的时候将返回:
27 Jun 10:20:17 ntpdate[21920]: no server suitable for synchronization found
启动NTPD
我采用了一个比较直接的办法来手动启动ntpd,而不是把ntpd加入服务,写一个简单的脚本:
vi ntpstart.sh
ntpdate cn.pool.ntp.org
ntpdate cn.pool.ntp.org
service ntpd start
然后加入/etc/rc.local:
/shpath/ntpstart.sh
这是因为测试时发现一旦服务器启动后的时间总是与标准时间差别很大,每次启动后ntpd要花很多时间才能把时间校准,所以我是先在系统启动后ntpdate更新两次,然后再启动ntpd服务。
客户端配置
(具体配置参阅'Linux集群时间同步服务器设置.doc'文档,ntpdate测试可用)
• 方法1.使用ntpdate与上面配置的时间服务器定时同步,配置简单网上不推荐。
• 方法2.安装ntpd,指定时间server为上面配置的服务器地址,网上推荐。
ntpd在实际同步时间时是一点点的校准过来时间的,最终把时间慢慢的校正对。而ntpdate不会考虑其他程序是否会阵痛,直接调整时间。一个是校准时间,一个是调整时间。
解决ntp的错误
解决ntp的错误 no server suitable for synchronization found
当用ntpdate -d 来查询时会发现导致 no server suitable for synchronization found 的错误的信息有以下2个:
错误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
出现这个问题的原因可能有两个:
1.检查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去掉。
2.检查ntp server的防火墙。可能是server的防火墙屏蔽了upd 123端口。 可以用命令service iptables stop来关掉iptables服务后再尝试从ntp客户端的同步,如果成功,证明是防火墙的问题,需要更改iptables的设置。
linux服务器应用NTP配置时间同步的更多相关文章
- linux服务器基本安全配置手册
转:忘了在哪转的,直接复制到笔记里了,贴出来分享 假如你想要搭建一个Linux服务器,并且希望可以长期维护的话,就需要考虑安全性能与速度等众多因素.一份正确的linux基本安全配置手册就显得格外重要. ...
- Linux服务器的初步配置流程
作者: 阮一峰 日期: 2014年3月14日 开发网站的时候,常常需要自己配置Linux服务器. 本文记录配置Linux服务器的初步流程,也就是系统安装完成后,下一步要做的事情.这主要是我自己的总结和 ...
- 一台Linux服务器(4C8G配置)可以负载百万个连接?
一台Linux服务器可以负载多少个连接? 首先我们来看如何标识一个TCP连接?系统是通过一个四元组来识别,(src_ip,src_port,dst_ip,dst_port)即源IP.源端口.目标IP. ...
- 拿到新linux服务器,从配置环境到跑起项目的部署流程
今早翻开手机看到某云一条广告Linux1 核 2 GB 1 Mbps服务器10元一个月,正巧最近在搞linux,于是下单了一台2个月20. 上班来到公司后,借空闲时间一顿研究,一波骚操作配置后,浏览器 ...
- Linux 服务器的网络配置 - 2. 查看 Linux 服务器的进程
2. 查看 Linux 服务器的进程 1)ps [主要选项] -a 显示系统中所有进程的信息 -e 显示所有进程的信息 -f 显示进行的所有信息 -l 以长格式显示进程信息 -r 只显示正 ...
- Linux 服务器的网络配置 - 1. 查看 Linux 服务器的网络连接
1. 查看 Linux 服务器的网络连接 1)查看主机名: liuqian@ubuntu:~$ hostname ubuntu 2)查看 ip 地址: 用 ifconfig 即可,这里介绍命令组合用法 ...
- Linux服务器静态路由配置
转载自:点击打开链接 静态路由是在路由器中设置的固定的路由表.除非网络管理员干预,否则静态路由不会发生变化.由于静态路由不能对网络的改变作出反映,一般用于网络规模不大.拓扑结构固定的网络中.静态路由的 ...
- Linux 服务器上快速配置阿里巴巴 OPSX NTP服务
编辑文件 "/etc/ntp.conf",根据情况修改文件内容为: 互联网上的服务器: driftfile /var/lib/ntp/drift pidfile /var/run/ ...
- Linux 服务器修改时间与时间同步
设置时间 date --set '2015-11-23 0:10:40' # 方法一,通用 timedatectl set-time '2015-11-23 08:10:40' # 容器内可能不支持 ...
随机推荐
- Django中间件,信号,缓存
中间件 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 在django项 ...
- 线程锁、threading.local(flask源码中用的到)、线程池、生产者消费者模型
一.线程锁 线程安全,多线程操作时,内部会让所有线程排队处理.如:list/dict/Queue 线程不安全 + 人(锁) => 排队处理 1.RLock/Lock:一次放一个 a.创建10个线 ...
- 启动hadoop集群
1.配置core-site.xml(每个节点上都要配置) 路径: /usr/local/hadoop-2.7.3/etc/hadoop/core-site.xml 配置项1: name: fs.def ...
- centos7安装nodejs 和 yarn
如何从EPEL库安装Node.js 另一个有效且简单的方法来安装Node.js就是从官方库.这同样确保您可以访问到EPEL库,你可以通过运行以下命令. sudo yum install epel-re ...
- F110操作手册-自动付款
SAP 系统 F110系统操作手册 目 录 1.自动付款... 3 1.自动付款 事务代号: F110 菜单路径: 会计 →财 ...
- 20170330 ABAP代理生成
在线文档ABAP代理生成, ABAP 代理生成(事物SPROXY)使您能够通过使用企业服务资源中企业服务资源库中 的接口描述在SAP系统中生成ABAP代理对象. ABAP代理生成概览: 1.代理标识, ...
- 【AWS】AWS云计算赋能数字化转型专题研讨会
点我查看详情 欢迎莅临
- render httprequest
render def my_view(request):# View code here... t = loader.get_template('myapp/index.html') c = Requ ...
- windows安装mysql教程2017最新
1.首先在mysql官网下载最新版mysql, 附上链接点击打开链接,根据你的系统型号选择对应的包下载,大约300多兆,版本号为5.7.19 下载完之后,解压缩,是一个标准的mysql文件 2.第二步 ...
- ThinkPHP框架基础知识一
ThinkPHP是一个快速.兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来 ...