一:概述
如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期和公网时间进行校准;
介绍内网环境下 Linux 集群的时间同步方案。通过指定一台服务器作为 NTP 时间服务器,其余客户端节点通过定时任务调用 ntpdate 进行时间校准。测试环境建议每分钟同步一次,生产环境可调整为 5~10 分钟。配置时需确保时间服务器开启 ntpd 服务并允许特定网段同步,客户端关闭 ntpd 服务仅保留 cron 定时任务。此方案适用于 Hadoop、Kafka 等分布式系统部署前的时间一致性保障。

如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期和公网时间进行校准;
如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差,导致集群执行任务时间不同步。
找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,生产环境根据任务对时间的准确程度要求周期同步。测试环境为了尽快看到效果,采用 1 分钟同步一次。
方案设计:
示例集群:
同步策略:
重启 ntpd 服务
含义:系统时间同步的同时,同步硬件时钟,防止重启后时间回退。
sudo systemctl restart ntpd
配置硬件时间同步
含义:系统时间同步的同时,同步硬件时钟,防止重启后时间回退。
sudo vim /etc/sysconfig/ntpd
# 添加这一行即可 SYNC_HWCLOCK=yes
配置 NTP 服务文件
sudo vim /etc/ntp.conf
# 允许 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
验证是否已设置为开机启动
sudo systemctl is-enabled ntpd
设置 ntpd 开机自启
sudo systemctl enable ntpd
启动 ntpd 服务
sudo systemctl start ntpd
查看 ntpd 服务状态
sudo systemctl status ntpd
此处以 hadoop103 举例,hadoop104 同样配置即可
查看定时任务是否生效
crontab -l
配置定时任务同步时间
crontab -e
# 添加这一行即可 */1 * * * * /usr/sbin/ntpdate hadoop102
关闭客户端 ntpd 服务
sudo systemctl stop ntpd
sudo systemctl disable ntpd
等待 1 分钟后查看时间
如果时间恢复为与 hadoop102 一致,说明同步成功。
date
手动修改某台客户端时间
sudo date -s "2022-08-08 10:08:05"
在内网集群环境中,应选取一台服务器作为 NTP 时间服务器,其余节点通过定时任务同步时间,确保整个集群时间高度一致,为分布式系统稳定运行打下基础。
生产环境建议(经验总结):

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online