【生产级实战】Linux 集群时间同步详解(NTP + Cron,超详细)

【生产级实战】Linux 集群时间同步详解(NTP + Cron,超详细)

一:概述

👍本文将以 CentOS 集群 为例,详细讲解 内网环境下的 NTP 集群时间同步方案,一步一步带你从原理到落地。

如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期和公网时间进行校准;

如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差,导致集群执行任务时间不同步。

找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,生产环境根据任务对时间的准确程度要求周期同步。测试环境为了尽快看到效果,采用1分钟同步一次。


二:方案

✅方案设计:

  • 选 1 台服务器作为时间服务器

  • 其他节点定时向该服务器同步时间

✅示例集群:

  • hadoop102 → 时间服务器(NTP Server)
  • hadoop103 → 客户端
  • hadoop104 → 客户端

✅同步策略:

  • 测试环境:每 1 分钟同步一次

  • 生产环境:可调整为 5~10 分钟


三:部署

1)时间服务器(hadoop102)配置

  1. 查看 ntpd 服务状态

    bash 复制代码
    [lmc@hadoop102 ~]$ sudo systemctl status ntpd
  2. 启动 ntpd 服务

    bash 复制代码
    [lmc@hadoop102 ~]$ sudo systemctl start ntpd
  3. 设置 ntpd 开机自启

    bash 复制代码
    [lmc@hadoop102 ~]$ sudo systemctl enable ntpd
  4. 验证是否已设置为开机启动

    bash 复制代码
    [lmc@hadoop102 ~]$ sudo systemctl is-enabled ntpd
  5. 配置 NTP 服务文件

    bash 复制代码
    [lmc@hadoop102 ~]$ sudo vim /etc/ntp.conf
    bash 复制代码
    # 允许 192.168.2.0 网段的机器同步时间
    restrict 192.168.2.0 mask 255.255.255.0 nomodify notrap
    
    # 当外部时间源不可用时,使用本地时间作为时间源
    server 127.127.1.0
    fudge 127.127.1.0 stratum 10
    
    # 集群在内网环境,禁止使用公网时间服务器
    #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
  6. 配置硬件时间同步

    含义:系统时间同步的同时,同步硬件时钟,防止重启后时间回退。

    bash 复制代码
    [lmc@hadoop102 ~]$ sudo vim /etc/sysconfig/ntpd
    bash 复制代码
    # 添加这一行即可
    SYNC_HWCLOCK=yes
  7. 重启 ntpd 服务

    含义:系统时间同步的同时,同步硬件时钟,防止重启后时间回退。

    bash 复制代码
    [lmc@hadoop102 ~]$ sudo systemctl restart ntpd

2)客户端节点(hadoop103 / hadoop104)配置

此处以hadoop103举例,hadoop104同样配置即可

  1. 关闭客户端 ntpd 服务

    bash 复制代码
    [lmc@hadoop103 ~]$ sudo systemctl stop ntpd
    [lmc@hadoop103 ~]$ sudo systemctl disable ntpd
  2. 配置定时任务同步时间

    bash 复制代码
    [lmc@hadoop103 ~]$ sudo crontab -e
    bash 复制代码
    # 添加这一行即可
    */1 * * * * /usr/sbin/ntpdate hadoop102
  3. 查看定时任务是否生效

    bash 复制代码
    [lmc@hadoop103 ~]$ sudo crontab -l

3)验证时间同步效果

  1. 手动修改某台客户端时间

    bash 复制代码
    sudo date -s "2022-08-08 10:08:05"
  2. 等待 1 分钟后查看时间 如果时间恢复为与 hadoop102 一致,说明同步成功 ✅

    bash 复制代码
    date

总结

在内网集群环境中,应选取一台服务器作为 NTP 时间服务器,其余节点通过定时任务同步时间,确保整个集群时间高度一致,为分布式系统稳定运行打下基础。

生产环境建议(经验总结):

  • 时间服务器 只保留 1 台
  • 客户端 只用 ntpdate + cron
  • 不要多台互相同步
  • Hadoop / Kafka / ZK 集群部署前 先同步时间
相关推荐
tedcloud1231 小时前
Wand-Enhancer 怎么搭建?开源 Wand 客户端增强与远程控制工具介绍
大数据·服务器·人工智能·开源·音视频
Emily156853598703 小时前
ABB CI867K01 3BSE043660R1
服务器·plc·dcs·abb·ci867k01·3bse043660r1·工控模块
考虑考虑3 小时前
docker compose环境变量替换
运维·后端·自动化运维
Java陈序员3 小时前
轻量运维面板!一款现代化的服务器控制面板工具!
运维·服务器·python·react.js·github
bosins4 小时前
WSL 迁移指南:如何将 Linux 环境完整复制到另一台电脑
linux·运维·服务器
IT利刃出鞘4 小时前
Docker Compose--安装WordPress--方法/示例
运维·docker·容器
企鹅的蚂蚁5 小时前
LubanCat RK3588 实时 Linux 开发(六):启用 gs_usb 驱动并完成 USB-CAN 收发
linux·rk3588·linux驱动·socketcan·gs_usb·usb-can
2601_962299885 小时前
Linux执行Python脚本方法
linux·python·脚本·解释器·shebang
snow@li5 小时前
服务器运维:Linux命令速查手册(全景梳理)
linux·服务器·网络
handler015 小时前
【Linux】线程与虚拟内存的底层世界
linux·运维·服务器·c++·线程·虚拟地址空间·共享内存