服务器ntp时间同步

Linux服务器运行久时,系统时间就会存在一定的误差,一般情况下可以使用date命令进行时间设置,但在做数据库集群分片等操作时对多台机器的时间差是有要求的,此时就需要使用ntpdate进行时间同步

# 有外网情况下时间同步

# 1.安装ntpdate

yum install ntpdate -y
1

ntpdate简单用法:

ntpdate ip
ntpdate 210.72.145.44
1
2

# 2.date命令

  • date :查看当前时间 结果如下:Tue Mar 4 01:36:45 CST 2014
  • date -s 09:38:40 :设置当前时间
  • date -s 05/10/2009 结果如下:Tue Mar 4 09:38:40 CST 2014

# 3.ntpdate命令

[root@linux ]# ntpdate -u ntp.api.bz
18 Nov 17:16:26 ntpdate[4234]: adjust time server 114.118.7.163 offset -0.000128 sec
[root@linux ]# 
1
2
3

注意:若不加上-u参数, 会出现以下提示:no server suitable for synchronization found

  • -u:从man ntpdate中可以看出-u参数可以越过防火墙与主机同步;
  • 210.72.145.44:中国国家授时中心的官方服务器。

# 4.ntp常用服务器

中国国家授时中心:210.72.145.44 NTP服务器(上海) :ntp.api.bz 美国:time.nist.gov 复旦:ntp.fudan.edu.cn 微软公司授时主机(美国) :time.windows.com 台警大授时中心(台湾):asia.pool.ntp.org

中国国家授时中心与NTP上海服务器可以正常同步时间,注意需要加上-u参数!

ntpdate -u ntp.api.bz

ntpdate -u 210.72.145.44

# 5.加入crontab

echo "*/20 * * * * /usr/sbin/ntpdate -u ntp.api.bz >/dev/null &" >> /var/spool/cron/root
1

# 内网机器同步

一般生产环境会提供一个时间校准服务IP地址 然后其他各服务器去NTP同步,这里介绍以其中一个服务器为基准,然后另外其他服务器都去同步该台服务器的时间从而实现所有服务器时间都一致

# 1.各服务器安装ntp服务

rpm -qa | grep ntp \\查看服务器是否安装ntp,一般系统默认安装ntpdate
1

# 2.主服务器设置

vim /etc/ntp.conf
1
  • 修改1(授权192.168.1.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间)
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
 
为restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
1
2
3
  • 修改2(集群在局域网中,不使用其他互联网上的时间)
server 0.centos.pool.ntp.org iburst
 
server 1.centos.pool.ntp.org iburst
 
server 2.centos.pool.ntp.org iburst
 
server 3.centos.pool.ntp.org iburst
为

#server 0.centos.pool.ntp.org iburst
 
#server 1.centos.pool.ntp.org iburst
 
#server 2.centos.pool.ntp.org iburst
 
#server 3.centos.pool.ntp.org iburst
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  • 添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0
 
fudge 127.127.1.0 stratum 10
1
2
3
  • 4修改/etc/sysconfig/ntpd 文件
vim /etc/sysconfig/ntpd
增加内容如下(让硬件时间与系统时间一起同步)

SYNC_HWCLOCK=yes
1
2
3
4
  • 5重新启动ntpd服务
systemctl restart ntpd
systemctl enable ntpd \\设置ntpd服务开机启动
systemctl status ntpd \\查看状态
1
2
3

# 3.其他机器配置(必须root用户)

  • 在其他机器配置10分钟与时间服务器同步一次
crontab -e
编写定时任务如下:

*/10 * * * * /usr/sbin/ntpdate 主IP
1
2
3
4
  • 十分钟后查看机器是否与时间服务器同步
date
1