SUSE Linux实现局域网时间同步

0.前言

需求是这么来的,搭建了Storm集群进行协同过滤算法的计算性能测试,要求精度在毫秒(ms)级别。局域网内40个虚拟机节点,用 date 命令,精度上和效率上都不可行。所以,就搭建了 NTP 服务器。

1.简介

简单的说就是选择几部主要主机 (Primary server) 调校时间,让这些 Primary Servers 的时间同步之后,再开放网络服务来让 Client 端联机,最后使Client 端调整自己的时间。NTP(Network Time Protocol)就是实现这个过程的一个网络时间协议。它是一个跨越广域网或局域网的复杂的同步时间协议,可使得机器获得毫秒级的精度。NTP协议是OSI参考模型的高层协议,符合UDP传输协议格式,拥有专用端口(Port)123。随着时间的推移,计算机的时钟(硬件时钟)会倾向于漂移。网络时间协议(NTP)即可为路由器、交换机、工作站和服务器之间提供一种时间同步的机制。

详情:http://www.ntp.org/ (官网链接)

2.本次实验环境

操作系统: SUSE Linux Enterprise Server 11 (x86_64)

NTP版本:ntpq [email protected] Sat May  8 09:39:49 UTC 2010 (1) (系统自带,也可自行下载安装)

局域网时间服务器IP:172.18.65.1

客户端同步机器IP:172.18.65.2~172.18.65.41 (40台)

3.服务器搭建步骤

1.选择局域网内一个机器作为时间同步服务器(172.18.65.1)

2.修改服务器端NTP的主要配置文件ntp.conf(默认路径为:/etc/ntp.conf)

$vim /etc/ntp.conf

server 127.127.1.0              # local clock (LCL)
fudge  127.127.1.0 stratum 10   # LCL is unsynchronized
##
## Add external Servers using
## # rcntp addserver <yourserver>
##
##
## Miscellaneous stuff
##
driftfile /var/lib/ntp/drift/ntp.drift # path for drift file
logfile   /var/log/ntp          # alternate log file
# logconfig =syncstatus + sysevents
# logconfig =all
# statsdir /tmp/                # directory for statistics files
# filegen peerstats  file peerstats  type day enable
# filegen loopstats  file loopstats  type day enable
# filegen clockstats file clockstats type day enable
#
# Authentication stuff
#
keys /etc/ntp.keys              # path for keys file
trustedkey 1                    # define trusted keys
requestkey 1                    # key (7) for accessing server variables
# controlkey 15                 # key (6) for accessing server variables

增加OR修改以下内容:

restrict default ignore

    restrict 172.18.65.0 mask 255.255.255.0 nomodify notrap

#restrict [你的IP] mask [netmask_IP] [parameter]

#其中 parameter 的参数主要有底下这些:

  • ignore: 拒绝所有类型的 NTP 联机;
  • nomodify: 客户端不能使用 ntpc 与 ntpq 这两支程序来修改服务器的时间参数, 但客户端仍可透过这部主机来进行网络校时的;
  • noquery: 客户端不能够使用 ntpq, ntpc 等指令来查询时间服务器,等于不提供 NTP 的网络校时啰;
  • notrap: 不提供 trap 这个远程事件登录 (remote event logging) 的功能。
  • notrust: 拒绝没有认证的客户端。

3.配置文件就ok了,启动NTP服务器

172.18.65.1下启动NTP服务器:service ntp start   或者   /etc/init.d/ntp start

4.手工发起同步(由于Suse Linux在11版本中摒弃了ntpdate命令,采用新的sntp命令进行操作)

在各个客户端机器上执行:sntp -P no -r 172.18.65.1

这样就进行了各客户端与服务器的时间同步。

5.每隔一段时间,客户端自动同步

$crontab -e

添加一条如:* 2 * * * * sntp -P no -r 172.18.65.1   #每隔2个小时,客户端与服务器同步一次

4.查看NTP运行状态命令

$ntpq -q 
      

ntpq -p 可以列出目前我们的 NTP 与相关的上层 NTP 的状态,上头的几个字段的意义为:

  • remote:亦即是 NTP 主机的 IP 或主机名啰~注意最左边的符号

    • 如果有『 * 』代表目前正在作用当中的上层 NTP。本实验中时间服务器是自身同步,所以显示为LOCAL(0)
    • 如果是『 + 』代表也有连上线,而且可作为下一个提供时间更新的候选者。
  • refid:参考的上一层 NTP 主机的地址
  • st:就是 stratum 阶层啰!
  • when:几秒钟前曾经做过时间同步化更新的动作;
  • poll:下一次更新在几秒钟之后;
  • reach:已经向上层 NTP 服务器要求更新的次数
  • delay:网络传输过程当中延迟的时间,单位为 10^(-6) 秒
  • offset:时间补偿的结果,单位与 10^(-3) 秒
  • jitter:Linux 系统时间与 BIOS 硬件时间的差异时间, 单位为 10^(-6) 秒。

5.实验接着做

按理说,照着这个步骤来,完全就实现了这个41台机器的局域网时间同步。但是,我还是想知道在任意时刻,

各个客户端与服务器的时间误差到底是多少(实验要求,必须精确到毫秒级别,但是没有证据表明时间同步到毫秒级别了)。

考虑在使用ntpq -p命令查看状态时,有时间补偿的offset项,该项表明本时间服务器与上一级时间服务器的同步时间误差。

所以,将剩下的40个客户端均设置为服务器,且将172.18.65.1作为上级服务器。这样就能通过ntpq -p命令查看时间同步误差了。

 修改客户端的主要配置文件ntp.conf部分内容如下:

restrict default ignore

server 172.18.65.1 prefer  #perfer表示优先将该Server IP 作为时间源

restrict 172.18.65.0 mask 255.255.255.0 nomodify notrap

fudge  127.127.1.0 stratum 10   # LCL is unsynchronized

#利用server设定上层NTP服务器,上层NTP服务器的设定方式为:

#server    [IP OR HOSTNAME]    [PREFER]

#参数说明:

#ip or hostname :上层ntp服务器的ip地址或者域名

#prefer : 表示优先使用的主机

   同步以及查看步骤如下:

   172.18.65.1下启动NTP服务器:service ntp start   或者   /etc/init.d/ntp start

各客户端下启动服务器:service ntp start 

   

可以看到时间同步误差为-0.479ms,在毫秒级别,完全符合实验要求。

参考链接:

http://vbird.dic.ksu.edu.tw/linux_server/0440ntp.php

http://blog.csdn.net/wzy_1988/article/details/8629304

http://linuxtools-rst.readthedocs.org/zh_CN/latest/tool/crontab.html

时间: 2024-10-11 11:18:43

SUSE Linux实现局域网时间同步的相关文章

Linux 系统局域网时间同步

相对于NTP服务, rdate显得更轻巧,而且配置.操作都极其简单. 以CentOS6.x系统为例(zabbix为时间服务器, oracle为客户端): 一.选一台服务器作为时间同步服务器,开启time-stream,由于其是由xinetd守护进程管理的,确定已经安装. [[email protected] ~]#  [[email protected] ~]# chkconfig --list | egrep '(xinetd|time-stream)' xinetd          0:o

suse linux ssh远程无法访问问题

当正常安装完Suse Linux Enterprise Server 11 sp1 时,无法通过SecureCRT或者PuTTY之类的终端程序进行连接. 折腾了一下,发现问题所在: 1.  需要关闭防火墙,如下图在YAST里可以关闭,也可以使用下面命令行的方式,但出于安全的考虑,在实际使用是还是要根据实际情况打开防火墙,应该配置防火墙允许正确的,合法的通讯通过. 但是,什么是正确的,什么是合法的通讯,这就需要有些实际经验,需要有些功力了,呵呵! 本次只是测试一下,故关闭防火墙 2.使用命令行停止

SuSE Linux 11 下informix数据库安装配置

Informix是IBM公司出品的关系数据库管理系统(RDBMS)家族.现在用的人越来越少啦,各大运营商倒是还有用的,工作需要,还是要学习一下安装. 系统: SUSE Linux Enterprise Server 11 (x86_64) 一.安装 1.以root用户身份创建informix组和用户,假设informix用户的HOME目录为/opt/informix # groupadd  informix # useradd  -g  informix  -d  /opt/informix  

mysqladmin在SuSE linux系统中--sleep參数使用不准确问题

我们都知道,在MySQL中.能够使用mysqladmin命令的extended-status选项来查看MySQL的执行状态,比方获取我们经常关注的几个值: # mysqladmin -uroot -proot ext |grep "Questions\|Queries\|Innodb_rows\|Com_select \|Com_insert \|Com_update \|Com_delete " | Com_delete                               |

SUSE Linux源码编译安装MySQL 5.6

这篇文章主要介绍了SUSE Linux下源码编译方式安装MySQL 5.6过程分享,本文使用SUSE Linux Enterprise Server 10 SP3 (x86_64)系统,需要的朋友可以参考下.MySQL为开源数据库,因此可以基于源码实现安装.基于源码安装有更多的灵活性.也就是说我们可以针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码,根据不同的软件平台环境调整相关的编译参数,选择自身需要选择不同的安装组件,设定需要的字符集等等一些可以根据特定应用场景所作的各种调整.本文

mysqladmin在SuSE linux系统中--sleep参数使用不准确问题

我们都知道,在MySQL中,可以使用mysqladmin命令的extended-status选项来查看MySQL的运行状态,比如获取我们常常关注的几个值: # mysqladmin -uroot -proot ext |grep "Questions\|Queries\|Innodb_rows\|Com_select \|Com_insert \|Com_update \|Com_delete " | Com_delete                               |

Welcome Docker to SUSE Linux Enterprise Server【水平有限,中英对比,求纠错】

  原文:Welcome Docker to SUSE Linux Enterprise Server Lightweight virtualization is a hot topic these days. Also called "operating system-level virtualization," it allows you to run multiple applications or systems on one host without a hypervisor

Vmware Workstation + Suse Linux 11 SP3 + db2 purescale V10.5 (四)

本文详细记录了DB2 purescale 10.5在VMware Workstation 上的安装过程,如果大家看了本人的博文后,实践过程中有什么问题,欢迎加本人微信84077708,我将尽我所能为大家解惑. VMware Tools 安装好了以后,就可以实现物理机与虚拟机之间自由交换数据了,下面开始配置Suse linux 11SP3 操作系统: 1.配置/etc/hosts 2.配置DNS主备服务器 3.修改内核参数 4.修改资源限制 5.配置NTP服务器 一.配置/etc/hosts (n

Vmware Workstation + Suse Linux 11 SP3 + db2 purescale V10.5 (五)

本文详细记录了DB2 purescale 10.5在VMware Workstation 上的安装过程,如果大家看了本人的博文后,实践过程中有什么问题,欢迎加本人微信84077708,我将尽我所能为大家解惑. 在上一篇博文Vmware Workstation + Suse Linux 11 SP3 + db2 purescale V10.5 (四)中,已经将操作系统上的绝大部分配置都已经做完了,本文继续进行余下的三个重要的配置,分别是: 1.iscsi服务器配置 2.iscsi客户端配置 3.s