• 【Chrony】一个多功能的NTP实现


    在现代的计算机系统中,准确的时间同步对于许多关键应用和系统的正常运行至关重要。Linux操作系统提供了多种时间同步工具,其中Chrony是一款备受推崇的工具,为Linux系统提供了更准确、更稳定的时间同步功能。本文将介绍Chrony的工作原理、优点以及如何使用它来提升时间同步的精确性和可靠性。

    Chrony 是一个多功能的 NTP (Network Time Protocol) 实现,类 Unix 系统上 NTP 客户端和服务器的替代品。它可以通过 NTP 服务或者类似 GPS 时钟接收器的硬件级参考时钟来同步系统时钟,具有更好的时钟准确度,并且对于那些间歇性互联网连接的系统很有帮助。Chrony 是免费开源的,并且支持 GNU/Linux 和 BSD 衍生版(比如:FreeBSD、NetBSD)、macOS 和 Solaris 等。

    一、Chrony的工作原理

    Chrony通过使用NTP协议与远程时间服务器进行通信,获取准确的时间信息,并根据网络延迟和时钟偏移进行时间校正。与传统的NTP工具相比,Chrony采用了一种称为渐进线性补偿(PLC)的算法,能够更准确地估算系统时钟的偏移和漂移,从而提供更精确的时间同步。

    二、Chrony的优点

    高准确性:Chrony通过综合考虑网络延迟和时钟偏移等因素,能够提供比传统NTP更高的时间同步准确性。尤其在移动设备或不稳定网络环境下,Chrony的表现更加出色。

    快速时间同步:由于采用了先进的算法和优化技术,Chrony能够在短时间内快速将系统时钟调整到正确的时间,减少时间调整的延迟。

    稳定性:Chrony能够有效应对网络延迟、时钟漂移和临时网络中断等问题,保持时间同步的稳定性和可靠性。通过自动选择和切换时间服务器,Chrony能够在不同网络环境下灵活适应,并保持时间同步的持续性。

    三、如何使用Chrony (Ubuntu 22.04)

    安装Chrony

    在Linux系统中,可以使用适用于对应发行版的软件包管理工具安装Chrony,并确保启动服务。

    apt install chrony
    
    root@knight:/home/knight# chronyc activity
    200 OK
    0 sources online
    0 sources offline
    6 sources doing burst (return to online)
    0 sources doing burst (return to offline)
    1 sources with unknown address
    root@knight:/home/knight# chronyc -v
    chronyc (chrony) version 4.2 (+READLINE +SECHASH +IPV6 -DEBUG)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    配置Chrony

    打开Chrony的配置文件(通常位于/etc/chrony.conf),根据自己的需求进行配置。可以指定时间服务器、网络限制、时钟调整策略等参数,以满足特定的时间同步要求。

    ...
    #pool ntp.ubuntu.com iburst maxsources 4
    #pool 0.ubuntu.pool.ntp.org iburst maxsources 1
    #pool 1.ubuntu.pool.ntp.org iburst maxsources 1
    #pool 2.ubuntu.pool.ntp.org iburst maxsources 2
    ...
    # Use public NTP servers
    server ntp.ntsc.ac.cn iburst
    server cn.ntp.org.cn iburst
    server time.edu.cn iburst
    server time.cloud.tencent.com iburst
    server ntp.tencent.com iburst
    server ntp.aliyun.com iburst
    server ntp.sjtu.edu.cn iburst
    
    # Use local hardware clock as backup if no response from NTP servers
    local stratum 10
    
    # Allow NTP client access from local network
    #allow 192.168.0.0/16
    
    # Allow NTP clients to synchronize with this server
    allow all
    
    # Ignore NTP packets from outside the local network
    #deny all
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    重启Chrony服务

    使用相应的命令启动Chrony服务,并将其设置为系统启动时自动运行。可以通过命令行或系统管理工具来进行操作。

    systemctl restart chrony
    
    • 1

    设置为开机启动:systemctl enable chronyd

    查看服务状态

    root@knight:/home/knight# netstat -nulp | grep chronyd
    udp        0      0 0.0.0.0:123             0.0.0.0:*                           649840/chronyd
    udp        0      0 127.0.0.1:323           0.0.0.0:*                           649840/chronyd
    udp6       0      0 :::123                  :::*                                649840/chronyd
    udp6       0      0 ::1:323                 :::*                                649840/chronyd
    
    • 1
    • 2
    • 3
    • 4
    • 5

    常用命令

    显示系统时钟性能的参数
    root@knight:/home/knight#  chronyc tracking
    Reference ID    : 11FD74FD (twtpe2-ntp-002.aaplimg.com)
    Stratum         : 2
    Ref time (UTC)  : Mon Nov 20 09:42:40 2023
    System time     : 0.000089889 seconds slow of NTP time
    Last offset     : -0.000377891 seconds
    RMS offset      : 0.002584661 seconds
    Frequency       : 45.411 ppm slow
    Residual freq   : -2.820 ppm
    Skew            : 13.079 ppm
    Root delay      : 0.051119432 seconds
    Root dispersion : 0.002186287 seconds
    Update interval : 65.2 seconds
    Leap status     : Normal
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    查看时间同步源的状态
    root@knight:/home/knight# chronyc activity
    200 OK
    6 sources online
    0 sources offline
    0 sources doing burst (return to online)
    0 sources doing burst (return to offline)
    1 sources with unknown address
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    显示时间同步源
    root@knight:/home/knight# chronyc sources -v
    
      .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
     / .- Source state '*' = current best, '+' = combined, '-' = not combined,
    | /             'x' = may be in error, '~' = too variable, '?' = unusable.
    ||                                                 .- xxxx [ yyyy ] +/- zzzz
    ||      Reachability register (octal) -.           |  xxxx = adjusted offset,
    ||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
    ||                                \     |          |  zzzz = estimated error.
    ||                                 |    |           \
    MS Name/IP address         Stratum Poll Reach LastRx Last sample
    ===============================================================================
    ^? 114.118.7.163                 2   6    10   322  +2515us[+2424us] +/-  161ms
    ^? 1.14.61.51                    0   8     0     -     +0ns[   +0ns] +/-    0ns
    ^+ time.neu.edu.cn               1   6   377     3  +5227us[+5227us] +/-   23ms
    ^+ 106.55.184.199                2   6   377     6  -1792us[-2026us] +/-   37ms
    ^+ 203.107.6.88                  2   6   277     5  +4746us[+4746us] +/-   20ms
    ^* twtpe2-ntp-002.aaplimg.c>     1   6   377     6   -353us[ -586us] +/-   26ms
    root@knight:/home/knight# chronyc sources
    MS Name/IP address         Stratum Poll Reach LastRx Last sample
    ===============================================================================
    ^? 114.118.7.163                 2   7    20   324  +2515us[+2424us] +/-  161ms
    ^? 1.14.61.51                    0   8     0     -     +0ns[   +0ns] +/-    0ns
    ^+ time.neu.edu.cn               1   6   377     5  +5227us[+5227us] +/-   23ms
    ^+ 106.55.184.199                2   6   377     8  -1792us[-2026us] +/-   37ms
    ^+ 203.107.6.88                  2   6   277     7  +4746us[+4746us] +/-   20ms
    ^* twtpe2-ntp-002.aaplimg.c>     1   6   377     8   -353us[ -586us] +/-   26ms
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    结论:

    Chrony是一款强大而灵活的时间同步工具,为Linux系统提供了提升时间同步精确性和稳定性的解决方案。通过使用Chrony,我们能够更好地保证系统的时间准确性,尤其在需要高精度时间同步的应用和环境下表现突出。无论是移动设备还是服务器,Chrony都是一个值得推荐和采用的时间同步工具。

    常用的NTP服务器:

    • 国家授时中心NTP服务器:ntp.ntsc.ac.cn
    • 中国 NTP 快速授时服务(NTP ORG CN) cn.ntp.org.cn
    • 教育网 time.edu.cn
    • 腾讯云NTP服务器time.cloud.tencent.com / ntp.tencent.com
    • 阿里云NTP服务器ntp.aliyun.com
    • 上海交大NTP 服务器 ntp.sjtu.edu.cn
  • 相关阅读:
    css 字体倾斜
    Azure Data Factory(七)数据集验证之用户托管凭证
    【C/C++】程序环境,探索程序的执行过程(习得无上内功《易筋经》的第一步)
    java项目-第89期基于ssm的药店信息管理系统
    Java 基础数据类型占用内存空间和字符串编码简介(二)
    这份阿里巴巴 Java 架构六大专题面试宝典值得你刷一刷
    NAND闪存市场彻底复苏
    万字长文详解开源流式湖仓服务Arctic
    CPP design pattern Singleton
    centos 编译安装的php多版本 切换
  • 原文地址:https://blog.csdn.net/u012153104/article/details/134535476