目录
在真实的生产环境中,企业软件系统平台数据都是有时间属性的,特别是多服务器系统场景、实时性业务场景、非外网环境等。对时间的误差要求均比较高。本文仅从服务器操作系统自身时间同步的解决方案。
解决实现方式是使用服务器的网络时间协议进行时间同步。
网络时间协议NTP(Network Time Protocol)是用于互联网中时间同步的标准互联网协议。NTP的用途是把计算机的时间同步到某些时间标准。目前采用的时间标准是世界协调时UTC(Universal Time Coordinated)。
一、方案选择
根据服务器环境,选择不同的时间源服务器。
1 如服务器有访问公网公用时间服务的能力。可直接通过NTP客户端同步即可,参考“NTP客户端”部分内容。
2 如果仅有一部分服务器有公网访问能力,则使用一台服务器安装NTP服务端,为其他服务器提供时间同步代理服务即可,参考以下的“NTP服务端”部分内容。
3 如果特殊行业,如电力、银行等行业。完全与公网物理隔离的场景,一般会安装“GPS时钟服务器”的硬件设备在网络内。该设备通过GPS与卫星保持时间同步,为服务器提供实时时间对准服务。服务器群则可采用以上第1或第2种方案进行时间同步操作。
二、NTP服务端
要求服务端可以访问公网公用时间服务。下面,以CentOS系统为例,介绍如何在服务器上安装NTP服务端,定时与外网时间服务同步,为本地众多客户端提供时间服务代理。举例实现方式。
1)安装NTP软件
使用YUM方便的安装系统软件。
yum install ntp
2)编辑配置文件
备份一下原始配置文件:
mv /etc/ntp.conf /etc/ntp.conf-bk
编辑配置文件:
vi /etc/ntp.conf
添加如下内容
假设项目服务器网络地址段为192.168.100.0/24,服务器端要允许该网段服务器进行同步,拒绝其他服务器的同步(根据实际情况进行配置)。
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.0.0.1 stratum 10
driftfile /var/lib/ntp/drift
3)启动NTP服务
systemctl start ntpd.service
三、NTP客户端
1) 客户端配置
添加到计划任务中,每三十分钟同步一次,假定NTP服务器IP为192.168.100.5。
crontab -e 30 * * * * /usr/sbin/ntpdate 192.168.100.5
开机启动时的时间同步设置
echo “/usr/sbin/ntpdate 192.168.100.5 ”>> /etc/rc.d/rc.local
2) 手动在其他服务器上同步时钟
如果特殊情况下,需要人为手动同步其他服务器时钟,可单独执行以下命令进行时间同步。
/usr/sbin/ntpdate 192.168.100.5
3)查看服务器当前时间
date