Centos使用chrony做時間同步


Chrony是一個開源的自由軟件,在RHEL 7操作系統,已經是默認服務,默認配置文件在 /etc/chrony.conf 它能保持系統時間與時間服務器(NTP)同步,讓時間始終保持同步。相對NTP時間同步軟件,速度更快、配置和依賴都更簡單
Chrony有兩個核心組件,分別是:chronyd:是守護進程,主要用於調整內核中運行的系統時間和時間服務器同步。它確定計算機增減時間的比率,並對此進行調整補償。chronyc:提供一個用戶界面,用於監控性能並進行多樣化的配置。它可以在chronyd實例控制的計算機上工作,也可以在一台不同的遠程計算機上工作。

配置的時候,需要首先配置chrony的服務器端,然后配置客戶端與服務器端進行同步。如果基於外網的時鍾服務器,那可以不用配置服務器器端

1、chrony工具安裝

1、系統版本檢查,使用cat /etc/system-release
2、使用rpm -qa |grep chrony查看系統是否已安裝chrony,可看到默認已安裝chrony的包。
3、如果沒有安裝環境可使用yum install chrony命令安裝或者離線下載rpm包安裝,下載地址:http://rpm.pbone.net/index.php3?stat=3&limit=2&srodzaj=3&dl=40&search=chrony,找到對應版本下載即可。
4、下載完后使用rpm -ivh chrony-2.1.1-4.el7.centos.x86_64.rpm安裝即可

2、設置chrony的服務狀態,並關閉防火牆

1、服務狀態:

使用systemctl start chronyd.service  啟動chrony服務
使用systemctl enable chronyd.service  設置開機同步時間
使用systemctl status chronyd.service  查看服務狀態

2、直接關閉防火牆
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動
2、或者不關閉防火牆、但允許NTP服務
firewall-cmd --add-service=ntp --permanent
firewall-cmd --reload
因NTP使用123/UDP端口協議,所以允許NTP服務即可

3、服務端和客戶端chrony配置

1、服務端配置

1)、配置文件修改
  vi  /etc/chrony.conf
 a、修改第22行,Allow NTP client access from local network,配置允許訪問的客戶端列表,支持CIDR,例如:

  allow 192.168/16

 b、修改第29行設置同步,Serve time even if not synchronized to any NTP server.,打開注釋即可,即:

  local stratum 10
2)、重啟下服務端chrony服務,使用systemctl restart chronyd.service重啟即可。

2、客戶端配置

1)、配置文件修改
  vim  /etc/chrony.conf
 a、修改server即可,刪掉其他的,添加要同步時間的源服務器ip,格式如下:

  server x.x.x.x iburst
2)、重啟下客戶端chrony服務,使用systemctl restart chronyd.service重啟即可。

  客戶端使用chronyc sources -v命令完成同步即可

3)、查看同步狀態

[root@k8s-master tuned]# systemctl status chronyd -l
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-09-18 17:55:58 CST; 36s ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)
  Process: 16160 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
  Process: 16156 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 16158 (chronyd)
   Memory: 372.0K
   CGroup: /system.slice/chronyd.service
           └─16158 /usr/sbin/chronyd

Sep 18 17:55:58 k8s-master systemd[1]: Starting NTP client/server...
Sep 18 17:55:58 k8s-master chronyd[16158]: chronyd version 3.2 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SECHASH +SIGND +ASYNCDNS +IPV6 +DEBUG)
Sep 18 17:55:58 k8s-master chronyd[16158]: Frequency -39.629 +/- 0.032 ppm read from /var/lib/chrony/drift
Sep 18 17:55:58 k8s-master systemd[1]: Started NTP client/server.
Sep 18 17:56:31 k8s-master chronyd[16158]: Selected source 78.46.102.180

 

4、常用命令

  查看時間同步源:
  $ chronyc sources -v

  立即手工同步

  $chronyc -a makestep
  查看時間同步源狀態:
  $ chronyc sourcestats -v
  設置硬件時間
  硬件時間默認為UTC:
  $ timedatectl set-local-rtc 1
  啟用NTP時間同步:
  $ timedatectl set-ntp yes
  校准時間服務器:
  $ chronyc tracking
  最后需要注意的是,配置完/etc/chrony.conf后,需重啟chrony服務,否則可能會不生效。

5、各類參數說明

 

   配置參數說明

參數

參數說明

server

該參數可以多次用於添加時鍾服務器,必須以"server "格式使用。一般而言,你想添加多少服務器,就可以添加多少服務器

stratumweight

stratumweight指令設置當chronyd從可用源中選擇同步源時,每個層應該添加多少距離到同步距離。默認情況下,CentOS中設置為0,讓chronyd在選擇源時忽略源的層級

driftfile

chronyd程序的主要行為之一,就是根據實際時間計算出計算機增減時間的比率,將它記錄到一個文件中是最合理的,它會在重啟后為系統時鍾作出補償,甚至可能的話,會從時鍾服務器獲得較好的估值

rtcsync

rtcsync指令將啟用一個內核模式,在該模式中,系統時間每11分鍾會拷貝到實時時鍾(RTC)

allow/deny

這里你可以指定一台主機、子網,或者網絡以允許或拒絕NTP連接到扮演時鍾服務器的機器

cmdallow/cmddeny

跟上面相類似,只是你可以指定哪個IP地址或哪台主機可以通過chronyd使用控制命令

bindcmdaddress

該指令允許你限制chronyd監聽哪個網絡接口的命令包(由chronyc執行)。該指令通過cmddeny機制提供了一個除上述限制以外可用的額外的訪問控制等級

makestep

通常,chronyd將根據需求通過減慢或加速時鍾,使得系統逐步糾正所有時間偏差。在某些特定情況下,系統時鍾可能會漂移過快,導致該調整過程消耗很長的時間來糾正系統時鍾。該指令強制chronyd在調整期大於某個閥值時步進調整系統時鍾,但只有在因為chronyd啟動時間超過指定限制(可使用負值來禁用限制),沒有更多時鍾更新時才生效

  chronyc命令參數說明:

參數

參數說明

accheck 

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

activity 

該命令會顯示有多少NTP源在線/離線

add server

手動添加一台新的NTP服務器。

clients 

在客戶端報告已訪問到服務器

delete   

手動移除NTP服務器或對等服務器

settime 

手動設置守護進程時間

tracking 

顯示系統時間信息

 

 

6、設置時區(非必須)

  查看當前系統時區:

$ timedatectl
      Local time: Fri 2018-2-29 13:31:04 CST
  Universal time: Fri 2018-2-29 05:31:04 UTC
        RTC time: Fri 2018-2-29 08:17:20
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

如果你當前的時區不正確,請按照以下操作設置。

查看所有可用的時區:

$ timedatectl list-timezones

篩選式查看在亞洲S開的上海可用時區:

$ timedatectl list-timezones |  grep  -E "Asia/S.*"

Asia/Sakhalin
Asia/Samarkand
Asia/Seoul
Asia/Shanghai
Asia/Singapore
Asia/Srednekolymsk

設置當前系統為Asia/Shanghai上海時區:

$ timedatectl set-timezone Asia/Shanghai

設置完時區后,強制同步下系統時鍾:

$ chronyc -a makestep
200 OK
快速步驟

CentOS7.1采用chronyd進行時鍾同步

systemctl status chronyd           查看時鍾同步狀態

chronyc -a makestep         手動同步時鍾

配置時鍾同步服務器

vim /etc/chrony.conf

里面會有類似

server 0.pool.ntp.org iburst

server 1.pool.ntp.org iburst

server 2.pool.ntp.org iburst

server 3.pool.ntp.org iburst

把你的ntpd server放進去,然后執行

systemctl restart chronyd.service

systemctl enable chronyd.service 

 

參考:

詳解:Linux Chrony 設置服務器集群同步時間

RHEL7 -- 使用Chrony設置時間與時鍾服務器同步


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM