详解:Linux Chrony 设置服务器集群同步时间

2023-05-16

导读Chrony是一个开源的自由软件,像CentOS 7或基于RHEL 7操作系统,已经是默认服务,默认配置文件在 /etc/chrony.conf 它能保持系统时间与时间服务器(NTP)同步,让时间始终保持同步。相对于NTP时间同步软件,占据很大优势。其用法也很简单。

Chrony有两个核心组件,分别是:chronyd:是守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿。chronyc:提供一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

OS环境:

10.28.204.65 客户端

10.28.204.66 服务端

CentOS Linux release 7.4.1708 (Core)

情况说明:两台机器都是内网,将204.66作为NTP时间服务器,204.65到此机器上同步时间。

1.安装Chrony

系统默认已经安装,如未安装,请执行以下命令安装:


$ yum install chrony -y
  

2.启动并加入开机自启动


$ systemctl enable chronyd.service
$ systemctl restart chronyd.service
$ systemctl status chronyd.service
  

3.Firewalld设置


$ firewall-cmd --add-service=ntp --permanent
$ firewall-cmd --reload
  

因NTP使用123/UDP端口协议,所以允许NTP服务即可。

4.配置Chrony

以下是系统默认配置文件,我对此加以说明:


$ cat /etc/chrony.conf

# 使用pool.ntp.org项目中的公共服务器。以server开,理论上你想添加多少时间服务器都可以。
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
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

# 根据实际时间计算出服务器增减时间的比率,然后记录到一个文件中,在系统重启后为系统做出最佳时间补偿调整。
driftfile /var/lib/chrony/drift

# chronyd根据需求减慢或加速时间调整,
# 在某些情况下系统时钟可能漂移过快,导致时间调整用时过长。
# 该指令强制chronyd调整时期,大于某个阀值时步进调整系统时钟。
# 只有在因chronyd启动时间超过指定的限制时(可使用负值来禁用限制)没有更多时钟更新时才生效。
makestep 1.0 3

# 将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC)。
rtcsync

# Enable hardware timestamping on all interfaces that support it.
# 通过使用hwtimestamp指令启用硬件时间戳
#hwtimestamp eth0
#hwtimestamp eth1
#hwtimestamp *

# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2

# 指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器
#allow 192.168.0.0/16
#deny 192.168/16

# Serve time even if not synchronized to a time source.
local stratum 10

# 指定包含NTP验证密钥的文件。
#keyfile /etc/chrony.keys

# 指定日志文件的目录。
logdir /var/log/chrony

# Select which information is logged.
#log measurements statistics tracking
  

5.设置时区

查看当前系统时区:


$ timedatectl
      Local time: Fri 2018-2-29 13:31:04 CST
  Universal time: Fri 2018-2-29 05:31:04 UTC
        RTC time: Fri 2018-2-29 08:17:20
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

如果你当前的时区不正确,请按照以下操作设置。

查看所有可用的时区:

$ timedatectl list-timezones

筛选式查看在亚洲S开的上海可用时区:

$ timedatectl list-timezones |  grep  -E "Asia/S.*"

Asia/Sakhalin
Asia/Samarkand
Asia/Seoul
Asia/Shanghai
Asia/Singapore
Asia/Srednekolymsk

设置当前系统为Asia/Shanghai上海时区:

$ timedatectl set-timezone Asia/Shanghai

设置完时区后,强制同步下系统时钟:

$ chronyc -a makestep
200 OK

  

6.服务器集群之间的系统时间同步

在生产环境中,其网络都是内网结构,那么内网如何保证服务器之间的时间同步呢?其实这个问题很简单,只需要搭建一台内网时间服务器,然后让所有计算机都到服务端(10.28.204.66)去同步时间即可。

具体操作:在服务端注释以下内容:


#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 10.28.204.66 iburst

这样我们需求的一台内网时间服务器已经配置完毕。

同样在客户端注释掉其他server,并在客户端(10.28.204.65)添加以下:

server 10.28.204.66 iburst
  

到此已经完成系统时间的同步。如有多台机器,操作也是如此。

7.常用命令

查看时间同步源:


$ chronyc sources -v

查看时间同步源状态:

$ chronyc sourcestats -v

设置硬件时间

硬件时间默认为UTC:

$ timedatectl set-local-rtc 1

启用NTP时间同步:

$ timedatectl set-ntp yes

校准时间服务器:

$ chronyc tracking
  

最后需要注意的是,配置完/etc/chrony.conf后,需重启chrony服务,否则可能会不生效。

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:https://www.linuxprobe.com/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

详解:Linux Chrony 设置服务器集群同步时间 的相关文章

  • 尝试安装 LESS 时出现“请尝试以 root/管理员身份再次运行此命令”错误

    我正在尝试在我的计算机上安装 LESS 并且已经安装了节点 但是 当我输入 node install g less 时 出现以下错误 并且不知道该怎么办 FPaulMAC bin paul npm install g less npm ER
  • 如何将目录及其子目录中的所有 PDF 文件复制到一个位置?

    如何全部复制PDF文件从目录及其子目录到单个目录 实际上还有更多的文件 并且深度有些任意 假设四个目录的最大深度是公平的 我想这些文件需要重命名 如果a pdf例如 位于多个目录中 因为我会adding https ebooks stack
  • 如何在apache 2.4.6上安装apxs模块

    我刚刚用过apt get update我的 apache 已更新为2 4 6 我想安装 apxs 来编译模块 但收到此错误 The following packages have unmet dependencies apache2 pre
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • iptables通过注释删除特定规则

    我需要删除一些具有相同评论的规则 例如 我有带有 comment test it 的规则 所以我可以像这样获得它们的列表 sudo iptables t nat L grep test it 但是我怎样才能删除所有带有注释 测试它 的 PR
  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的
  • 如何通过保持目录结构完整来同步路径中匹配模式的文件?

    我想将所有文件从服务器 A 复制到服务器 B 这些文件在不同级别的文件系统层次结构中具有相同的父目录名称 例如 var lib data sub1 sub2 commonname filetobecopied foo var lib dat
  • C语言中如何通过内存地址映射函数名和行号?

    如何用 GCC 中的内存地址映射回函数名称和行号 即假设一个 C 语言原型 void func Get the address of caller maybe this could be avoided MemoryAddress get
  • docker容器大小远大于实际大小

    我正在尝试从中构建图像debian latest 构建后 报告的图像虚拟大小来自docker images命令为 1 917 GB 我登录查看尺寸 du sh 大小为 573 MB 我很确定这么大的尺寸通常是不可能的 这里发生了什么 如何获
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 如何确保应用程序在 Linux 上持续运行

    我试图确保脚本在开发服务器上保持运行 它会整理统计数据并提供网络服务 因此它应该会持续存在 但一天中有几次 它会因未知原因而消失 当我们注意到时 我们只需再次启动它 但这很麻烦 并且某些用户没有权限 或专有技术 来启动它 作为一名程序员 我
  • 如何在 Bash 中给定超时后终止子进程?

    我有一个 bash 脚本 它启动一个子进程 该进程时不时地崩溃 实际上是挂起 而且没有明显的原因 闭源 所以我对此无能为力 因此 我希望能够在给定的时间内启动此进程 如果在给定的时间内没有成功返回 则将其终止 有没有simple and r
  • Gtk-ERROR **:检测到 GTK+ 2.x 符号

    我正在使用 gcc 编译我的 c 应用程序 并使用以下标志 gcc evis c pkg config cflags libs gtk 2 0 libs clutter gtk 1 0 libs gthread 2 0 Wall o evi
  • 需要一些建议来开始在 ARM(使用 Linux)平台上编程

    我 也许 很快就会在托管 Linux 发行版的 ARM 平台上工作 我不知道哪个发行版 我知道该项目涉及视频流 但我无法告诉你更多信息 其实我只收到通知 还没见到任何人 我从来没有在这样的平台上工作过 所以我的想法是在项目开始之前进行测试
  • 快速像素绘图库

    我的应用程序以每像素的方式生成 动画 因此我需要有效地绘制它们 我尝试过不同的策略 库 但结果并不令人满意 尤其是在更高分辨率的情况下 这是我尝试过的 SDL 好的 但是慢 OpenGL 像素操作效率低下 xlib 更好 但仍然太慢 svg
  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost
  • Fortran gfortran linux 中的“分段错误(核心转储)”错误

    我正在创建一个程序 该程序将分析目录中的文件 fits 然后它将在另一个目录中创建另一个文件 txt 它只是一个转换器 当我尝试执行该程序 编译正常 时 它给了我一条错误消息 程序收到信号 SIGSEGV 分段错误 无效的内存引用 此错误的
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两

随机推荐

  • 分布式之数据库和缓存双写一致性方案解析

    本文转自博客园 作者 xff1a 孤独烟 原文链接 xff1a https www cnblogs com rjzheng p 9041659 html 为什么写这篇文章 首先 xff0c 缓存由于其高并发和高性能的特性 xff0c 已经在
  • Hexo操作指南-(命令)

    Hexo命令说明 xff1a Hexo官方文档 xff1a https hexo io zh cn docs hexo init 新建一个网站 hexo new 34 文章名 34 新建文章 hexo new page 34 页面名 34
  • 面试题:谈谈对进程的理解?谈谈你对线程的理解?2.进程死锁的原因?如何解决进程死锁?

    2 谈谈对进程的理解 xff1f 答 xff1a 首先进程是指在系统中正在运行的一个应用程序 xff1b 程序一旦运行就是进程 xff0c 或者更专业化来说 xff1a 进程是指程序执行时的一个实例 xff0c 即它是程序已经执行到课中程度
  • 编程小白用C语言完成"摸球问题"

    碰到问题 编写一个程序 xff0c 从 3 个红球 xff0c 5 个白球 xff0c 6 个黑球中任意取出 8 个球 xff0c 且其中必须有红球 xff0c 输出所有可能的方案 思路分析 依题意 必须有红球 即红球最少有1个 最多有3个
  • wxX11移植到arm板上

    原 移植wxX11到开发板上 2012 5 18阅读467 评论0 最近几天由于工作安排 xff0c 要将wxX11程序移植到arm开发板上 一连工作了好几天 xff0c 终于可以在板子上显示出一个 X 号 xff0c 并且可以运行wxWi
  • 13.3.2 搜索本地磁盘中所有媒体文件

    13 3 2 搜索本地磁盘中所有媒体文件 搜索本地磁盘中所有媒体文件可以利用 13 3 1 小节设计的 link add dir 函数 xff0c 将该函数搜索的路径设置为 如下列源代码所示 xff1a int link search li
  • 使用Systemctl命令来管理系统服务

    导读Systemctl是systemd用于管理系统和管理服务的工具 许多现代Linux发行版 xff0c 如Ubuntu Debian Fedora Linux Mint OpenSuSE Redhat都采用systemd作为默认的init
  • MySQL循环语句

    导读mysql常见的三种循环方式 xff1a while repeat和loop循环 还有一种goto xff0c 不推荐使用 Linux就该这么学 1 while循环 设置mysql分隔符为 xff0c 也就意味着 xff0c 当遇到下一
  • Controller和RestController的区别

    导读在springboot中 xff0c Controller RestController是使用控制器最常用的两个注解 xff0c 但是两者之家的差异你知道吗 xff1f 本文就是要讲述两者之间的区别 1 Controller RestC
  • 工作站和台式机的区别

    转自 xff1a 微点阅读 xff08 www weidianyuedu com xff09 微点阅读 范文大全 免费学习网站 工作站电脑非常高配 xff0c 那么它和台式机有什么区别呢 下面由小编给你做出详细的工作站和台式机区别介绍 希望
  • 抽象类不可以被实现,但可以有构造方法

    抽象类不可以被实现 xff0c 但可以有构造方法 xff01 在创建类的时候会调用对应类的构造方法 xff0c 抽象类不能被实例化 xff0c 按理来说在抽象类中写构造方法是没用的 xff0c 但抽象类的子类在被继承的时候必须实现抽象类中的
  • 10种经典的时间序列预测模型 本文演示了 10 种不同的经典时间序列预测方法

    matlab 10种经典的时间序列预测模型 本文演示了 10 种不同的经典时间序列预测方法 xff0c 它们是 自回归 AR 移动平均线自回归移动平均线自回归积分移动平均线 ARIMA 季节性自回归积分移动平均线 SARIMA 具有外生回归
  • Android自定义定时闹钟开发详解

    导读这篇文章主要为大家详细介绍了Android自定义定时闹钟开发 xff0c 文中示例代码介绍的非常详细 xff0c 具有一定的参考价值 xff0c 感兴趣的小伙伴们可以参考一下 本文实例为大家分享了Android开发之自定义闹钟实现 xf
  • 如何在 Linux 上安装 AWS 命令行工具

    导读AWS CLI 是一个能够和 AWS 账户进行交互的命令行程序 开发者和系统管理员用它管理日常的活动和自动化 本文讲述如何一步步在 Linux 上安装 AWS CLI xff08 命令行工具 xff09 AWS CLI 是一个能够和 A
  • Python实现对比两个Excel数据内容并标出不同

    导读 日常工作中需要对比两个Excel工作表中的数据差异是很不方便的 xff0c 使用python来做就比较简单了 xff01 本文为大家介绍了python实现对比两个Excel的数据内容并标记出不同数据的示例代码 xff0c 需要的可以参
  • Python中列表遍历使用range和enumerate的区别

    导读这篇文章主要介绍了Python中列表遍历使用range和enumerate的区别 在Python编程语言中 xff0c 遍历list有range和enumerate方法 xff0c 本文结合示例代码给大家介绍的非常详细 xff0c 对大
  • ChatGPT 引入关闭聊天记录功能

    导读OpenAI 宣布在 ChatGPT 中引入了一项新功能 xff0c 允许用户关闭聊天记录 相关控件目前已面向所有用户推出 xff0c 可以在 ChatGPT 的设置中找到 xff0c 并且可以随时更改 公告指出 xff0c 用户在禁用
  • 虚拟机与主机互传文件方法分享

    现在虚拟机的使用已经非常普及 xff0c 无论新手学习 xff0c 还是运维工程师搭建虚拟化平台 xff0c 都会使用到虚拟机 对个人用户来说 xff0c 非常方便就能搭建很多操作系统进行学习 xff1b 对企业用户来说更是降低了服务器的硬
  • 在 Centos7 的KVM上启用嵌套虚拟化

    嵌套虚拟化 意味着在虚拟机内配置虚拟化环境 换句话说 xff0c 我们可以说嵌套虚拟化是虚拟机管理程序hypervisor的一个特性 xff0c 它允许我们通过虚拟化管理程序 xff08 宿主机 xff09 的硬件加速在虚拟服务器内安装和运
  • 详解:Linux Chrony 设置服务器集群同步时间

    导读Chrony是一个开源的自由软件 xff0c 像CentOS 7或基于RHEL 7操作系统 xff0c 已经是默认服务 xff0c 默认配置文件在 etc chrony conf 它能保持系统时间与时间服务器 xff08 NTP xff