• 如何使用npt结合crontab实现集群之间的时间同步


    当我们每个机器的时间都不一致时,假如有一个定时任务,定的10点启动执行。结果namenode十点了启动任务,可是分配到的执行节点DataNode才九点五十导致任务执行失败怎么办?
    这就需要将机器之间的时间保持一致

    时间同步方式:找一台机器,作为时间服务器,所有的机器与这台机器的时间进行同步,如每隔十分钟同步一次。

    操作

    切换到root用户检查是否安装了ntp

    我们以102作为我们的时间主机,向其他机器发布同步时间

    [shaozhiqi@hadoop102 ~]$ su root
    Password:
    [root@hadoop102 shaozhiqi]# rpm -qa|grep ntp
    ntp-4.2.6p5-25.el7.centos.2.x86_64
    fontpackages-filesystem-1.44-8.el7.noarch
    ntpdate-4.2.6p5-25.el7.centos.2.x86_64
    python-ntplib-0.3.2-1.el7.noarch
    [root@hadoop102 shaozhiqi]#查
    

    编辑ntp的配置文件

    我里面带//的注释在配置时应该删除,这里为了方便说明

    [root@hadoop102 shaozhiqi]# vim /etc/ntp.conf
    # Hosts on local network are less restricted.
    #授权所有机器可以从这台机器上获取时间同步
    restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap  //我们操作放开
    
    # Use public servers from the pool.ntp.org project.
    # Please consider joining the pool ([http://www.pool.ntp.org/join.html](http://www.pool.ntp.org/join.html)).
    //注掉下面四项,让集群局域网中不适用其他网略时间
    #server 0.centos.pool.ntp.org iburst  //我们操作注掉
    #server 1.centos.pool.ntp.org iburst  //我们操作注掉
    #server 2.centos.pool.ntp.org iburst  //我们操作注掉
    #server 3.centos.pool.ntp.org iburst //我们操作注掉
    //添加节点,当上述机器的丢失网略,还可以作为集群的时间同步机器
    server 127.127.1.0
    fudge 127.127.0 stratum 10
    

    修改/etc/sysconfig/ntpd,让硬件时间和系统时间一起同步,加上保险些

    [root@hadoop102 ~]# vim /etc/sysconfig/ntpd
    # Command line options for ntpd
    OPTIONS="-g"
    SYNC_HWCLOCK=yes
    

    重启102的时间同步

    先查看状态是 Active: inactive (dead)

    [root@hadoop102 ~]# service ntpd status
    Redirecting to /bin/systemctl status ntpd.service
    ● ntpd.service - Network Time Service
     Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)
     Active: inactive (dead)
    [root@hadoop102 ~]#
    

    启动后台查看状态是Active: active (running)

    [root@hadoop102 ~]# service ntpd status
    Redirecting to /bin/systemctl status ntpd.service
    ● ntpd.service - Network Time Service
     Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)
     Active: active (running) since Sat 2019-06-29 11:33:51 CST; 12s ago
     Process: 3174 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS)
     Main PID: 3176 (ntpd)
     CGroup: /system.slice/ntpd.service
     └─3176 /usr/sbin/ntpd -u ntp:ntp -g
    Jun 29 11:33:51 hadoop102 ntpd[3176]: Listen normally on 2 lo 127.0.0.1 UDP 123
    Jun 29 11:33:51 hadoop102 ntpd[3176]: Listen normally on 3 eth0 192.168.1.102 UDP 123
    Jun 29 11:33:51 hadoop102 ntpd[3176]: Listen normally on 4 virbr0 192.168.122.1 UDP 123
    Jun 29 11:33:51 hadoop102 ntpd[3176]: Listen normally on 5 lo ::1 UDP 123
    Jun 29 11:33:51 hadoop102 ntpd[3176]: Listen normally on 6 eth0 fe80::250:56ff:fe3a:7b92 UDP 123
    Jun 29 11:33:51 hadoop102 ntpd[3176]: Listening on routing socket on fd #23 for interface updates
    Jun 29 11:33:51 hadoop102 ntpd[3176]: 0.0.0.0 c016 06 restart
    Jun 29 11:33:51 hadoop102 ntpd[3176]: 0.0.0.0 c012 02 freq_set kernel 0.000 PPM
    Jun 29 11:33:51 hadoop102 ntpd[3176]: 0.0.0.0 c011 01 freq_not_set
    Jun 29 11:33:52 hadoop102 ntpd[3176]: 0.0.0.0 c514 04 freq_mode
    [root@hadoop102 ~]#
    

    设置永久启动

    [root@hadoop102 ~]# chkconfig ntpd on
    Note: Forwarding request to 'systemctl enable ntpd.service'.
    Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
    [root@hadoop102 ~]#
    

    102机器配置结束

    配置103/104 在root用户

    其他机器每隔10分支与时间服务器同步一次
    crontab –e 表示要去编写crate脚本,e代表编辑
    103机器

    [root@hadoop103 ~]# crontab -e
    no crontab for root - using an empty one
    */10 * * * * /usr/sbin/ntpdate hadoop102
    

    104 机器

    [root@hadoop104 ~]# crontab -e
    no crontab for root - using an empty one
    */10 * * * * /usr/sbin/ntpdate hadoop102
    

    配置结束

    验证

    修改时间语法:date -s "2019-6-28 10:10:10"//表示修改当前机器的时间点为某个时间
    验证:修改103的时间,今天是29号我们改为28号,看等会会不会同步

     [root@hadoop103 ~]# date
    Sat Jun 29 11:52:44 CST 2019
    [root@hadoop103 ~]# date -s "2019-6-28 10:10:10"
    Fri Jun 28 10:10:10 CST 2019
    [root@hadoop103 ~]# date
    Fri Jun 28 10:10:18 CST 2019
    [root@hadoop103 ~]#
    

    验证:同样修改104的时间,今天是29号我们改为28号,看等会会不会同步

    [root@hadoop104 ~]# date
    Sat Jun 29 11:53:50 CST 2019
    [root@hadoop104 ~]# date -s "2019-6-28 10:10:10"
    Fri Jun 28 10:10:10 CST 2019
    [root@hadoop104 ~]# date
    Fri Jun 28 10:10:15 CST 2019
    [root@hadoop104 ~]#
    

    验证结果:103

    [root@hadoop103 ~]# date
    Fri Jun 28 10:10:18 CST 2019
    [root@hadoop103 ~]# date
    Sat Jun 29 11:55:42 CST 2019
    [root@hadoop103 ~]#
    

    验证结果:104

    [root@hadoop104 ~]# date
    Fri Jun 28 10:10:15 CST 2019
    [root@hadoop104 ~]# date
    Sat Jun 29 11:56:19 CST 2019
    [root@hadoop104 ~]#
    

    配置成功 O(∩_∩)O哈哈~

  • 相关阅读:
    SpringCloud(一)概念及设计
    SpringBoot2(十三)HttpMessageConverter
    SpringBoot2(十二)当Shiro遇上RedisCache
    SpringBoot2(十一)集成RedisCache
    UDP协议解析 以及和TCP协议的区别
    TCP协议解析及相关问题
    mybatis缓存机制
    MYSQL数据库类型与JAVA类型对应表
    Java HashMap问题
    Java数据库事务四大特性以及隔离级别
  • 原文地址:https://www.cnblogs.com/shaozhiqi/p/11534865.html
Copyright © 2020-2023  润新知