分布式集群架构场景化解决方案(二)-集群环境下的时钟同步问题

Scroll Down

分布式集群架构场景化解决方案(二)-集群环境下的时钟同步问题

我们平常所用的集群一般都是会有多台机器的,如果各台机器的时间不一致会导致很多问题,比如结算日期甚至比下单日期还早,或者是本应该是当天处理的数据,但是机器的时间显示是前一天,导致数据错漏无法处理.
image-20200623225202130

集群时钟同步设置

分两种场景,一种场景是集群的各个节点都可以连接互联网,那么我们可以直接连接互联网的国家授时中心更新时间,一种是只有一台机器能够连接互联网或者所有的机器都不可以连接互联网,这样我们需要从中选出一台机器作为时间服务器,其他的机器统一到这台机器上进行时间的更新

都可以连接互联网的集群设置

  • 查看本机是否安装了ntpdate服务,安装时间同步软件

    • rpm -qa|grep ntp
    • yum install -y ntpdate
    • yum install -y ntp
  • 查看与NTP服务器是否能通

  • NTP服务器(上海) :ntp.api.bz

  • 中国ntp服务器:cn.pool.ntp.org pool.ntp.org

  • 使用ntpdate更新最新的时间

    • ntpdate -u ntp.api.bz

image-20200623231059636

配置定时任务,每隔1小时执行一次

使用Cron表达式,配置linux下的定时同步时间的任务

  • 手工修改当前时间为错误的时间

    • date -s "12:00:00"

      image-20200623231638309

  • 配置定时任务,使用crontab -e命令

    • */10 * * * * /usr/sbin/ntpdate -u ntp.api.bz >/dev/null 2>&1 & 每10分钟执行一次ntpdate -u ntp.api.bz 命令
  • 等待10分钟过后

设置某台机器为时间同步节点集群设置

选取集群中的某个服务器节点A(172.17.0.17)作为时间服务器(整个集群时间从这台服务器同步,如果这台服务器能够访问互联网,可以让这台服务器和网络时间保持同步,如果不能就手动设置某个时间)

  • 把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
    
  • 集群中其他节点就可以从A服务器同步时间了,使用命令ntpdate 172.17.0.17即可