CentOS 7 使用自建时间服务器 进行时间同步

  • Web层的机器可以连接外网,但是数据层(数据库)的服务器不让连外网,为了确保系统各个子系统日志时间的统一,需要做一个时间同步。
  • NTP时钟同步方式说明
    NTP在linux下有两种时钟同步方式,分别为直接同步和平滑同步:
    • 直接同步
      使用ntpdate命令进行同步,直接进行时间变更。如果服务器上存在一个12点运行的任务,当前服务器时间是13点,但标准时间时11点,使用此命令可能会造成任务重复执行。因此使用ntpdate同步可能会引发风险,因此该命令也多用于配置时钟同步服务时第一次同步时间时使用。
    • 平滑同步
      使用ntpd进行时钟同步,可以保证一个时间不经历两次,它每次同步时间的偏移量不会太陡,是慢慢来的,这正因为这样,ntpd平滑同步可能耗费的时间比较长。
  • 时间同步服务器
    http://www.pool.ntp.org/zone/cn网站包含全球的标准时间同步服务,也包括对中国时间的同步,对应的URL为cn.pool.ntp.org,在其中也描述了ntp配置文件中的建议写法:
    server 1.cn.pool.ntp.org
    server 2.asia.pool.ntp.org
    server 3.asia.pool.ntp.org
  • 检查ntp服务是否安装
    • rpm -q ntp
    • 如果有相关的包名显示,比如ntp-4.2.6p5-22.el7.x86_64说明安装过了
    • 如果没有,yum -y install ntp
    • 如果是内网机器需要去下载rpm包,搜索rpm可以去http://rpm.pbone.net/
  • 刚从rpm.pbone.net上下来,我觉等你搜完ntp包的依赖,你就会想打我,还有就是我源码安装成功了,还tm给我报no server suitable for synchronization found,所以,咱们还是用rdate吧,这个rpm包完全无依赖,你要诚心找乐子你就去ntp的官网去下源码,用源码安装,避免去找一大堆的依赖包,顺便发现一篇不错的ntp博客,所以上面的一堆作废,用rdate从头开始,head first rdate:
  • 时间更新计划
    • 网络层服务器(一般是应用服务器,可以连接外网)
      • 自身使用定时任务从time.nist.gov时间服务器上定时更新时间
      • 开启xinetd服务,作为内网机器的时间服务器
    • 数据层服务器(数据层服务器,只能内网链接)
      • 使用定时任务从网络层时间服务器上定时更新时间
    • 另外是使用rdate -s 时间服务器地址直接将时间写入到系统时间,如果你的应用如果有依赖小时级别的时间任务(timer或者sleep)所以部署应用前使用前尽量将各个服务器大致时间同步到分钟,这样不至于同步时间的跨度太大,导致定时任务执行多次或者没执行,直白点说就是rdate同步时间是不平滑的。
  • 准备
    • 去rpmfind网站直接搜索rdate,下载相应系统版本的安装包,这个包没有依赖,非常方便,给你所有要时间同步的机器装上
  • 开启时间服务器
    • 安装xinetd yum install -y xinetd
    • vi /etc/xinetd.d/time-stream
    • 将配置文件里的disable = yes 改为disable = no,保存并退出vi
    • 启动xinetdservice xinetd start
  • 网络层时间同步计划任务
    • 新建一个cron文件,内容如下
    # 每天中午十二点同步一次时间
    0 12 * * * /usr/bin/rdate -s time-a.nist.gov
    
  • 数据层时间同步计划任务
    • 新建一个cron文件,内容如下
    # 每天中午十二点同步一次时间
    0 12 * * * /usr/bin/rdate -s 网络层开启时间服务的服务器ip
    
  • 关于crontab
    • 将cron文件加入到定时任务中:crontab *.cron
    • 查看已有的crontab任务:crontab -l
    • 查看定时任务执行的日志:tail -f /var/log/cron
    • 删除定时任务:crontab -e,把你要删除的任务从这个列表里删除
    • 删除全部定时任务crontab -r

你可能感兴趣的:(CentOS 7 使用自建时间服务器 进行时间同步)