1. 程式人生 > 實用技巧 >Chrony服務同步叢集時間

Chrony服務同步叢集時間

一、Chrony簡介

Chrony是一個開源的自由軟體,像CentOS 7或基於RHEL 7作業系統,已經是預設服務,預設配置檔案在 /etc/chrony.conf 它能保持系統時間與時間伺服器(NTP)同步,讓時間始終保持同步。相對於NTP時間同步軟體,佔據很大優勢。其用法也很簡單。

Chrony有兩個核心元件,分別是:chronyd:是守護程序,主要用於調整核心中執行的系統時間和時間伺服器同步。它確定計算機增減時間的比率,並對此進行調整補償。chronyc:提供一個使用者介面,用於監控效能並進行多樣化的配置。它可以在chronyd例項控制的計算機上工作,也可以在一臺不同的遠端計算機上工作。

二、使用Chrony

2.1 環境

OS IP Roles
Centos 7.2 192.168.99.233 server
Centos 7.2 192.168.99.234 clinet

情況說明:兩臺機器都是內網,將192.168.99.233作為時間伺服器,192.168.99.234到此伺服器上同步時間!

2.2 安裝Chrony

Centos 7 系列系統已經預設安裝,如果沒有安裝,可使用以下命令進行安裝!

$ yum install chrony -y

2.3 啟動並加入開機自啟

$ systemctl restart chronyd && systemctl enable chronyd

2.4 firewalld設定

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

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

2.5 Chrony配置檔案詳解

$ egrep -v '^$|^#' /etc/chrony.conf 
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
# 預設使用pool.ntp.org專案中的公共伺服器。以server開,理論上你想新增多少時間伺服器都可以。
driftfile /var/lib/chrony/drift
# 根據實際時間計算出伺服器增減時間的比率,然後記錄到一個檔案中,在系統重啟後為系統做出最佳時間補償調整。
rtcsync
# 將啟用一個核心模式,在該模式中,系統時間每11分鐘會拷貝到實時時鐘(RTC)。
makestep 10 3
# 只有在因chronyd啟動時間超過指定的限制時(可使用負值來禁用限制)沒有更多時鐘更新時才生效。
hwtimestamp eth0
hwtimestamp eth1
hwtimestamp *
# 通過使用hwtimestamp指令啟用硬體時間戳
allow 192.168.0.0/16
deny 192.168/16
# 指定一臺主機、子網,或者網路以允許或拒絕NTP連線到扮演時鐘伺服器的機器
keyfile /etc/chrony.keys
# 指定包含NTP驗證金鑰的檔案。
logdir /var/log/chrony
# 指定日誌檔案的目錄。

2.6 設定時區

$ timedatectl        # 檢視當前系統時區
      Local time: Thu 2020-06-25 20:39:16 CST
  Universal time: Thu 2020-06-25 12:39:16 UTC
        RTC time: Thu 2020-06-25 12:39:16
       Time zone: Asia/Shanghai (CST, +0800)     # 注意這裡
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
$ timedatectl list-timezones   # 檢視所有可用的時區
$ timedatectl list-timezones |  grep  -E "Asia/S.*"
# 篩選式檢視在亞洲S開的上海可用時區
Asia/Sakhalin
Asia/Samarkand
Asia/Seoul
Asia/Shanghai
Asia/Singapore
Asia/Srednekolymsk
$ timedatectl set-timezone Asia/Shanghai
# 設定當前系統為Asia/Shanghai上海時區
$ chronyc -a makestep  # 設定完時區後,強制同步下系統時鐘
200 OK
$ timedatectl status  # 檢視時間同步狀態
$ timedatectl set-ntp true # 開啟網路時間同步(內網環境下,該步驟可省略)

2.7 伺服器叢集之間的系統時間同步

在生產環境中,其網路都是內網結構,那麼內網如何保證伺服器之間的時間同步呢?其實這個問題很簡單,只需要搭建一臺內網時間伺服器,然後讓所有計算機都到服務端(192.168.99.233)去同步時間即可。

具體操作:

服務端將默認同步的伺服器註釋,並新增以下內容:(表示與本機同步時間)

server 192.168.99.233 iburst

這樣我們需求的一臺內網時間伺服器已經配置完畢。


同樣在客戶端註釋掉其他server,並在客戶端(192.168.99.234)新增以下:

server 192.168.99.233 iburst

到此已經完成系統時間的同步。如有多臺機器,操作也是如此。

2.8 常用指令

$ chronyc sources -v    # 檢視 ntp_servers 狀態
$ chronyc sourcestats -v    # 檢視 ntp_sync 狀態
$ chronyc activity -v     # 檢視 ntp_servers 是否線上
$ chronyc tracking -v    # 檢視 ntp 詳細資訊
$ chronyc tracking       # 校準時間伺服器