局域网内Linux服务器时间同步

时间:2024-03-26 19:05:22


设置linux服务器定时与时间服务器同步

     在一些大公司经常出现这样一个情况:公司或一些机关单位的内部业务系统的应用服务器以及数据都是做的多机集群部署而且基本都是linux系统,而且都是内部网,不与外网通讯的。这样经常就会出现一个情况,我发送任务的时间还晚于对方任务接收的时间。这样经常令我们头痛,那为什么会出现这样一个情况呢,其实就是linux机器的系统没有定时同步导致的,这个问题不仅linux系统有,windows系统也会出现这样的问题,比如我们的windows系统很久没开过机了,那么我们就会发现windows系统上的时间不对了,但是为什么我们常使用的windows系统就不会时间不一致呢,因为我们的windows系统会自动定时的与远程标准的时间服务器同步时间,对出现的时间误差进行校准。

  但是这里我们说了,是内网的linux系统,不能与外界互联网通讯而且linux因为其开放性的原因也有一个弊端,很多东西都没有设置死,只能自己去设置,尤其是黑乎乎的命令行系统。

这里教大家一个方法就是设置linux自动定时的与某一个内部时间服务器同步,这样就可以保证多台机器的时间始终一致。这里主要有两个问题:

1.如何实现与指定时间服务器同步,进行时间校准?

2.怎样实现linux系统服务级的定时执行?

好吧,下面依次解决这两个问题就好了。首先假设我们的时间服务器的ip地址为192.168.1.10。

1.时间同步我们用命令ntpdate,这个命令具体用法以后我的博客会专门讲到这个问题,也可以查看命令帮助。这里先直接使用即可:

ntpdate -u 192.168.1.10

这样就可以与192.168.1.10的时间服务器同步了。

2.怎样实现定时执行。这里主要都是用到/etc/crontab实现定时。这个文件是linux的系统定时调度文件,在系统启动后会加载这个文件。先看下这个文件:

局域网内Linux服务器时间同步
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  *  command to be executed

~
~
~
~
局域网内Linux服务器时间同步
看看这个文件,前面四行可以忽略不管。其实这个有个例子在这里了,非常容易看懂,关键就是这一行:
*  *  *  *  *  command to be executed
第一个*表示分钟,第二个*表示小时,第三个*表示一个月的那一天,第四个*表示月份,第五个*表示一周的那一天。其中要表示任何一个都可以就直接用*表示。前面五个位置以后就表示要执行的命令和参数。
所以定时执行已经掌握了,那么我们定时时间同步校准应该怎样呢。

首先进入/etc/crontab文件
vim  /etc/crontab

  插入一行定时执行同步代码,假设我们每天凌晨1点执行一次时间同步。即如下代码:

00 1 * * * root  ntpdate -u 192.168.1.10

这样我们就设置好了linux服务器定时与时间服务器同步校准时间的任务了。bingo!是不是很简单呢

 

如果有时间的话,以后会写一下ntpdate命令的使用以及时间服务器的搭建。





局域网内Linux服务器时间同步


1.将一台能够上网的服务器作为时间服务器: 
# /usr/bin/rdate -s time-b.timefreq.bldrdoc.gov //将时间服务器与互联网时间服务器同步 
# /etc/init.d/ntpd start //启动时间服务器 
# vi /etc/cron.weekly/rdateweekly.sh //设置计划任务,每周同步一次时间 
---------------------------------------- 
#!/bin/sh 
/usr/bin/rdate -s time-b.timefreq.bldrdoc.gov 
---------------------------------------- 
# chmod a+x /etc/cron.weekly/rdateweekly.sh 
# setup     //将ntpd设置成为开机自启动 
# vi /etc/sysconfig/iptables //修改防火墙使允许时间服务器通信 
---------------------------------------- 
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT 
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 123 -j ACCEPT 
----------------------------------------

2.设置局域网内其它服务器与该时间服务器同步 
# ntpdate 192.168.1.1 //该IP为上面的时间服务器IP 
# vi /etc/cron.weekly/ntpdateweekly.sh //设置计划任务,每周同步一次时间 
---------------------------------------- 
#!/bin/sh 
/usr/sbin/ntpdate 192.168.1.1 
---------------------------------------- 
# chmod a+x /etc/cron.weekly/ntpdateweekly.sh

3.搞定!




前言 

NTP 网络时间协议用来同步网络上不同主机的系统时间。你管理的所有主机都可以和一个指定的被称为 NTP 服务器的时间服务器同步它们的时间。而另一方面,一个 NTP 服务器会将它的时间和任意公共 NTP 服务器,或者你选定的服务器同步。由 NTP 管理的所有系统时钟都会同步精确到毫秒级。

在公司环境中,如果他们不想为 NTP 传输打开防火墙,就有必要设置一个内部 NTP 服务器,然后让员工使用内部服务器而不是公共 NTP 服务器。在这篇文章中,我们会介绍在CentOS 7 搭建ntp时钟服务器的步骤,一起来看看吧。

服务器 : 192.168.137.3

客户机:  192.168.137.6

1、 服务器端

centos7下首先确认服务器的防火墙、selinux关闭状态

# cat /etc/redhat-release 
CentOS Linux release 7.0.1406 (Core)

第一步  为服务器和客户机安装ntp   ntpdate   --默认已安装

# yum install ntp ntpdate -y

第二步 查找时间同步服务器

http://www.pool.ntp.org/zone/asia

第三步  编辑 /etc/ntp.conf

server time.windows.com
server s2m.time.edu.cn
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org
server 127.127.1.0 iburst  local clock 当外部时间不可用时,使用本地时间。
restrict 192.168.137.1 mask 255.255.255.0 nomodify  允许更新的IP地址段

第四步  启动ntp服务

systemctl start ntpd
systemctl enable ntpd.service 设置开机启动服务

第五步  验证服务

# ntpq -p

  remote   refid  st t when poll reach delay offset jitter
==============================================================================
 211.138.200.209 .INIT.   16 u - 64 0 0.000 0.000 0.000
 ns.pku.edu.cn .INIT.   16 u - 64 0 0.000 0.000 0.000
 211.138.200.208 .INIT.   16 u - 64 0 0.000 0.000 0.000
 nipper.paina.jp .INIT.   16 u - 64 0 0.000 0.000 0.000
 send.mx.cdnetwo .INIT.   16 u - 64 0 0.000 0.000 0.000
*LOCAL(0)  .LOCL.   5 l 52 64 1 0.000 0.000 0.000

# date -R
Fri, 15 Jul 2016 15:28:34 +0800

2、客户端

第六步  远程客户端时间同步测试

# date 
Fri Jul 15 15:31:22 CST 2016
# ntpdate 192.168.137.3
15 Jul 15:33:04 ntpdate[63912]: step time server 192.168.137.3 offset -4.492463 sec

第七步 客户端设置计划任务,每天晚上1点同步时间

crontab -e
00 01 * * * root /usr/sbin/ntpdate 192.168.137.3; /sbin/hwclock -w  

格式 00 01 * * *  五个字符表示  分 时 日 月 年

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。




RHCE 系列(十):在 RHEL/CentOS 7 中设置 NTP(网络时间协议)服务器


网络时间协议 - NTP - 是运行在传输层 123 号端口的 UDP 协议,它允许计算机通过网络同步准确时间。随着时间的流逝,计算机内部时间会出现漂移,这会导致时间不一致问题,尤其是对于服务器和客户端日志文件,或者你想要复制服务器的资源或数据库。

局域网内Linux服务器时间同步

在 CentOS 和 RHEL 7 上安装 NTP 服务器

前置要求:

额外要求:

这篇指南会告诉你如何在 CentOS/RHCE 7 上安装和配置 NTP 服务器,并使用 NTP 公共时间服务器池(NTP Public Pool Time Servers)列表中和你服务器地理位置最近的可用节点中同步时间。

步骤一:安装和配置 NTP 守护进程

1、 官方 CentOS /RHEL 7 库默认提供 NTP 服务器安装包,可以通过使用下面的命令安装。

  1. #yum install ntp

局域网内Linux服务器时间同步

安装 NTP 服务器

2、 安装完服务器之后,首先到官方 NTP 公共时间服务器池(NTP Public Pool Time Servers),选择你服务器物理位置所在的洲,然后搜索你的国家位置,然后会出现 NTP 服务器列表。

局域网内Linux服务器时间同步

NTP 服务器池

3、 然后打开编辑 NTP 守护进程的主配置文件,注释掉来自 pool.ntp.org 项目的公共服务器默认列表,并用类似下面截图中提供给你所在国家的列表替换。(LCTT 译注:中国使用 0.cn.pool.ntp.org 等)

局域网内Linux服务器时间同步

配置 NTP 服务器

4、 下一步,你需要允许来自你的网络的客户端和这台服务器同步时间。为了做到这点,添加下面一行到 NTP 配置文件,其中 restrict 语句控制允许哪些网络查询和同步时间 - 请根据需要替换网络 IP。

  1. restrict 192.168.1.0 netmask 255.255.255.0 nomodify notrap

nomodify notrap 语句意味着不允许你的客户端配置服务器或者作为同步时间的节点。

5、 如果你需要用于错误处理的额外信息,以防你的 NTP 守护进程出现问题,添加一个 logfile 语句,用于记录所有 NTP 服务器问题到一个指定的日志文件。

  1. logfile /var/log/ntp.log

局域网内Linux服务器时间同步

启用 NTP 日志

6、 在你编辑完所有上面解释的配置并保存关闭 ntp.conf 文件后,你最终的配置看起来像下面的截图。

局域网内Linux服务器时间同步

NTP 服务器配置

 

步骤二:添加防火墙规则并启动 NTP 守护进程

7、 NTP 服务使用 OSI 传输层(第四层)的 123 号 UDP 端口。它是为了避免可变延迟的影响所特别设计的。要在 RHEL/CentOS 7 中开放这个端口,可以对 Firewalld 服务使用下面的命令。

  1. # firewall-cmd --add-service=ntp --permanent
  2. # firewall-cmd --reload

局域网内Linux服务器时间同步

在 Firewall 中开放 NTP 端口

8、 你在防火墙中开放了 123 号端口之后,启动 NTP 服务器并确保系统范围内可用。用下面的命令管理服务。

  1. #systemctl start ntpd
  2. #systemctl enable ntpd
  3. #systemctl status ntpd

局域网内Linux服务器时间同步

启动 NTP 服务

 

步骤三:验证服务器时间同步

9、 启动了 NTP 守护进程后,用几分钟等服务器和它的服务器池列表同步时间,然后运行下面的命令验证 NTP 节点同步状态和你的系统时间。

  1. # ntpq -p
  2. #date-R

局域网内Linux服务器时间同步

验证 NTP 时间同步

10、 如果你想查询或者和你选择的服务器池同步,你可以使用 ntpdate 命令,后面跟服务器名或服务器地址,类似下面建议的命令行示例。

  1. # ntpdate -0.ro.pool.ntp.org 1.ro.pool.ntp.org

局域网内Linux服务器时间同步

同步 NTP 时间

 

步骤四:设置 Windows NTP 客户端

11、 如果你的 windows 机器不是域名控制器的一部分,你可以配置 Windows 和你的 NTP服务器同步时间。在任务栏右边 -> 时间 -> 更改日期和时间设置 -> 网络时间标签 -> 更改设置 -> 和一个网络时间服务器检查同步 -> 在 Server 空格输入服务器 IP 或 FQDN -> 马上更新 -> OK。

局域网内Linux服务器时间同步

和 NTP 同步 Windows 时间

就是这些。在你的网络中配置一个本地 NTP 服务器能确保你所有的服务器和客户端有相同的时间设置,以防出现网络连接失败,并且它们彼此都相互同步。




CentOS NTP服务器安装与配置

[日期:2014-01-15] 来源:Linux社区  作者:lichaoshan [字体:  ]

CentOS NTP服务器安装与配置

背景
当服务器多了,时间准确与否,一致与否是个大问题。虽然这个问题总是被忽略,但是统一一致的时间是很有必要的。下面说一下在局域网内配置Linux时间服务器的方法。

配置的环境及要求:
1.假设在192.168.0.0网段内,要以IP为192.168.0.240的Linux机器时间服务器。
2.192.168.0.240服务器能上外网,能与比较权威的公网时间服务器同步
3.同网段内的其他机器每小时自动向192.168.0.240同步时间

一、安装

yum -y install ntp ntpdate
二、配置

2.1.NTP server的主配置文件为/etc/ntp.conf 现对/etc/ntp.conf的各项进行说明
cp /etc/ntp.conf /etc/ntp.conf.bak
vim /etc/ntp.conf

2.vi /etc/ntp.conf(以下是ntp.conf文件的内容)

#设置此服务器同上层服务器做时间同步的IP地址,prefer意味着首选IP地址
 #经试验,下面的几个时间服务器速度还不错(默认配置即可)
 server 210.72.145.44 prefer
 server 218.21.130.42
 server 0.asia.pool.ntp.org
 server 1.asia.pool.ntp.org
 server 2.asia.pool.ntp.org
 #记录上次的NTP server与上层NTP server联接所花费的时间
 driftfile /etc/ntp/drift
 #设置默认策略为允许任何主机进行时间同步
 restrict default ignore
 #设置允许访问此时间服务器的时间服务的IP地址
 #根据自己实际情况配置
 restrict 127.0.0.1   
 restrict 192.168.10.2  # 指定某台机器时间同步
 restrict 192.168.0.0 mask 255.255.255.0 #允许192.168.0.0/254子网内主机时间同步
 restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap #允许任何主机跟进行时间同步
 #指定阶层编号为10,降低其优先度。
 fudge 127.127.1.1 stratum 10
 #设置ntp日志的path
 statsdir /var/log/ntp/
 #设置ntp日志文件
 logfile /var/log/ntp/ntp.log

三、维护

----添加为服务
 chkconfig --level 345 ntpd on
----启动
 service ntpd start
 或
 /etc/rc.d/init.d/ntpd start
----停止
 service ntpd stop
 或
 /etc/rc.d/init.d/ntpd stop
----管理命令
 ntpq –p    #查看本机和上层服务器的时间同步结果
 ntptrace    #可以用來追踪某台时间服务器的时间对应关系
 ntpdate IP  #客户端要和NTP server进行时钟同步。
 /var/log/ntp/ntp.log  #查看ntp日志

----------------------------------
开启防火墙端口
iptables -A INPUT -p udp -dport 123 -j ACCEPT
/etc/init.d/iptables save
service iptables restart

四、配置客户端

测试同步:
ntpdate ip地址

设置自动同步:
echo “00 */1 * * * root /usr/sbin/ntpdate 192.168.0.240;/sbin/hwclock -w”>>/etc/crontab
 每小时同NTP server进行一次时钟同步,并写入本机BIOS