# 集群时钟同步问题


<!--more-->

[演示代码](https://gitee.com/ixinglan/cluster-demo.git)

## 一、时钟不同步导致的问题

举一个例子，电商网站业务中，新增一条订单，那么势必会在订单表中增加了一条记录，该条记录中应该会有"下单时间"这样的字段，往往我们会在程序中获取当前系统时间插入到数据库或者直接从数据库服务器获取时间。那我们的订单子系统是集群化部署，或者我们的数据库也是分库分表的集群化部署，然而他们的系统时钟缺不一致，比如有一台服务器的时间是昨天，那么这个时候下单时间就成了昨天，那我们的数据将会混乱

## 二、集群时钟同步配置

### 同步思路

- 各服务器节点都连接互联网

  ```shell
  #使用 ntpdate 网络时间同步命令 /etc/ntp.conf
  ntpdate -u ntp.api.bz  #从一个时间服务器同步时间
  ```

  > windows有计划任务
  > Linux也有定时任务，crond，可以使用linux的定时任务，每隔10分钟执行一次ntpdate命令

- 分布式集群中某一个服务器节点可以访问互联网或者所有节点都不能够访问互联网

  选取其中一台作为时间服务器，其他服务器从这台同步

  ```shell
  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
  ```

