Linux集群时间同步配置指南

好的,在 Linux 集群中配置时间同步服务是确保所有节点协调一致、避免因时间差异导致各种诡异问题的关键步骤。下面我将为您提供一个详细、分步的指南。

目前,最主流和推荐的工具是 Chrony,它比传统的 NTP 更适合现代系统,尤其是在动态环境(如虚拟机、云环境)中,它能更快地同步并更好地处理时钟漂移。

方案一:使用 Chrony(推荐)

这个方案通常包含一个主节点(作为集群的时间源,也可以从外部服务器同步)和多个从节点(从主节点同步时间)。

环境假设
  • 主节点 IP: 192.168.1.10
  • 从节点 IP: 192.168.1.11, 192.168.1.12, …
  • 集群网段: 192.168.1.0/24

步骤 1:在所有节点上安装 Chrony

首先,在集群的所有节点上安装 Chrony 软件包。

对于 CentOS / RHEL / Rocky Linux / AlmaLinux:

sudo yum install -y chrony    # 对于 CentOS 7/RHEL 7
sudo dnf install -y chrony    # 对于 CentOS 8+/RHEL 8+/Rocky/AlmaLinux

对于 Ubuntu / Debian:

sudo apt update
sudo apt install -y chrony

步骤 2:配置主节点(时间源服务器)
  1. 编辑 Chrony 配置文件

    sudo vim /etc/chrony.conf
    
  2. 修改配置(关键部分):

    • 允许集群网段访问:找到 allow 指令,添加你的集群网段。
      # 允许 192.168.1.0/24 网段的所有主机从此节点同步时间
      allow 192.168.1.0/24
      
    • 配置上游时间服务器(可选但推荐):注释掉原有的 pool 行,添加更稳定的源。中国的用户可以使用阿里云或腾讯云的 NTP 服务器。
      # 使用阿里云 NTP 服务器
      server ntp.aliyun.com iburst
      server time1.aliyun.com iburst
      
      # 或者使用腾讯云 NTP 服务器
      # server ntp.tencent.com iburst
      
      # iburst 选项表示如果服务器无响应,会发送一串数据包加快初始同步
      
    • 启用本地时间源(可选):如果主节点无法访问外网,你可以让它使用自己的本地时钟作为源(不推荐用于需要绝对精确时间的生产环境)。取消注释以下行:
      # 使用本地硬件时钟作为备份
      # local stratum 10
      
      这会将本地时钟设置为第 10 层(stratum 10)源,只有在完全隔离的网络中才使用。
  3. 保存并退出编辑器

  4. 启动并启用 Chrony 服务

    sudo systemctl enable chronyd
    sudo systemctl restart chronyd
    
  5. 验证主节点同步状态

    chronyc sources -v
    

    输出应该显示 ^*^+ 在你配置的外部服务器(如 ntp.aliyun.com)旁边,表示已成功同步。


步骤 3:配置从节点(客户端)
  1. 编辑 Chrony 配置文件

    sudo vim /etc/chrony.conf
    
  2. 修改配置

    • 注释掉默认的 pool 服务器:在前面加上 #
    • 添加主节点作为时间源
      server 192.168.1.10 iburst
      
    • (可选)允许其他节点从此节点同步:如果你希望集群内节点间可以互相冗余,也可以添加 allow 指令,但通常从节点不需要。
  3. 保存并退出编辑器

  4. 启动并启用 Chrony 服务

    sudo systemctl enable chronyd  # 或 chrony on Ubuntu/Debian
    sudo systemctl restart chronyd # 或 chrony on Ubuntu/Debian
    

    注意:在较新的 Ubuntu/Debian 上,服务名可能就是 chrony。可以用 systemctl list-units | grep chrony 确认。


步骤 4:验证所有节点的时间同步

在所有从节点上执行以下命令:

  1. 检查同步源

    chronyc sources -v
    

    输出应显示 ^*^+ 在你的主节点 IP (192.168.1.10) 旁边。

    • ^* 表示当前正在使用的同步源。
    • ^+ 表示可选的候选同步源。
  2. 检查同步状态

    chronyc tracking
    

    查看 Last offsetRoot delay 等值,它们应该很小(通常是几毫秒或几十毫秒),表示同步良好。

  3. 检查节点间时间差
    你可以在主节点和从节点上分别执行 date 命令,观察输出时间是否一致。对于更精确的检查,可以使用:

    # 在一台机器上安装后,可以比较两台机器的时间差
    # 需要先安装 sudo apt install ntpdate 或 sudo yum install ntpdate
    ntpdate -q 192.168.1.10
    

方案二:使用 NTP(传统方式)

虽然 Chrony 是趋势,但有些旧系统或特定环境可能仍在使用传统的 ntpd

  1. 安装 NTP
    CentOS/RHEL:

    sudo yum install ntp
    

    Ubuntu/Debian:

    sudo apt install ntp
    
  2. 配置主节点 (/etc/ntp.conf):

    # 允许集群网段
    restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
    
    # 配置上游服务器
    server ntp.aliyun.com iburst
    server time1.aliyun.com iburst
    
  3. 配置从节点 (/etc/ntp.conf):

    server 192.168.1.10 iburst
    
  4. 启动服务

    sudo systemctl enable ntpd
    sudo systemctl restart ntpd
    
  5. 验证

    ntpq -p
    

防火墙配置

确保主节点的 UDP 123 端口对从节点开放。

对于 firewalld (CentOS/RHEL):

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="udp" port="123" accept'
sudo firewall-cmd --reload

对于 ufw (Ubuntu/Debian):

sudo ufw allow from 192.168.1.0/24 to any port 123 proto udp

总结

项目推荐方案 (Chrony)传统方案 (NTP)
适用场景现代系统,动态环境(云、虚拟机)旧系统,稳定物理环境
同步速度,能快速收敛时间差
配置易用性配置文件简单直观稍复杂
资源占用相对较高

对于新建的 Linux 集群,强烈建议使用 Chrony。它更高效、更精准,并且是许多现代 Linux 发行版的默认时间同步工具。

按照上述步骤操作,你的 Linux 集群应该能够实现完美的时间同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值