让服务器时间“云”起来【拍死标题党】
前言
企业内部应用越来越多后,时间不同步问题难以避免,在某个应用出问题时,需要查看日志,如果这时时间错误,轻则变瘸子(难以查询错误),重者股骨头坏死(日志文件毫无参考价值),晚期就是植物人(无法定位错误发生时间和引起错误的应用,GAME OVER),这时服务器的时间同步就是必须的,本文B者就HPUX系统,分析NTP服务器设置的方法。
一、统一时间服务器对外接口
标题的意思就是整个内网只有一个地方对外获取标准时间,内网中其他服务器都从这个统一接口获取时间,这样的好处是:当外网连接故障时,起码保证整个内网的服务器时间是同步的,方便排错。整个内网的应用都是围绕关键应用,所以这里选择内网的关键应用作为统一接口。
首先,设置关键应用为内网时间服务器,编辑ntp服务的配置文件,末尾加入下列几行:
/etc/ntp.conf
server 0.pool.ntp.org version 3
server 1.pool.ntp.org version 3
server 2.pool.ntp.org version 3
server 3.pool.ntp.org version 3
云来了。这里使用http://www.pool.ntp.org/en/作为标准时间获取地,它是个在全球有2K多个节点的ntp可靠服务项目(对不起,这就是“云”),放心使用(被墙除外),这个配置文件默认可能没有写权限,需要自行添加。
#chmod +w /etc/ntp.conf
记得用完把写权限删除。
这时不急着启动ntp服务,首先远程同步一下时间,因为如果本地服务器和远程服务器的时间如果相差太多,ntp拒绝工作,手动先同步时间:
#ntpdate -b pool.ntp.org #date
欧了。下面启动ntp服务,使用自带脚本:
#/sbin/init.d/xntpd start
ntp服务启动,查看服务:
#ntpq -p
服务正常,一般企业中关键应用都是工作在集群中,因此最好也将集群中的其他节点也同样设置为内网NTP服务器,可能会有人问,那不是时间接口就不统一了么?Good Q!一般来讲企业关键应用都是跑多节点,但和关键应用绑定的资源中一般都有IP,所以在下面介绍“内网其他服务器如何使用这个统一接口”时,将要获取的时间服务器地址设置为浮动IP即可,不论应用浮动至哪个节点,节点上的配置都是一样的。
二、配置客户端连接内网NTP时间服务器
在前言中,只是提到NTP服务器的配置方法,其实NTP服务本身即是Server端又是Client端,在第一节中介绍的内网统一时间服务器,从内网看,它是时间服务器,如果从pool.ntp.org看,它也是客户端,NTP服务即向上获取时间,同时也向外提供NTP服务,最终形成一个不可闭合的链条:第一环上的服务器(stratum-0级)和标准时间相差很小或者无差别,一般是通过GPS、CDMA等其他方法获得时间,不能直接接入网络,但可以连接至电脑;第二环就是直接连接获取时间设备的电脑(stratum-1级),所以一般stratum-1服务器会作为标准时间对外提供服务;与stratum-1通过网络直接连接的服务器就是stratum-2级,以此类推,无穷尽也,但越往后误差就越大,相信将自己的服务器从stratum-888上获取时间的主儿一定不是憨腚。因此,这里设置就相对简单了,只需要将内网剩下服务器开通NTP服务并从关键应用的浮动IP获取时间即可,设置方法同上,记得也要先手动同步先。
山、yet another method
本节通过HPUX半可视化工具进行客户端(也可作为时间服务器)的设置,它就是萨姆--非常不Unixic的一个工具,但是它非常傻逼化,不需要学习HPUX经典三部曲即可马上使用。启动:
#sam
我记得sam也可以在Xwindow下运行,具体介绍请男人它:
#man sam
一直往南找到Time一项,进去:
请按如下选择,进去:
使用tab键找到添加server:
添加刚才对外统一接口地址即可:
添加完成后启动NTP服务即可:
这里还有个事儿,在对外接口刚设置完成后需要稍息一会,不然客户端 ntpq -p 时会告诉你密有可用服务器来同步,据说是3分20秒。好了,做完了。
总结
今儿我们干了一件让系统管理员、DBA都高兴的一件事:统一了内网服务器的时间,而且和UTC(地球标准时间)相差在秒级。然后,考虑到为了丰富大家的课外活动,这么好一片方便收藏的流水账不放首页也太对不起领导(只针对新手),于是三年后我又干了三年前干的挨拍事儿,
PS:请勿原封不动按照上述过程操作,一切后果,概不负责。