时钟不同步导致的问题
时钟此处指服务器时间,如果集群中各个服务器时钟不一致势必导致一系列问题。例如:
某一电商网站,新增⼀条订单,那么会在订单表中增加了一条记录,该条记录中应 该会有“下单时间”这样的字段, 往往我们会在程序中获取当前系统时间插入到数据库或者直接从数据库 服务器获取时间。那我们的订单子系统是集群化部署,或者我们的数据库也是分库分表的集群化部署, 然⽽他们的系统时钟缺不一致,必如有一台服务器的时间是昨天,那么这个时候下单时间就成了昨天, 那我们的数据将会混乱!
集群时钟同步配置
场景一:分布式集群中各个服务器节点都可以连接互联网
解决方式:所有服务器都与互联网时间保持一致,执行以下命令即可:
#使用 ntpdate 网络时间同步命令
ntpdate -u ntp.api.bz #从一个时间服务器同步时间
windows有计划任务 Linux也有定时任务,crond,可以使用linux的定时任务,每隔10分钟执行一次ntpdate命令
场景二:分布式集群中某一个服务器节点可以访问互联网或者所有节点都不能够访问互联网
解决方式:
选取集群中的⼀个服务器节点A(172.17.0.17)作为时间服务器(整个集群时间从这台服务器同步,如果这台服务器能够访问互联网,可以让这台服务器和网络时间保持同步,如果不能就手动设置一个时间)
步骤:1)首先设置好A的时间
2)把A配置为时间服务器(修改/etc/ntp.conf文件)
1、如果有 restrict default ignore,注释掉它
2、添加如下几行内容
restrict 172.17.0.0 mask 255.255.255.0 nomodify notrap # 放开局域网同步功能,172.17.0.0是你的局域网网段
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
3、重启生效并配置ntpd服务开机自启动
service ntpd restart
chkconfig ntpd on
3)集群中其他节点就可以从A服务器同步时间了
ntpdate 172.17.0.17