当前位置: 首页 > news >正文

【Linux系列】NTP时间同步服务器搭建完整指南

在分布式系统和高可用环境中,时间同步是至关重要的。特别是对于银行、金融等关键业务系统,精准的时间同步不仅关系到系统的稳定性,还直接影响交易处理、日志管理、日终结算等功能。本文将介绍NTP(Network Time Protocol)服务的安装、配置及监控,帮助您实现高效的时间同步管理。
在这里插入图片描述

一、NTP服务简介

NTP(Network Time Protocol)是用于计算机系统时间同步的协议,通常用于保证在一个网络中所有机器的时间保持一致。通过与时间服务器进行通信,NTP协议能够精准地同步各设备的系统时间。它能够容忍网络延迟和时钟漂移,精确度高达毫秒级别,甚至在复杂网络中也能保持稳定。

二、NTP服务器端安装与配置

1. 安装ntpd服务

首先,确保您的服务器已经安装了ntp服务。使用以下命令进行安装:

yum install ntp -y -q

2. 配置ntpd服务

编辑NTP配置文件 /etc/ntp.conf,按以下步骤进行配置:

vim /etc/ntp.conf

在文件中做以下修改和添加:

  • 设置漂移文件路径:指定存储时钟漂移数据的文件路径。
driftfile /var/lib/ntp/drift
  • 配置限制条件:默认配置不允许修改、不允许作为时间源、不允许查询,并限制仅允许本地访问。
restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
  • 配置NTP服务器:在文件中添加您希望使用的时间源,可以选择多个公共NTP服务器,也可以指定企业内网NTP服务器。
server time1.apple.com iburst
server time2.apple.com iburst
server time3.apple.com iburst
server time4.apple.com iburst
server time5.apple.com iburstserver time1.google.com iburst
server time2.google.com iburst
server time3.google.com iburst
server time4.google.com iburstserver pool.ntp.org iburst
server cn.pool.ntp.org iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server time1.aliyun.com iburst
server time2.aliyun.com iburst
  • 包含其他配置文件:可以根据需要引用额外的配置文件。
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
  • 禁用监控功能:如果不需要启用监控功能,可以禁用它。
disable monitor

3. 启动NTP服务

配置完成后,启动NTP服务并设置开机自启:

systemctl restart ntpd
systemctl enable ntpd

三、NTP客户端安装与配置

客户端的配置与服务器端类似:

1. 安装ntpd服务

在客户端安装ntp服务:

yum install ntp -y -q

2. 配置ntpd服务

编辑NTP配置文件 /etc/ntp.conf,并设置服务器配置为您自己的NTP服务器:

server ntp1.xxx.com iburst
server ntp2.xxx.com iburst

确保至少配置两个NTP服务器节点,以保证高可用性。

3. 启动NTP服务

配置完成后,启动NTP客户端服务并设置开机自启:

systemctl restart ntpd
systemctl enable ntpd

四、NTP监控与告警

NTP服务对于关键业务系统尤为重要,尤其是在金融等行业,时间不同步可能导致日终结算异常、交易错误等问题。因此,必须对NTP同步进行监控。

1. 监控业务服务器与监控服务器的时间差

为避免NTP同步异常,可以设置监控项,确保业务服务器与监控服务器的时间差在合理范围内。如果超过500毫秒,应该触发告警。

2. 监控ntpd服务是否正常运行

对于监控NTP服务的稳定性,可以通过ntp exporter等监控工具来实时监控NTP服务。如果发现ntpd服务停止运行,及时发出告警,避免对业务造成影响。

3. 独立配置监控服务器与业务服务器的NTP同步

为了避免因单一NTP服务器故障而导致的同步问题,建议分别为监控服务器和业务服务器配置不同的NTP服务器。即使共享同一NTP服务器,也应保证服务的高可用性。
在这里插入图片描述

五、NTP常用命令

NTP服务的常用管理命令可以帮助我们更好地了解同步状态和进行调试:

  • 查看当前系统时间和NTP同步状态:
ntpq -p
  • 手动同步时间:
ntpdate time.server.com
  • 查看ntpd版本信息:
ntpd --version

ntpq -p命令输出解析

ntpq -p命令列出了所有用于校正本地NTP服务器时钟的远程NTP服务器,并显示同步状态。每列的含义如下:

字段描述
remote响应请求的NTP服务器的名称或IP地址。
refid远程NTP服务器使用的上一级NTP服务器的ID。
stNTP服务器的层级(1-16),1为顶级服务器。
t通信方式,u表示单播,b表示广播,I为本地。
when上次请求成功后至今的秒数。
poll本地与远程NTP服务器的同步时间间隔。
reach前八次查询的响应状态,377表示全部成功。
delay网络延迟,单位为微秒。
offset本地NTP与远程NTP时间偏移,单位为毫秒。
jitter网络延迟的波动,单位为微秒。

七、总结

NTP时间同步是确保分布式系统时间一致性的关键。特别是在银行、金融等行业,精确的时间同步可以避免由于时钟不同步导致的交易错误和结算问题。通过合理配置NTP服务、监控同步状态以及及时处理告警,可以有效保障系统的稳定性和业务的连续性。在配置NTP服务时,建议结合实际环境进行优化,确保服务的高可用性。

相关文章:

【Linux系列】NTP时间同步服务器搭建完整指南

在分布式系统和高可用环境中,时间同步是至关重要的。特别是对于银行、金融等关键业务系统,精准的时间同步不仅关系到系统的稳定性,还直接影响交易处理、日志管理、日终结算等功能。本文将介绍NTP(Network Time Protocol&#xff0…...

go 结构体方法

在 Go 语言中,结构体方法是指附加到结构体类型上的函数。这些方法可以通过结构体的实例来调用。方法的接收者(receiver)指定了该方法属于哪个结构体类型。接收者可以是一个值类型或指针类型。 定义结构体方法 下面是如何为一个结构体定义方…...

DHCP服务(包含配置过程)

目录 一、 DHCP的定义 二、 使用DHCP的好处 三、 DHCP的分配方式 四、 DHCP的租约过程 1. 客户机请求IP 2. 服务器响应 3. 客户机选择IP 4. 服务器确定租约 5. 重新登录 6. 更新租约 五、 DHCP服务配置过程 一、 DHCP的定义 DHCP(Dynamic Host Configur…...

uniapp内嵌的webview H5与应用通信

H5端&#xff1a; 1、找到index.html引入依赖 <script type"text/javascript" src"https://unpkg.com/dcloudio/uni-webview-js0.0.3/index.js"></script> 2、在需要通讯处发送消息 uni.postMessage({data:{code:200,msg:"处理完成&q…...

Android OpenGL ES详解——绘制圆角矩形

1、绘制矩形 代码如下&#xff1a; renderer类&#xff1a; package com.example.roundrectimport android.content.Context import android.opengl.GLES30 import android.opengl.GLSurfaceView.Renderer import com.opengllib.data.VertexArray import com.opengllib.prog…...

网络基础二

文章目录 协议定制&#xff0c;序列化和反序列化应用层网络版计算器协议的定制序列反序列化序列化未复用版 反序列化 TCP是面向字节流的&#xff0c;你怎么保证&#xff0c;你读取上来的数据&#xff0c;是‘’一个“ “完整””的报文呢&#xff1f; 我们没有区分字符串里面有…...

从Full-Text Search全文检索到RAG检索增强

从Full-Text Search全文检索到RAG检索增强 时光飞逝&#xff0c;转眼间六年过去了&#xff0c;六年前铁蛋优化单表千万级数据查询性能的场景依然历历在目&#xff0c;铁蛋也从最开始做CRUD转行去了大数据平台开发&#xff0c;混迹包装开源的业务&#xff0c;机缘巧合下做了实时…...

springMVC 全局异常统一处理

全局异常处理⽅式⼀: 1、配置简单异常处理器 配置 SimpleMappingExceptionResolver 对象: <!-- 配置全局异常统⼀处理的 Bean &#xff08;简单异常处理器&#xff09; --> <bean class"org.springframework.web.servlet.handler.SimpleMappingExceptionReso…...

qt ubuntu i386 系统

sudo ln -s cmake-3.31.0-linux-x86_64/bin/* /usr/local/bin 【Ubuntu20.4安装QT6 - CSDN App】Ubuntu20.4安装QT6_ubuntu安装qt6-CSDN博客 sudo ../configure -release -platform linux-g-64 -static -nomake examples -nomake demos -no-qt3support -no-script -no-scriptt…...

BUUCTF—Reverse—helloword(6)

一道安卓逆向的签到题 下载附件 使用JADX-gui反编译工具打开&#xff08;注意配环境&#xff09;&#xff0c;找到主函数 jadx 本身就是一个开源项目&#xff0c;源代码已经在 Github 上开源了 官方地址&#xff1a;GitHub - skylot/jadx: Dex to Java decompiler 发现flag …...

深入解析下oracle date底层存储方式

之前我们介绍了varchar2和char的数据库底层存储格式&#xff0c;今天我们介绍下date类型的数据存储格式&#xff0c;并通过测试程序快速获取一个日期。 一、环境搭建 1.1&#xff0c;创建表 我们还是创建一个测试表t_code&#xff0c;并插入数据&#xff1a; 1.2&#xff0c;…...

Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持

作者&#xff1a;来自 Elastic Saikat Sarkar 使用 Elasticsearch 向量数据库构建搜索 AI 体验时如何使用 IBM watsonx™ Slate 文本嵌入。 Elastic 很高兴地宣布&#xff0c;通过集成 IBM watsonx™ Slate 嵌入模型&#xff0c;我们的开放推理 API 功能得以扩展&#xff0c;这…...

如何搭建一个小程序:从零开始的详细指南

在当今数字化时代&#xff0c;小程序以其轻便、无需下载安装即可使用的特点&#xff0c;成为了连接用户与服务的重要桥梁。无论是零售、餐饮、教育还是娱乐行业&#xff0c;小程序都展现了巨大的潜力。如果你正考虑搭建一个小程序&#xff0c;本文将为你提供一个从零开始的详细…...

NFS搭建

NFS搭建 单节点安装配置服务器安装配置启动并使NFS服务开机自启客户端挂载查看是否能发现服务器的共享文件夹创建挂载目录临时挂载自动挂载 双节点安装配置服务器安装配置服务端配置NFS服务端配置Keepalived编辑nfs_check.sh监控脚本安装部署RsyncInofity 客户端 单节点安装配置…...

RNN与LSTM,通过Tensorflow在手写体识别上实战

简介&#xff1a;本文从RNN与LSTM的原理讲起&#xff0c;在手写体识别上进行代码实战。同时列举了优化思路与优化结果&#xff0c;都是基于Tensorflow1.14.0的环境下&#xff0c;希望能给您的神经网络学习带来一定的帮助。如果您觉得我讲的还行&#xff0c;希望可以得到您的点赞…...

Docker部署FastAPI实战

在现代 Web 开发领域&#xff0c;FastAPI 作为一款高性能的 Python 框架&#xff0c;正逐渐崭露头角&#xff0c;它凭借简洁的语法、快速的执行速度以及出色的类型提示功能&#xff0c;深受开发者的喜爱。而 Docker 容器化技术则为 FastAPI 应用的部署提供了便捷、高效且可移植…...

【Python数据分析五十个小案例】电影评分分析:使用Pandas分析电影评分数据,探索评分的分布、热门电影、用户偏好

博客主页&#xff1a;小馒头学python 本文专栏: Python数据分析五十个小案例 专栏简介&#xff1a;分享五十个Python数据分析小案例 在现代电影行业中&#xff0c;数据分析已经成为提升用户体验和电影推荐的关键工具。通过分析电影评分数据&#xff0c;我们可以揭示出用户的…...

Vue2学习记录

前言 这篇笔记&#xff0c;是根据B站尚硅谷的Vue2网课学习整理的&#xff0c;用来学习的 如果有错误&#xff0c;还请大佬指正 Vue核心 Vue简介 Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款用于构建用户界面的 JavaScript 框架。 它基于标准 HTML、CSS 和 JavaScr…...

TMS FNC UI Pack 5.4.0 for Delphi 12

TMS FNC UI Pack是适用于 Delphi 和 C Builder 的多功能 UI 控件的综合集合&#xff0c;提供跨 VCL、FMX、LCL 和 TMS WEB Core 等平台的强大功能。这个统一的组件集包括基本工具&#xff0c;如网格、规划器、树视图、功能区和丰富的编辑器&#xff0c;确保兼容性和简化的开发。…...

Redis主从架构

Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的、高性能的键值对存储系统&#xff0c;广泛应用于缓存、消息队列、实时分析等场景。为了提高系统的可用性、可靠性和读写性能&#xff0c;Redis提供了主从复制&#xff08;Master-Slave Replication&#xf…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...