集群环境下时间同步问题解决

1.场景介绍

比如说我现在项目部署在若干的服务器上面,然后构成整个集群,如果我们每台服务器的时间不一致,我们在业务代码里面拿到的时间也就不一致,这时候不管我们往数据库插入数据的create_time 还是修改数据update_time 还是我们使用时间计算,定时任务等等都会发生错乱,造成数据错乱,所以我们需要对集群下的服务器时间进行同步。
我们对时间同步分为两种情况,一是所有的服务都能连接外网,二就是有一台服务器能够连接外网,其余服务器能够与这台机器内网通信

2. 服务器均能连接外网

所有机器都能够访问外网的话,我们可以使用ntpdate 来进行时间同步
前提是我们服务器上面有ntp ,如果没有的话可以使用yum 安装

yum  install ntp -y

如果安装了可以执行ntpdate命令查看
在这里插入图片描述
执行命令进行同步

ntpdate -u ntp.api.bz

其中ntp一种网络时间协议,ntpdate 是时间同步软件的命令, ntp.api.bz 是个稳定的ntp时间同步服务器集群。
在这里插入图片描述
当然你可以使用linux系统的定时任务来设置每隔多长时间同步一次,使用linux系统下使用crontab -e 可以编辑任务。
这里我是用crontab -e 添加了一个定时每分钟同步时间的任务 ,然后将执行日志写到了/data/c1.log下面

 */1 * * * * /usr/sbin/ntpdate -u ntp.api.bz >/data/c1.log

格式: cron表达式 command
在这里插入图片描述
我们可以看一下/data/c1.log 里面的执行日志
在这里插入图片描述

3.一台机器能连接外网

我们把这台能连接外网的服务器当作时间服务器,整个集群服务器向该时间服务器同步时间,然后咱们内网的这台时间服务器向公网时间服务器同步时间,然后内网时间服务器不能联网,则自己设置时间,所有的集群服务器以它的时间为准。
在这里插入图片描述

3.1 内网时间服务器配置

如果服务器有ntpdate 建议使用yum install ntp -y 安装下
这里需要修改/etc/ntp.conf文件

# 这里192.168.3.0 是内网网段,然后这个只能被内网这个网段访问,我这边内网网段是192.168.3.0 的
restrict 192.168.3.0 mask 255.255.255.0 nomodify notrap    
server 127.127.1.0
fudge 127.127.1.0 stratum 10

然后重启ntpd服务,将ntpd服务设置开机自启

 systemctl restart ntpd
 systemctl enable ntpd     

在这里插入图片描述

3.2 其他服务器同步

我们内网的集群服务器可以使用ntpdate命令来进行时间同步。

ntpdate 内网时间服务地址

我这边内网的时间服务器是192.168.3.39
所以就是ntpdate 192.168.3.39
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yuanshangshenghuo/article/details/107093254
今日推荐