1. 程式人生 > >網絡時間服務的簡介及搭建

網絡時間服務的簡介及搭建

linux類 時鐘服務器 dcm log 穩定性 清華大學 true 偏差 stats

網絡時間服務NTP/CHRONY

  當多臺主機協作工作時,各個主機的時間同步很重要,時間不一致會造成很多重要應用的故障,如:加密協議、日誌、集群等,利用NTP(Network Time Protocol)協議使網絡中的各個計算機時間達到同步。目前NTP協議屬於運維基礎架構中必備的基本服務之一

實現時間同步的工具

  1) ntp
  2) chrony

ntp

  將系統時鐘和世界協調時UTC同步,精度在局域網內可達0.1ms,在互聯網上絕大多數的地方精度可以達到1-50ms

chrony

  實現NTP協議的的自由軟件。可使系統時鐘與NTP服務器,參考時鐘(例如GPS接收器)以及使用手表和鍵盤的手動輸入進行同步。還可以作為NTPv4(RFC 5905)服務器和對等體運行,為網絡中的計算機提供時間服務。設計用於在各種條件下良好運行,包括間歇性和高度擁擠的網絡連接,溫度變化(計算機時鐘對溫度敏感),以及不能連續運行或在虛擬機上運行的系統。通過Internet同步的兩臺機器之間的典型精度在幾毫秒之內,在LAN上,精度通常為幾十微秒。利用硬件時間戳或硬件參考時鐘,可實現亞微秒的精度

chrony的優勢

  1. 更快的同步只需要數分鐘而非數小時時間,從而最大程度減少了時間和頻率誤差,對於並非全天 24 小時運行的虛擬計算機而言非常有用
  2. 能夠更好地響應時鐘頻率的快速變化,對於具備不穩定時鐘的虛擬機或導致時鐘頻率發生變化的節能技術而言非常有用
  3. 在初始同步後,它不會停止時鐘,以防對需要系統時間保持單調的應用程序造成影響
  4. 在應對臨時非對稱延遲時(例如,在大規模下載造成鏈接飽和時)提供了更好的穩定性
  5. 無需對服務器進行定期輪詢,因此具備間歇性網絡連接的系統仍然可以快速同步時鐘

關於chrony的介紹

安裝包名:chrony

兩個主要的程序:chronyd、chronyc

  chronyd:後臺運行的守護進程,用於調整內核中運行的系統時鐘和時鐘服務器同步。它確定計算機增減時間的比率,並對此進行補償

  chronyc:命令行用戶工具,用於監控性能並進行多樣化的配置。它可以在chronyd實例控制的計算機上工作,也可在一臺不同的遠程計算機上工作

服務unit文件

  /usr/lib/systemd/system/chronyd.service

監聽端口

  323/udp,123/udp

配置文件

  /etc/chrony.conf

配置文件中參數的介紹

  server - 可用於時鐘服務器,iburst 選項當服務器可達時,發送一個八個數據包而不是通常的一個數據包。 包間隔通常為2秒,可加快初始同步速度

  driftfile - 根據實際時間計算出計算機增減時間的比率,將它記錄到一個文件中,會在重啟後為系統時鐘作出補償

  rtcsync - 啟用內核模式,系統時間每11分鐘會拷貝到實時時鐘(RTC)

  allow / deny - 指定一臺主機、子網,或者網絡以允許或拒絕訪問本服務器

  cmdallow / cmddeny - 可以指定哪臺主機可以通過chronyd使用控制命令

  bindcmdaddress - 允許chronyd監聽哪個接口來接收由chronyc執行的命令

  makestep - 通常chronyd將根據需求通過減慢或加速時鐘,使得系統逐步糾正所有時間偏差。在某些特定情況下,系統時鐘可能會漂移過快,導致該調整過程消耗很長的時間來糾正系統時鐘。該指令強制chronyd在調整期大於某個閥值時調整系統時鐘

  local stratum 10 - 即使server指令中時間服務器不可用,也允許將本地時間作為標準時間授時給其它客戶端

chronyc命令

  help命令可以查看更多chronyc的交互命令
  accheck 檢查是否對特定主機可訪問當前服務器
  activity 顯示有多少NTP源在線/離線
  sources [-v] 顯示當前時間源的同步信息
  sourcestats [-v]顯示當前時間源的同步統計信息
  add server 手動添加一臺新的NTP服務器
   clients 報告已訪問本服務器的客戶端列表
  delete 手動移除NTP服務器或對等服務器
  settime 手動設置守護進程時間
  sracking 顯示系統時間信息

公共NTP服務

pool.ntp.org:項目是一個提供可靠易用的NTP服務的虛擬集群

  cn.pool.ntp.org,0-3.cn.pool.ntp.org

阿裏雲公共NTP服務器

  Unix/linux類:ntp.aliyun.com,ntp1-7.aliyun.com
  windows類: time.pool.aliyun.com

大學ntp服務

  s1a.time.edu.cn 北京郵電大學
  s1b.time.edu.cn 清華大學
  s1c.time.edu.cn 北京大學

國家授時中心服務器

  210.72.145.44

時間工具

timedatectl

  查看日期時間、時區及NTP狀態:timedatectl
  查看時區列表:timedatectl list-timezones
  修改時區:timedatectl set-timezone Asia/Shanghai
  修改日期時間:timedatectl set-time "2017-01-23 10:30:00"
  開啟NTP: timedatectl set-ntp true/flase

system-config-date:圖形化配置chrony服務的工具

實驗:網絡時間同步

  本次實驗通過系統時間、硬件時間的設定和修改;
  通過ntp、chrony兩個服務實現時間同步。
centos6 192.168.36.100 兩個網卡:1、外網卡DHCP獲取IP,通過配置NTP實現外網時鐘同步。2、內網卡充當內網時鐘同步服務器
centos7 192.168.36.101 內網客戶端

兩臺主機查看並修改系統時間

[[email protected] ~]# date
Thu Apr 18 15:54:17 CST 2019
[[email protected] ~]# date -s "-1 years"
Wed Apr 18 15:54:27 CST 2018

ntp配置文件修改

[[email protected] ~]# vim /etc/ntp.conf
...
8 restrict default kod nomodify #允許客戶端進行網絡校時
9 restrict -6 default kod nomodify notrap nopeer noquery
...
22 server 172.22.0.1 iburst #設定NTP主機來源,其中iburst也可以設置成prefer,表示優先此主機
23 #server 0.centos.pool.ntp.org iburst
24 #server 1.centos.pool.ntp.org iburst
25 #server 2.centos.pool.ntp.org iburst
26 #server 3.centos.pool.ntp.org iburst
...

各選項信息

restrict 控制相關權限

語法為: restrict IP地址 mask 子網掩碼 參數

其中IP地址也可以是default ,default 就是指所有的IP
參數有以下幾個

    ignore  :關閉所有的 NTP 聯機服務  
    nomodify:客戶端不能更改服務端的時間參數,但是客戶端可以通過服務端進行網絡校時  
    notrust :客戶端除非通過認證,否則該客戶端來源將被視為不信任子網  
    noquery :不提供客戶端的時間查詢:用戶端不能使用ntpq,ntpc等命令來查詢ntp服務器  
    notrap :不提供trap遠端登陸:拒絕為匹配的主機提供模式 6 控制消息陷阱服務。陷阱服務是 ntpdq 控制消息協議的子系統,用於遠程事件日誌記錄程序  
    nopeer :用於阻止主機嘗試與服務器對等,並允許欺詐性服務器控制時鐘  
    kod : 訪問違規時發送 KoD 包  
    restrict -6 表示IPV6地址的權限設置  

啟動服務實現時間同步

服務器同步網絡時間

[[email protected] ~]# ntpdate 172.22.0.1
18 Apr 10:38:25 ntpdate[10305]: adjust time server 172.22.0.1 offset 0.002210 sec

重啟服務

[[email protected] ~]# service ntpd start
Starting ntpd:                                             [  OK  ]

監聽udp的123端口

[[email protected] ~]# ss -lun
State       Recv-Q Send-Q              Local Address:Port                Peer Address:Port
UNCONN      0      0                       127.0.0.1:981                            *:*
UNCONN      0      0                               *:111                            *:*
UNCONN      0      0                               *:631                            *:*
UNCONN      0      0                               *:43130                          *:*
UNCONN      0      0                   172.22.58.250:123                            *:*
UNCONN      0      0                  192.168.36.100:123                            *:*
UNCONN      0      0                       127.0.0.1:123                            *:*
UNCONN      0      0                               *:123                            *:*
UNCONN      0      0                               *:923                            *:*
UNCONN      0      0                              :::56515                         :::*
UNCONN      0      0                              :::111                           :::*
UNCONN      0      0                             ::1:123                           :::*
UNCONN      0      0        fe80::20c:29ff:fe5a:43c1:123                           :::*
UNCONN      0      0        fe80::20c:29ff:fe5a:43b7:123                           :::*
UNCONN      0      0                              :::123                           :::*
UNCONN      0      0                              :::923                           :::*

查看ntp服務器

[[email protected] ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*172.22.0.1      144.76.76.107    3 u   19   64    1    0.801   -1.318   0.334

檢查時間是否同步

[[email protected] ~]# date
Thu Apr 18 15:56:48 CST 2019

由於centos6開啟了ntpd服務,所以可以充當時間服務器被客戶端使用

修改時間並通過ntpdate進行時間同步

[[email protected] ~]#date -s "-1 years"
Wed Apr 18 16:37:40 CST 2018
[[email protected] ~]#ntpdate 192.168.36.100
18 Apr 16:38:00 ntpdate[14923]: step time server 192.168.36.100 offset 31536000.000052 sec

在centos7上chrony軟件實現時間永久同步

  chrony同ntp,也可以配置成客戶端和服務器端兩種

說明

/usr/bin/chronyc是客戶端程序  
/usr/sbin/chronyd是服務器端查詢  
/usr/lib/systemd/system/chronyd.service是服務控制?件  

修改配置文件

[[email protected] ~]#vim /etc/chrony.conf
3 server 192.168.36.100 iburst
4 #server 0.centos.pool.ntp.org iburst
5 #server 1.centos.pool.ntp.org iburst
6 #server 2.centos.pool.ntp.org iburst
7 #server 3.centos.pool.ntp.org iburst

啟動服務並設置開機啟動

[[email protected] ~]#systemctl start chronyd.service
[[email protected] ~]#systemctl start chronyd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/chronyd.service to /usr/lib/sservice.

監聽udp的323端口

[[email protected] ~]#ss -lun | grep 323
UNCONN     0      0      127.0.0.1:323                      *:*
UNCONN     0      0          ::1:323                     :::*

查看時間源的同步信息

[[email protected] ~]#chronyc sources -v
210 Number of sources = 1

  .-- Source mode  ‘^‘ = server, ‘=‘ = peer, ‘#‘ = local clock.
 / .- Source state ‘*‘ = current synced, ‘+‘ = combined , ‘-‘ = not combined,
| /   ‘?‘ = unreachable, ‘x‘ = time may be in error, ‘~‘ = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.36.100                4   6   377     2    +14us[  +33us] +/-  237ms

查看時間是否同步

[[email protected] ~]#date
Thu Apr 18 17:01:16 CST 2019

網絡時間服務的簡介及搭建