一、配置说明
1.1 配置背景
Linux 集群中节点间时钟同步是分布式组件(如 HBase、Hadoop)协同工作的核心要求,NTP(Network Time Protocol)是实现时钟同步的标准工具,本手册基于 VirtualBox 中 CentOS 7 集群(1 台 master + 多台 slave)完成配置。
1.2 角色划分
|---------------|---------|------------------|
| 节点 | 角色 | 功能 |
| master | NTP 服务端 | 提供标准时间,作为同步源 |
| slave1/slave2 | NTP 客户端 | 定时同步 master 节点时间 |
二、前置操作:所有节点安装 NTP 工具
在 master、slave1、slave2 节点分别执行以下命令,安装 NTP 基础工具:
yum install -y ntp ntpdate
三、master 节点(NTP 服务端)配置
3.1 编辑 NTP 配置文件
执行命令打开配置文件:
vi /etc/ntp.conf
修改/添加以下核心配置(注释原有外网时间源,配置内网同步规则):
# 允许 192.168.56.0/24 网段(集群内网)节点同步时间 restrict 192.168.56.0 mask 255.255.255.0 nomodify notrap # 注释掉外网默认时间源(集群内网独立同步) # 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.1.0 stratum 10
3.2 启动并设置 NTP 服务开机自启
# 启动 NTP 服务 systemctl start ntpd # 设置开机自启 systemctl enable ntpd # 查看服务状态(确认 Active: active (running)) systemctl status ntpd
3.3 防火墙配置(按需执行)
-
若防火墙已运行,放行 NTP 服务端口(123/UDP):
firewall-cmd --add-service=ntp --permanent firewall-cmd --reload -
若防火墙未运行(提示
FirewallD is not running),可直接跳过此步骤。
四、slave 节点(NTP 客户端)配置
4.1 手动同步 master 时间(立即对齐)
执行以下命令,手动同步一次 master 时间(解决即时时间差):
# 方式1:通过主机名同步(推荐,需配置 /etc/hosts 解析) ntpdate master # 方式2:通过 IP 同步(若主机名解析失败,替换为 master 实际 IP) ntpdate 192.168.56.110
✅ 成功同步输出示例:
12 Mar 20:00:00 ntpdate[1234]: adjust time server 192.168.56.110 offset 0.005678 sec
4.2 配置自动同步(永久生效)
执行命令打开配置文件:
vi /etc/ntp.conf
注释原有外网时间源,添加同步 master 配置:
# 优先同步 master 节点时间 server master prefer
4.3 启动 slave 节点 NTP 服务
# 启动服务 systemctl start ntpd # 设置开机自启 systemctl enable ntpd # 查看服务状态(确认运行) systemctl status ntpd
五、验证时钟同步效果
5.1 基础验证(所有节点执行)
执行 date 命令,检查各节点时间是否一致(秒级相同即为成功):
date
✅ 成功输出示例(所有节点时间一致):
Thu Mar 12 20:01:30 CST 2026
5.2 高级验证(查看同步状态)
执行 ntpq -p 命令,查看 NTP 同步节点列表,确认 master 出现在列表中:
ntpq -p
六、常见问题及解决方案
|-------------------------------------------------------------|--------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|
| 问题现象 | 原因 | 解决方法 |
| ntpdate 提示 no server suitable for synchronization found | 1. master 节点 NTP 服务未启动<br>2. 节点间网络不通<br>3. master 防火墙拦截 123 端口 | 1. 执行 systemctl start ntpd 启动 master NTP 服务<br>2. 执行 ping master 验证网络连通性<br>3. 关闭防火墙或放行 NTP 端口 |
| 主机名同步失败,IP 同步成功 | /etc/hosts 未配置 master 主机名解析 | 在所有节点执行:<br>echo "192.168.56.110 master" >> /etc/hosts |
| 同步后时间又逐渐偏移 | NTP 自动同步周期较长 | 配置定时任务(可选):<br>echo "*/5 * * * * /usr/sbin/ntpdate master >> /var/log/ntp.log 2>&1" >> /var/spool/cron/root<br>systemctl restart crond |
七、配置总结
-
核心流程:所有节点装 NTP → master 配置服务端 → slave 手动同步+配置自动同步 → 验证时间一致性;
-
关键注意:master 需确保 NTP 服务运行,slave 需配置主机名解析或使用 IP 同步;
-
验证标准:所有节点
date命令输出时间秒级一致,满足 HBase/Hadoop 集群时钟同步要求。