Linux 运维手册之 CHRONY 时间同步服务

in Linux with 0 comment

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

一、Chrony 服务简介

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

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

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


二、Chrony 服务部署

本文环境在未特殊声明时默认为 CentOS 7.5

环境准备

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

[root@domain ~]# systemctl stop  firewalld
[root@domain ~]# systemctl disable firewalld
[root@domain ~]# setenforce 0

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

[root@domain ~]# 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

列出全部时区

[root@domain ~]# timedatectl list-timezones

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

[root@domain ~]# timedatectl set-timezone Asia/Shanghai

服务安装

安装 chrony 软件包

[root@domain ~]# yum install chrony -y

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

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

[root@domain ~]# timedatectl set-ntp true

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

服务配置

配置 chrony 同步服务器

[root@domain ~]# vim /etc/chrony.conf
# Allow NTP client access from Aliyun NTP server.
server ntp.aliyun.com iburst
# Allow NTP client access from local network.
allow 192.168.31.0/24

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

root@debian:~# ll /etc/chrony/chrony.conf
-rw-r--r-- 1 root root 1.8K May 16 02:56 /etc/chrony/chrony.conf

小贴士:若服务器为海外机器则无需修改,直接使用即可。

启动 chrony 服务

[root@domain ~]# systemctl enable chronyd
[root@domain ~]# systemctl start chronyd

验证服务端是否能同步时间

[root@domain ~]# chronyc sources
210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^+ time.tritn.com                2  10   377   263   -144us[ -233us] +/-   13ms
^* clock.xmission.com            1  10   377   125   -628us[ -719us] +/-   12ms
^- lithium.constant.com          2  10   377   485  -5442us[-5529us] +/-   67ms
^- blue.1e400.net                3  10   377   144  -8550us[-8641us] +/-  131ms

三、Chrony 内网实例

案例背景:

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

解决方案:

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

步骤 1:

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

步骤 2:

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

[root@backup ~]# yum install chrony -y

修改配置文件

[root@backup ~]# vim /etc/chrony.conf

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

server 192.168.31.200 iburst

启动 chrony 服务

[root@backup ~]# systemctl enable chronyd
[root@backup ~]# systemctl start chronyd

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

[root@backup ~]# timedatectl set-ntp true

客户端同步验证

[root@backup ~]# 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

参考链接

回复