Ubuntu 内网多台服务器时间同步方案(适用于临时能上外网的环境)

哎,最近项目是运行在内网环境下的,出现了由于时间不同步导致的bug。一般来讲,几台服务器的时间不一致,会带来很多问题,比如日志时间对不上、分布式服务出现异常,等等。项目上现在有三台服务器,其中只有一台可以临时访问外网,另外两台完全是内网。将来可能会彻底断网。为了解决时间不同步的问题,我整理了下面这个方案。

一、方案目标

让三台服务器的时间保持一致

  1. 有外网时,能同步公网的标准时间
  2. 无外网时,在内网里保持同步

二、服务器情况

角色IP 地址说明
S1192.168.10.10主服务器,可临时访问外网
S2192.168.10.11从服务器,纯内网
S3192.168.10.12从服务器,纯内网

我们会让 S1 做时间同步的“主机”,S2 和 S3 跟着它同步时间。

三、操作步骤

1. 所有服务器先做这些准备工作

# 关闭系统自带的时间同步服务
sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd# 安装 chrony(我们用它来同步时间)
sudo apt update
sudo apt install -y chrony# 设置时区为中国时间(可根据实际调整)
sudo timedatectl set-timezone Asia/Shanghai# 同步系统时间到主板时钟
sudo hwclock --systohc

2. 配置主服务器(S1)

我们要让 S1 能自己从外网同步时间,然后把时间提供给内网其它服务器。

编辑配置文件:

sudo nano /etc/chrony/chrony.conf

替换成下面这些内容:

# 公网时间源
server cn.pool.ntp.org iburst
server ntp.aliyun.com iburst
server ntp.tencent.com iburst# 允许内网访问这个时间服务(根据实际网段调整)
allow 192.168.10.0/24# 没有外网时,S1 用自己的时间当源
local stratum 10# 加快第一次同步速度
makestep 1.0 3# 其他默认配置
driftfile /var/lib/chrony/chrony.drift
rtcsync
logdir /var/log/chrony

保存并退出后,重启服务:

sudo systemctl enable --now chrony

3. 配置内网客户端(S2 和 S3)

让 S2 和 S3 只和 S1 同步时间。

编辑配置文件:

sudo nano /etc/chrony/chrony.conf

内容如下:

# 指向主服务器 S1
server 192.168.10.10 iburst prefer# 同步时间时快速修正
makestep 1.0 3# 其他默认配置
driftfile /var/lib/chrony/chrony.drift
rtcsync
logdir /var/log/chrony

保存并退出后,重启服务:

sudo systemctl enable --now chrony

4. 验证同步是否成功

S1 上查看同步源:

chronyc sources -v

如果有外网,它应该会显示外面的时间源。

S2 / S3 上查看同步情况:

chronyc sources -v

你应该能看到 S1 的 IP 地址(192.168.10.10),前面有 ^* 标志,说明它被选作时间源。

还可以查看当前系统时间和参考源偏差:

chronyc tracking

四、原理简单说一下

chrony 是一个时间同步工具,比老的 ntpd 更快更稳定。

  1. 有外网时,S1 会去公网同步标准时间。
  2. 没外网时,S1 会用自己主板的时间来继续提供服务,虽然不是很精确,但几台机器之间不会偏太多。
  3. S2 和 S3 只信任 S1,不和外网同步。

这样三台机器的时间就始终保持一致。

五、优点和注意点

**优点:**有外网就用外网时间,没外网也能内网自给自足。所有服务器时间统一,不容易出错。

注意事项:
如果 S1 防火墙开启了,记得放开 UDP 的 123 端口(NTP 用的)。
bash sudo ufw allow from 192.168.10.0/24 to any port 123 proto udp

这个方案适合内网环境,有更高要求的话可以考虑接 GPS 授时设备。

六、总结

三台服务器,一台临时能访问外网,搭个 chrony 时间服务器。其它服务器跟着它同步。外网断了也不怕,时间不会乱。下次项目中若有类似需求,就可以按照这个方法部署,很快就能搞定。如果有更多服务器,也可以让它们都指向 S1,同样有效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/94305.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

延长电池寿命的低Iq技术

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。一、概述随着电池供电型应用的激增,人们对质优价廉的电池和电池包的需求持续猛涨。电池制造商们不断采用新的化学物…

QT 如何实现enum与字符串的互转

将enum中定义的枚举值,以字符串的形式写入文件,同时也能从字符串转为枚举值。举例说明: ColorSelector中的Colors枚举,我们希望 kColorRed 这个写入到本地文件时,可以直接保存“kColorRed”,而非kColorRed对…

SLAM卷不动了,机器人还有哪些方向能做?

关注gongzhonghao【CVPR顶会精选】众所周知,机器人因复杂环境适应性差、硬件部署成本高,对高效泛化一直需求迫切。再加上多传感器协同难题、真实场景数据获取不易,当下对迁移学习 机器人智能融合的研究也就更热烈了。不过显然,这…

H.266 vs H.265/AV1/H.264:从工程落地看下一代视频系统的技术演进

一、背景:编解码标准演进背后的技术驱动 视频编码标准的更迭,从未只是一次简单的技术升级,而是对码率压缩效率、编码复杂度与画质质量三者之间平衡点的持续探索。在 H.264 成为全平台事实标准的十余年里,它成功支撑了 SD 至 1080…

Javascript面试题及详细答案150道之(031-045)

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…

Git如何同步本地与远程仓库并解决冲突

在团队协作开发中,保持本地仓库与远程仓库同步是至关重要的。本文将详细介绍如何使用 Git 更新本地仓库至最新远程版本,并深入解析冲突的产生原因及解决方法。一、同步本地与远程仓库1. 检查远程仓库配置首先,确保本地仓库已正确关联远程仓库…

Hadoop MapReduce 3.3.4 讲解~

✨博客主页: https://blog.csdn.net/m0_63815035?typeblog 💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 📢博客专栏: https://blog.csdn.net/m0_63815035/cat…

1、【数学】【硬币悖论】旋转硬币问题

问题描述: 两个相同的硬币,半径都是 rrr。一个硬币(称为“动硬币”)沿着另一个固定不动的硬币(“静硬币”)的外边缘无滑动地滚动一圈,回到起始位置。问:动硬币自身旋转了几圈&#x…

【盘古100Pro+开发板实验例程】FPGA学习 | PCIE 通信测试实验例程

本原创文章由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处(www.meyesemi.com) 1. 实验简介 实验目的: 完成 PCIE 通信测试。 实验环境: Window11 PDS2022.2-SP6.4 硬件环…

基于高阶累积量的调制识别

基于高阶累积量的调制识别是一种利用信号的高阶统计特性来识别不同调制方式的方法。 1. 基本原理 高阶累积量(Higher-Order Cumulants)是信号处理中的一个重要工具,能够捕捉信号的非高斯特性。与高阶矩相比,高阶累积量对高斯噪声具…

Java常用数据结构入门

Java常用数据结构入门 前言 数据结构是程序设计中的基础,掌握常用数据结构能帮助你更高效地解决问题。本文面向Java初学者,介绍Java中常用的数据结构及其基本使用方法。 1. 数组 (Array) 数组是最基础的数据结构,可以存储固定大小的同类型…

Android GPU测试

一、Basemark GPU 可选择进行vulkan和opengl测试: 二、GFXBench 进行各种offscreen测试(包括曼哈顿离屏) 这是由GFXBench图形性能测试套件提供的一个著名3D图形渲染场景。 它模拟了一个复杂的未来都市环境(类似曼哈顿&#xff…

2025年6月最新SCI-灰熊脂肪增长优化算法Grizzly Bear Fat Increase-附Matlab免费代码

引言 本期介绍一种受自然启发的创新算法——灰熊脂肪增长优化算法Grizzly Bear Fat Increase optimizer,GBFIO。GBFIO算法模仿灰熊为准备过冬而积累身体脂肪的自然行为,借鉴了它们的狩猎、捕鱼、吃草、蜂蜜等策略。于2025年6月发表在JCR 1区&#xff0c…

Pytorch实现一个简单的贝叶斯卷积神经网络模型

贝叶斯深度模型的主要特点和实现说明:模型结构:结合了常规卷积层(用于特征提取)和贝叶斯线性层(用于分类)贝叶斯层将权重视为随机变量,而非传统神经网络中的确定值使用变分推断来近似权重的后验…

Dubbo 3.x源码(32)—Dubbo Provider处理服务调用请求源码

基于Dubbo 3.1,详细介绍了Dubbo Provider处理服务调用请求源码 上文我们学习了,Dubbo消息的编码解的源码。现在我们来学习一下Dubbo Provider处理服务调用请求源码。 当前consumer发起了rpc请求,经过请求编码之后到达provider端,…

每日一leetcode:移动零

目录 解题过程: 描述: 分析条件: 解题思路: 通过这道题可以学到什么: 解题过程: 描述: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操…

6-Django项目实战-[dtoken]-用户登录模块

1.创建应用 python manage.py startapp dtoken 2.注册应用 settings.py中注册 3.匹配路由4.编写登录功能视图函数 import hashlib import json import timeimport jwt from django.conf import settings from django.http import JsonResponse from user.models import UserPro…

Axure日期日历高保真动态交互原型

在数字化产品设计中,日期日历组件作为高频交互元素,其功能完整性与用户体验直接影响着用户对产品的信任度。本次带来的日期日历高保真动态交互原型,依照Element UI、View UI等主流前端框架为参考,通过动态面板、中继器、函数、交互…

【YOLOv4】

YOLOv4 论文地址::【https://arxiv.org/pdf/2004.10934】 YOLOv4 论文中文翻译地址:【深度学习论文阅读目标检测篇(七)中文版:YOLOv4《Optimal Speed and Accuracy of Object Detection》-CSDN博客】 yol…

【秋招笔试】2025.08.03虾皮秋招笔试-第一题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围在线刷题 bishipass.com 01. 蛋糕切分的最大收益 问题描述 K小姐经营着一家甜品店,今天她有一块长度为 n n n 厘米的长条蛋糕需要切分。根据店里的规定,她必须将蛋糕切成至少 2 2