Linux-chrony設置集羣同步時間

簡介

Chrony是一個開源的自由軟件,它能保持系統時鐘與時鐘服務器(NTP)同步,讓時間保持精確。

Chrony分爲守護進程chronyd,用於調整內核中運行的系統時間和時間服務器同步 以及 用於監控性能並進行多樣化的配置的chronyc


環境信息

[root@suhw ~]# cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)
[root@suhw ~]# uname -a
Linux suhw 3.10.0-1062.4.3.el7.x86_64 #1 SMP Wed Nov 13 23:58:53 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

安裝

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

設置開機啓動

[root@suhw ~]# systemctl enable chronyd.service
[root@suhw ~]# systemctl restart chronyd.service
[root@suhw ~]# systemctl status chronyd.service
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-06-04 10:12:10 CST; 4s ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)
  Process: 11520 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
  Process: 11516 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 11518 (chronyd)
    Tasks: 1
   Memory: 804.0K
   CGroup: /system.slice/chronyd.service
           └─11518 /usr/sbin/chronyd

Jun 04 10:12:10 suhw systemd[1]: Starting NTP client/server...
Jun 04 10:12:10 suhw chronyd[11518]: chronyd version 3.4 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG)
Jun 04 10:12:10 suhw systemd[1]: Started NTP client/server.

防火牆設置

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

NTP使用123/UDP端口協議,所以允許NTP服務即可。


配置參數

完整參數介紹參考:https://chrony.tuxfamily.org/doc/3.4/chrony.conf.html

默認配置在/etc/chrony.conf中,參考如下

# server 用於添加 ntp 服務器
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

# 允許跳躍式校時 如果在前 3 次校時中時間差大於 1.0s
makestep 1.0 3

# 同步時間至 RTC
rtcsync

# 在支持它的所有接口上啓用硬件時間戳。
#hwtimestamp *

# 增加調整系統時鐘所需的最小可選源數。
#minsources 2

# 允許那些客戶端訪問 NTP
#allow 192.168.0.0/16

# 即使未同步到時間源,也會提供時間。
#local stratum 10

# 指定 NTP 認證的 key 存在的文件
#keyfile /etc/chrony.keys

# 爲日誌文件指定目錄
logdir /var/log/chrony

# 選擇要被記錄的信息
#log measurements statistics tracking


Server

server hostname [option]…

默認配置中默認使用四組官方的NTP服務器

0.centos.pool.ntp.org
1.centos.pool.ntp.org
2.centos.pool.ntp.org
3.centos.pool.ntp.org

iburst是爲了縮短初始同步所花費的時間,該參數一般爲server的默認選項。


driftfile

根據實際時間計算修正值,並將補償參數記錄在該指令指定的文件裏,默認爲 driftfile var/lib/chrony/drift

[root@suhw ~]# cat /var/lib/chrony/drift 
            7.843162             0.028786

makestep

用法:makestep threshold limit

根據需要通過加速或減慢時鐘來逐漸校正任何時間偏移。例如:

makestep 1.0 3

就表示當頭三次校時,如果時間相差 1.0s, 則跳躍式校時。


rtcsync

rtcsync指令會將內核時間與RTC( Real_Time Clock)進行同步

RTC:實時時鐘芯片


allow / deny

這裏你可以指定一臺主機、子網,或者網絡以允許或拒絕NTP連接到扮演時鐘服務器的機器。例如

allow 192.168.4.5
deny 192.168/16

commandkey

如果在/etc/chrony.conf中指定generatecommandkey參數,那麼將 在/etc/chrony.keys中生成一個密碼,或者也可以自己手動在chrony.keys中添加指定密碼。commandkey後跟的數字就代表使用chrony.keys中的哪個密碼,默認值爲1。


local stratum 10

由於NTP是層型結構,有頂端的服務器,多層的Relay Server再到客戶端,所以服務器從高到低級別可以設定爲1-16。0層爲高精度計時設備,從1層開始,每層設備的時間都向前一層設備同步時間。(stratum 2stratum 1同步時間,以此類推)

爲了減緩負荷和網絡堵塞,原則上應該避免直接連接到級別爲1的服務器。此處的就設置的是當前本地NTP服務器的層數。


bindaddress

chronyd監聽NTP請求的socket綁定到計算機的本地地址。



配置示例

以下示例中 ntp server機器地址爲 10.91.156.174client10.47.119.96

設置本地作爲NTP server

例如要將本地設置爲NTP服務器。該機器地址爲10.91.156.174

修改配置文件/etc/chrony.conf

# 配置 本地 作爲 ntp 服務器
server 127.0.0.1 iburst

# 計算時間補償
driftfile /var/lib/chrony/drift

# 如果前三次校時相差大於1s,則使用跳躍校時來校正時間
makestep 1.0 3

# 同步時間到 RTC
rtcsync

# 日誌存放在 /var/log/chrony
logdir /var/log/chrony

bindaddress ::

# 表示所有人都可訪問本機提供的ntp服務
allow

重啓服務

[root@ntp-server ~]# systemctl restart chronyd

查看ntp服務器狀態

[root@ntp-server ~]# chronyc sourcestats
210 Number of sources = 1
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
localhost                   2   0    65     +0.000   2000.000  -6105ns  4000ms

設置NTP server

將第二臺10.47.119.96NTP server設置爲第一臺機器

[root@ntp-client ~]# cat /etc/chrony.conf 
server 10.91.156.174 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
keyfile /etc/chrony.keys
bindaddress ::
allow

同樣重啓生效



chronyc常用用法

注:詳細解釋參考man chronyc

交互式使用

chronyc可以交互式使用,直接輸入chronyc後,輸入對應命令即可

[root@ntp-server ~]# chronyc
chrony version 3.4
Copyright (C) 1997-2003, 2007, 2009-2018 Richard P. Curnow and others
chrony comes with ABSOLUTELY NO WARRANTY.  This is free software, and
you are welcome to redistribute it under certain conditions.  See the
GNU General Public License version 2 for details.

chronyc> sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* localhost                    10   9   377  117m  -6818ns[  -14us] +/-   32us
chronyc> 


查看NTP server信息

[root@ntp-client ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 10.91.156.174                11   6   377    42   -645us[-1177us] +/-   14ms

檢查NTP server狀態

顯示當前在線和脫機的源

[root@ntp-client ~]# chronyc activity
200 OK
1 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address

檢查NTP是否對特定主機可用

[root@ntp-server ~]# chronyc accheck 10.47.119.96
208 Access allowed

獲取ntp client

此命令顯示通過NTP或命令端口訪問服務器的客戶端列表

[root@ntp-server ~]# chronyc clients
Hostname                      NTP   Drop Int IntL Last     Cmd   Drop Int  Last
===============================================================================
localhost                      30      0   8   -    49       0      0   -     -
10.47.119.96                   17      0   6   -    37       0      0   -     -


查看系統時鐘性能

[root@ntp-client ~]# chronyc tracking
# 同步到的 ntp server 信息
Reference ID    : 0A5B9CAE (10.91.156.174)
# 所在層數
Stratum         : 12
Ref time (UTC)  : Fri Jun 05 03:07:36 2020
System time     : 0.000000380 seconds fast of NTP time
Last offset     : -0.000264585 seconds
RMS offset      : 0.001242722 seconds
Frequency       : 37.658 ppm slow
Residual freq   : -0.189 ppm
Skew            : 2.847 ppm
Root delay      : 0.021106269 seconds
Root dispersion : 0.004897448 seconds
Update interval : 64.3 seconds
Leap status     : Normal



查看時間同步命令

timedatectl

查看系統時區信息

[root@suhw ~]# timedatectl status
      Local time: Thu 2020-06-04 17:34:02 CST
  Universal time: Thu 2020-06-04 09:34:02 UTC
        RTC time: Thu 2020-06-04 09:35:04
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

查看可用時區

[root@suhw ~]# timedatectl list-timezones | grep Shanghai
Asia/Shanghai

設置系統時區

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

可以先將本地服務器時區設置爲Asia/Shanghai,再啓動NTP服務


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章