NTP:网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。
    Linux 下原本有 ntpd 时间同步服务,配置文件:/etc/ntp.conf
    但从 RHEL 7.2 和 SLES 12 开始 chrony 开始被采用,它是NTP的另一种实现。

    chrony 可以同时做为 ntp 服务的客户端和服务端;安装完后有两个程序 chronyd、chronyc:
    chronyd 是一个 daemon 守护进程,chronyc 是用来监控 chronyd 性能和配置参数的命令行工具。

    注意:系统上的 ntpd 和 chronyd 服务运行一个即可,同时运行将可能导致时间同步冲突。
    这边先对 chrony 的配置文件进行解析: /etc/chrony.conf

    1. # 时钟服务器地址
    2. server nt1.aliyun.com
    3. # 指定包含 NTP 身份验证密钥的文件。
    4. local stratum 8
    5. # 指令设置当chronyd从可用源中选择同步源时,每个层应该添加多少距离到同步距离。
    6. # 默认情况下,CentOS中设置为0,让chronyd在选择源时忽略源的层级
    7. stratumweight 0
    8. # chronyd程序的主要行为之一,就是根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中是最合理的,它会在重启后为系统时钟作出补偿。
    9. # 甚至可能的话,会从时钟服务器获得较好的估值。
    10. driftfile /var/lib/chrony/drift
    11. # rtcsync指令将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC)。
    12. rtcsync
    13. # 如果系统时钟的偏移量大于10秒,则允许系统时钟在前三次更新中步进。
    14. makestep 10 3
    15. # allow / deny - 这里你可以指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器。
    16. allow 192.168.0.0/24
    17. # 指定包含 NTP 身份验证密钥的文件。
    18. keyfile /etc/chrony.keys
    19. # noclientlog
    20. logchange 0.5
    21. logdir /var/log/chrony
    22. log measurements statistics tracking

    修改之后需要重启chronyd服务:
    systemctl restart chronyd
    并确认客户端和服务端之间的防火墙没有屏蔽通信端口。

    其中,

    1. 对用来做时间源的服务端:
    2. allow 192.168.0.0/24 #运行哪些客户端来同步本机的时间
    3. local stratum 10 # 取值 1-15, 1表示和准确时间源直接连接,到10则表示准确时间源非常远,不可靠。
    4. 这样不会和网络时间同步。
    5. 对用来做客户端的:
    6. server nt1.aliyun.com #指定时钟同步服务器

    PS:详情参考文档 man 5 chrony.conf

    关于chronyc 的命令行工具:

    1. # 检查NTP访问是否对特定主机可用
    2. chronyc accheck
    3. # 查看 ntp_servers
    4. chronyc sources
    5. # 查看 ntp_servers 状态
    6. chronyc sourcestats
    7. # 查看 ntp_servers 是否在线
    8. chronyc activity
    9. # 查看 ntp 详细信息
    10. chronyc tracking