Linux 运维手册之 CHRONY 时间同步服务
后知后觉 暂无评论

NTPNetwork Time Protocol,网络时间协议)是用来使网络中的各个计算机保持时间同步的一种协议。它的用途是把计算机的时钟同步到 UTCCoordinated Universal Time,世界标准时间),其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到 1~50ms

服务简介

Chrony 应用本身已经有几年了,是网络时间协议(NTP)的另一种实现。一直以来众多发行版里标配的都是ntpd服务,自 RHEL 7 起,Chrony 作为标配服务,不过旧 ntpd服务依旧可用。

Chrony可以同时做为客户端和服务端。默认安装完后有两个程序 chronydchronycchronyd 是一个在系统后台运行的守护进程,chronyc 是用来监控性能和配置参数的实用工具。

小贴士:Chrony 基于 UDP 报文进行传输,使用的端口号为 323

服务部署

提示:本文演示环境为 CentOS 7.5,其他发行版操作大同小异。

环境准备

因涉及到网络操作,因此需要禁用防火墙和临时禁用 SELinux

systemctl stop  firewalld
systemctl disable firewalld
setenforce 0

使用时间同步,需要先确定时区正确,若在中国,请统一调整为 “中国/上海”

# timedatectl             
      Local time: Thu 2018-08-01 04:50:52 PDT
  Universal time: Thu 2018-08-01 11:50:52 UTC
        RTC time: Thu 2018-08-01 11:52:42
       Time zone: America/Los_Angeles (PDT, -0700)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: yes
 Last DST change: DST began at
                  Sun 2018-03-11 01:59:59 PST
                  Sun 2018-03-11 03:00:00 PDT
 Next DST change: DST ends (the clock jumps one hour backwards) at
                  Sun 2018-11-04 01:59:59 PDT
                  Sun 2018-11-04 01:00:00 PST

列出全部时区

sudo timedatectl list-timezones

调整时区为【中国/上海】,时区中无【中国/北京】选项

sudo timedatectl set-timezone Asia/Shanghai

服务安装

安装 chrony 软件包

sudo yum install chrony -y
小贴士:chronybase 源中,若无法安装请检查 yum 源文件。

使用 chrony 服务进行网络时间同步(重点)

sudo timedatectl set-ntp true
小贴士:从 yum 源安装的 chrony 默认配置文件已经有同步服务器,但是默认为海外。

服务配置

配置文件位于 /etc/chrony.conf 中,在 Debian 及其衍生版本(如:Ubuntu)上,默认配置文件路径在 /etc/chrony/chrony.conf 中。

对于绝大多数环境而言,无需修改配置文件即可直接投入使用。使用命令

chronyc sources

可以查询现在系统中配置的同步源:

MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* dns2.synet.edu.cn             1  10   377   843    -86us[ -208us] +/- 7819us
^- electrode.felixc.at           2  10   377   983    -15ms[  -15ms] +/-  103ms
^- ntp6.flashdance.cx            2  10   377   594    -37ms[  -37ms] +/-  151ms
^+ time.neu.edu.cn               1  10   273   935    -79us[ -199us] +/- 7960us

使用命令

chronyc sourcestats

可以查询当前源状态信息:

Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
dns2.synet.edu.cn          11   7  172m     +0.009      0.045    +57us   105us
electrode.felixc.at        62  30   18h     +0.173      0.166    -15ms  6831us
ntp6.flashdance.cx         21   9  344m     +0.353      0.557    -34ms  3837us
time.neu.edu.cn             6   3  104m     -0.020      0.095    -65us    64us

修改配置文件中的源位置后需要重载

sudo chronyc reload sources

启动 chrony 服务

sudo systemctl enable chronyd
sudo systemctl start chronyd

Chrony 内网实例

案例背景

在企业中,为了安全,只有少数机器会暴露在外网上,其他机器只有内网网络,但部分服务需要 C/S 时间的误差在一定内才能正常运行。

解决方案

在这种情况下可以使用 chrony 服务进行内网时间同步。

先在可以连接外网的机器上配置好外网同步服务器。
具体步骤如上,此处省略。

在内网全部机器上配置时间同步客户端。

sudo yum install chrony -y

修改配置文件

sudo vim /etc/chrony.conf

配置内网时间同步服务器,加入以下内容(以实际机器地址为准)

server 192.168.31.200 iburst

启动 chrony 服务

sudo systemctl enable chronyd
sudo systemctl start chronyd

启动默认使用网络同步时间

sudo timedatectl set-ntp true

客户端同步验证

chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? 192.168.31.200                3   6   372   173   -54.1s[ -54.1s] +/-  12.6s

附录

参考链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。