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

prober found high clock drift,Linux服务器时间不能自动同步,导致服务器时间漂移解决办法。

文章目录

  • 一、场景
  • 二、问题
  • 三、解决办法
    • (一)给服务器添加访问网络能力
    • (二)手动同步
      • 1. 检查有没有安装ntp
      • 2. 没有安装ntp则离线安装ntp
        • 2.1 下载安装包
        • 2.2 安装
        • 2.3 启动 ntp
      • 3. 设置内部时钟源
        • 3.1 编辑/etc/ntp.conf
        • 3.1 重启ntp服务
      • 4. 其他主机配置
        • 4.1 编辑 /etc/ntp.conf
        • 4.2 重启 ntp 服务
        • 4.3 查看时钟同步状态
      • 5. 手动矫正时钟源主机的时间

一、场景

我们生产环境部署TIDB(兼容MYSQL的分布式数据库),TIDB组件之间同步时根据时间戳检测到时间不一致,导致数据库服务不可用。

二、问题

因为服务器没有公网访问能力,时间只能靠硬件时钟芯片进行计算时间的流逝。虽然硬件时钟能够在没有网络的情况下持续计时,但它存在一定的精度问题。由于晶体振荡器的频率受温度、老化等因素影响,随着时间的推移,硬件时钟可能会产生漂移,可能在数周或数月后出现几分钟甚至更多的时间误差。

三、解决办法

(一)给服务器添加访问网络能力

这是最简单的办法,因为Linux服务器一般都有NTP服务。NTP(Network Time Protocol)会按照一定的时间间隔自动从NTP服务器同步时间,这个时间间隔不是固定不变的,而是根据多种因素动态调整的。

通过 timedatectl命令查看 NTP 服务是否开启

CentOS / Red Hat
可以看到 NTP service: active 同步时间服务开启的 ,但是 System clock synchronized: no 没有完成同步。

在这里插入图片描述Ubuntu
在这里插入图片描述

ps : 公共 NTP 服务器池,例如 “pool.ntp.org” 作为 NTP 服务器时,它实际上会被分配到池中的某个具体的 NTP 服务器进行时间同步。这些服务器由世界各地的志愿者或组织提供并维护,它们从更高级别的时间源获取时间,然后为全球的大量客户端提供免费的时间同步服务。客户端可以通过互联网连接到这些公共 NTP 服务器池中的服务器来同步自己的时钟。

(二)手动同步

指定一台服务器为时间源,其它主机使用NTP服务时间源主机同步时间。然后定期手动矫正时间源主机的时间。这样每台主机时间是一致的,但是需要定期矫正时间。

以CentOS为例:

1. 检查有没有安装ntp

执行 rpm -qa | grep ntp 检查

rpm -qa | grep ntp

有以下输出说明有安装ntp
在这里插入图片描述

2. 没有安装ntp则离线安装ntp

2.1 下载安装包

找一台同操作系统并且能访问公网的主机上下载, ntpdate ntp安装包

执行

yum reinstall --downloadonly --downloaddir=/root   ntpdate ntp

在这里插入图片描述

2.2 安装

将下载ntpntpdate安装包上传到主机上,执行 rpm -ivh 安装包名每台主机都需要安装。
安装过程如果缺少依赖库先解决依赖问题。

执行安装

rpm -ivh  ntpdate-4.2.6p5-29.el7.centos.2.x86_64.rpm  ntp-4.2.6p5-29.el7.centos.2.x86_64.rpm 

2.3 启动 ntp

启动

systemctl start ntpd

设置为开机自启

systemctl enable ntpd

3. 设置内部时钟源

选择一台服务器作为内部时钟源,选择相对稳定且时间较为准确的服务器作为内部时钟源服务器。这台服务器可以手动设置一个较为准确的时间.

3.1 编辑/etc/ntp.conf

编辑/etc/ntp.conf
/etc/ntp.conf文件中添加以下内容

server 127.127.1.0
fudge 127.127.1.0 stratum 10

这里127.127.1.0是一种特殊的本地时钟表示方式,表示将本地主机的时钟作为 NTP 服务的时钟源,stratum 10表示时钟源的层级(层级越高相对越不精确,但在没有更好的时钟源情况下可以使用)。

3.1 重启ntp服务

执行 systemctl restart ntpd

systemctl restart ntpd

4. 其他主机配置

除时钟源主机,其他主机都需要设置

4.1 编辑 /etc/ntp.conf

编辑/etc/ntp.conf, 在文件中添加以下内容

# ip替换为你的实际时钟源主机ip
server 192.168.1.100
4.2 重启 ntp 服务

执行 systemctl restart ntpd

systemctl restart ntpd
4.3 查看时钟同步状态

执行 ntpq -p

ntpq -p

5. 手动矫正时钟源主机的时间

后续定期两个星期或者一个月,手动修改时间。
修改命令 date -s。 这样还是增加了工作量,最好是能有一台主机有网络自动同步时间,其他主机从这台有网络的主机同步时间就可以一劳永逸了。

# 修改时间
date -s '2024-09-18 14:58::11'


http://www.kler.cn/a/317540.html

相关文章:

  • 网络技术-定义配置ACL规则的语法和命令
  • python解析网页上的json数据落地到EXCEL
  • 缓存与数据库不一致的解决方案:深入理解与实践
  • 06.VSCODE:备战大项目,CMake专项配置
  • 如何在算家云搭建Peach-9B-8k-Roleplay(文本生成)
  • 24.11.13 Javascript3
  • Maven的详细解读和配置
  • Linux 常用命令(待更新)
  • 安卓学习资源推荐
  • Java-数据结构-优先级队列(堆)-(二) (゚▽゚*)
  • Fyne ( go跨平台GUI )中文文档-绘图和动画(三)
  • 鸿蒙OpenHarmony【轻量系统内核通信机制(消息队列)】子系统开发
  • UDP Socket聊天室(Java)
  • Leetcode—329. 矩阵中的最长递增路径【困难】
  • dbt snapshot命令及应用示例
  • 基于BeagleBone Black的网页LED控制功能(Flask+gpiod)
  • 【CSS】字体文本
  • SQL_UNION
  • 【Linux】系统字符集无法修改,单独修改vim后的文件字符集
  • 爬虫技术初步自学
  • FreeRTOS学习——Systick中断、SVC中断、PendSV中断
  • 反转字符串 II--力扣541
  • k8s介绍-搭建k8s
  • Redis数据结构之哈希表
  • 【QT】QSS基础
  • Qt-qmake语言