内网外网服务器时间同步解决方案

 

 

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://andylhz2009.blog.51cto.com/728703/946380
一.时间服务器(NTP)相关解释
    网络时间协议NTP(Network Time Protocol)是用于互联网中时间同步的标准互联网协议。NTP的用途是把计算机的时间同步到某些时间标准。目前采用的时间标准是世界协调时UTC(Universal Time Coordinated)
二.时间服务器的重要性
 
      在互联网上进行时间同步具有重要意义。随着互联网的发展和延伸到社会的各个方面,在其他的领域对时间同步也提出了多种要求,例如各种实时的网上交易、通信网络的时间配置、网络安全性设计、分布性的网络计算和处理、交通航班航路管理以及数据库文件管理和呼叫记录等多种涉及时间戳的应用,都需要精确、可靠和公认的时间。如果系统内某个服务器的时间有误差会造成交互失败有歧义,严重的将导致交易失败。由此可以看出NTP服务器的存在是不容置疑的。
三.内外网服务器时间同步方案
 
    说明了时间同步的重要性后,需要根据实际情况来调整服务器的时间同步策略:

1.       如果每个服务器都可以有公网IP地址与外界通信,那简单的方式就是:每个服务器都可以配置与互联网上的时间服务器进行同步,达到每个内外网服务器系统时间的一致性。

2.       但是通常的情况是:在IDC托管的服务器只有前端WEB服务器对外通信,数据库,文件等服务器只是通过私网地址与前端WEB通信,形成整体的架构。

这个时候就需要整体系统内部有一台服务器来担当中介,具体是:将某台服务器配置成时间服务器(注:此服务器能直接同步互联网上的时间服务器),其他所有服务器都定时与这台服务器在内部进行时间同步,达到每个服务器的时间一致性。
 
四.方案图示

内网外网服务器时间同步解决方案 _时间服务器  

五.时间服务器配置     
   

1.       安装NTP软件

因为系统所用系统是CentOS就可以使用YUM方便的安装系统软件。
#yum  install  ntp

2.       编辑配置文件

备份一下原始配置文件:mv /etc/ntp.conf    /etc/ntp.conf-bk

vi  /etc/ntp.conf
添加如下内容

允许192.168.100.0 网段服务器进行同步,拒绝其他服务器的同步

restrict 192.168.100.0 mask 255.255.255.0 nomodify
restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap noquery notrust
restrict 127.0.0.1
restrict -6 ::1
 
外网时间服务器定义
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org
server pool.ntp.org
 
fudge   127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift    
      

3.       启动NTP服务

service  ntpd start
 

4.       客户端配置

添加到计划任务中,每三十分钟同步一次
crontab  –e

 30 * * * *   /usr/sbin/ntpdate  192.168.100.5

开机启动时的时间同步设置
echo  “/usr/sbin/ntpdate  192.168.100.5;/sbin/hwclock -w ”>> /etc/rc.d/rc.local
 

5.       手动在其他服务器上同步时钟

root@xen100 vm_backup_script]# /usr/sbin/ntpdate  192.168.100.5

28 Jul 17:30:59 ntpdate[19081]: adjust time server 192.168.100.5 offset -0.019476 sec

[root@xen100 vm_backup_script]# date
Sat Jul 28 17:31:02 CST 2012
#######################################################
今天同事给了一个关于ntpd和ntpdate 的区别说明连接,内容如下:
 
ntpd不仅仅是时间同步服务器,他还可以做客户端与标准时间服务器进行同步时间,而且是平滑同步,并非ntpdate立即同步,在生产环境中应慎用ntpdate。
  由于ntpdate是立即同步,在获得一个时间之后,ntpdate使用settimeofday(2)设置系统时间,就会产生时钟的跃变。
  用ntpdate调整时间的方式,会有几个非常明显的问题:
  第一,这样做不安全。ntpdate的设置依赖于ntp服务器的安全性,攻击者可以利用一些软件设计上的缺陷,拿下ntp服务器并令与其同步的服务器执行某些消耗性的任务。由于ntpdate采用的方式是跳变,跟随它的服务器无法知道是否发生了异常(时间不一样的时候,唯一的办法是以服务器为准)。
  第二,这样做不精确。一旦ntp服务器宕机,跟随它的服务器也就会无法同步时间。与此不同,ntpd不仅能够校准计算机的时间,而且能够校准计算机的时钟。
  第三,这样做不够优雅。由于ntpdate是跳变,而不是使时间变快或变慢,依赖时序的程序会出错。例如,如果ntpdate发现你的时间快了,则可能会经历两个相同的时刻,对某些应用而言,这是致命的。
  许多应用程序依赖连续的时钟,取得的时间是线性的。例如数据库事务,通常会地依赖这样的事实:时间不会往回跳跃。
  我们可以想象以下,假如Oracle服务器的时间是01:00 AM,标准时间是00:30 AM,很明显Oracle服务器经过他自己的时间00:40 AM。假若此时直接使用ntpdate将服务器与标准时间同步,那么意味着Oracle服务器将在同一天经过两个00:40 AM,这对于某些计划任务来说可能是致命的。
  因而,唯一一个可以令时间发生跳变的点,是计算机刚刚启动,但还没有启动很多服务的那个时候。其余的时候,理想的做法是使用ntpd来校准时钟,而不是调整计算机时钟上的时间
#######################################################
按照上面的说法,那我们就可以改变客户端的配置取消ntpdate 的计划任务同步时间
将所有客户端配置成时间服务器,只是配置文件中的 :
外网时间服务器定义指向与外网同步的时间服务器即可
server 192.168.100.5