centos7下配置ntp客戶端同步時間服務

需求:在CentOS7下配置NTP客戶端同步時間服務
簡介:
NTP服務是爲了時鐘同步使用,特別在一些實時性數據庫場景中很是重要。
Centos7下默認使用chronyd服務代替過渡ntpd服務,所以常常遇到大部分人仍是記住ntpd服務而不去配置chronyd服務,所以常常在centos7下遇到沒法使用ntp服務或ntp服務存在一些問題。如下就centos7下配置和使用ntp服務、ntp驗證、時區等配置進行講解。數據庫

本篇全部操做和講解只針對NTP客戶端,不涉及ntp-server操做

CentOS7下安裝和配置NTP(Centos六、redhat系列亦能夠參考,不衝突)

CentOS6和6以前的版本默認使用ndpd服務作客戶端去向ntp-server同步時間。

一、安裝ntp和ntpdate兩個rpm包。
使用yum install ntp、yum install ntpdate命令執行安裝操做(本次省略)
二、配置ntp客戶端文件【/etc/ntp.conf】中的server項, 只保留server的有效行(默認有3-4行server有效行去向公網同步時間,需註釋掉)。如ubuntu

server 172.29.12.120  perfer      #提供ntp-server的主機地址
server  172.29.120.12 perfer      #提供ntp-server的主機地址

三、啓動ntpd服務、並添加至開機啓動項。如centos

systemctl  start  ntpd        #啓動ntpd服務
systemctl  start  ntpdate
systemctl enable  ntpd        #將ntpd添加到開機啓動項
systemctl enable  ntpdate
systemctl is-enabled ntpd        #查看是否在開機啓動項
systemctl is-enabled ntpdate
systemctl list-unit-files | grep ntp     #查看是否在開機啓動項
systemctl status ntpd                     #查看ntpd服務的狀態

四、驗證服務器

ntpq -p       #查看該主機使用的ntp-server狀況和同步延時等信息;
 timedatectl      #查看ntpd服務或chronyd服務是否生效。只有centos七、redhat七、ubuntu14等以上(含)纔有該命令;

五、其餘配置(或添加時間同步的計劃任務)
使用ntpdate命令也能夠執行ntp時間同步,不須要ntp客戶的ntpd服務。如markdown

ntpdate 172.29.120.12     #向172.29.120.12的ntpserver主機同步本地系統時間。
ntpdate -u  172.29.120.12  ##同上,-u參數是能夠在客戶端ntpd服務啓動時同時執行的命令。

計劃任務中的時間同步,一樣的效果。也能夠和客戶端的ntpd服務同時存在。網絡

crontab -l
0 0 * * 0 /usr/sbin/ntpdate -u 172.29.120.12 || /usr/sbin/ntpdate -u 172.29.12.120

例子:
centos7下配置ntp客戶端同步時間服務
查看服務狀態 ntpstat ntptime timedatectl 三個命令看狀態
centos7下配置ntp客戶端同步時間服務socket

CentOS7下使用NTP遇到的問題

問題一、在CentOS7下使用NTP時,客戶端ntpd服務添加到開機啓動項中了,但主機系統啓動後ntpd服務仍是中止狀態(dead),沒法正常啓動。

解決以上現象有兩種方法 ,本人經常使用方法一的操做:
方法一
1.經過命令 systemctl enable ntpd 設置NTP服務開機自啓動。
2.重啓虛擬機後查看 服務運行狀態 systemctl status ntpd ,發現服務並無成功啓動。
3.查看chrony是否被設置爲開機自啓動。經過指令 systemctl is-enabled chronyd
或systemctl list-unit-files | grep chrony 查看,發現這個服務已經被設置爲開機自啓動因此致使NTP服務的自啓動失敗。

4.因此要把 chrony 的自啓動去掉。執行指令 systemctl disable chronyd 。
5.重啓虛擬機, 執行 systemctl status ntpd ,問題解決。
systemctl list-unit-files|grep ntpd
systemctl list-unit-files|grep chrony
centos7下配置ntp客戶端同步時間服務
方法二
須要開機自啓動某服務,第一個想到的固然是開機啓動自定義腳本
在Centos以前版本只要在 /etc/rc.d/rc.local 文件中加入 啓動服務的命令,當虛擬機重啓時就會執行該文件中的命令,服務也就啓動了。可是但Centos7版本,這個文件的權限被下降了,因此當你打開這個文件時,註釋中很友好的提示讓你給這個文件賦權,以確保它有可執行權限。chmod +x /etc/rc.d/rc.local 。
因此只要把指令寫到這個文件中,就能夠在開機時啓動服務或者讓虛擬機作其它事情。
chmod +x /etc/rc.d/rc.local
echo "systemctl start ntpd" >> !$
centos7下配置ntp客戶端同步時間服務ide

問題二、ntpdate命令執行報錯,提示ntpd服務已經存在(ntpdate:the NTP socket is in use, exiting)

報錯的緣由是由於客戶端有ntpd服務在運行。所以須要繼續執行,必須加-u參數,如
update -u 172.29.120.12
centos7下配置ntp客戶端同步時間服務測試

問題三、啓動了ntpd服務,卻未執行過同步時間操做。

須要檢查ntpd服務是否生效、並應用是否也生效了。如
centos7下配置ntp客戶端同步時間服務
centos7下配置ntp客戶端同步時間服務
查看狀態 ntpstat ntptime timedatectl
centos7下配置ntp客戶端同步時間服務centos7

附錄

一、npq -p 執行結果的參數解釋

centos7下配置ntp客戶端同步時間服務
ntpq -p命令列出了全部做爲時鐘源校訂過本地NTP服務器時鐘上層NTP服務器的列表,每一列的含義分別以下:
remote:響應請求的NTP服務器的名稱(IP地址或域名),帶「」的表示本地NTP服務器與該服務器同步
refid:遠程NTP服務器使用的上一級ntp服務器的IP地址
st:遠程NTP服務器的級別,因爲NTP是層級結構,有頂端的服務器,多層的Relay Server再到客戶端。因此服務器從高到低,級別能夠設定爲1~16級。爲了減緩負荷和網絡堵塞,原則上應該避免直接鏈接到級別爲1的服務器。
t:本地NTP服務器與遠程NTP服務器的通訊方式。u:單播;b:廣播;I:本地
when:上次成功請求後到如今的秒數
poll:本地NTP服務器與遠程NTP服務器同步的時間間隔。
reach:這是一個八進制的值,用來測試衡量前八次查詢是否成功和服務器鏈接。377表示都成功,0表示不成功
delay:網絡延時,單位爲微秒(μs)
offset:本地NTP服務器與遠程NTP服務器的時間偏移,單位爲毫秒(ms)。offset越接近於0,主機與NTP服務器的時間越接近
jitter:查詢誤差的分佈值,用於表示遠程NTP的網絡延時是否穩定,單位爲微秒(μs)*

二、timedatectl 命令的講解

timedatectl輸出解析
centos7下配置ntp客戶端同步時間服務
1.1.Local time
本地時間,初始值來自於RTC,由內核維護,系統啓動以後和RTC就沒有關係,一般等於RTC+時區值(如上圖的本地時間=RTC+8)

1.2.Universal time
系統時間永遠是UTC,在應用程序使用的時候轉換爲本地時間

1.3.RTC(real-time clock)time
指硬件時間,通常是主板上的特殊電路,專用用於記錄時間,有電池供電,不受服務器和操做系統的開啓關閉影響。也稱做BIOS時間。
須要注意的是:當/etc/sysconfig/clock 文件中 UTC=true時, BIOS 使用UTC時間; UTC=false時, BIOS 使用本地時間。
hwclock --localtime #顯示 BIOS 中實際的時間
hwclock --systohc #根據系統時間設置硬件時間

1.4.Time zone
本地時區,即服務器所在的時區,在中國一般使用Asia/Shanghai
timedatectl set-timezone "Asia/Shanghai" #設置時區爲上海

1.5.NTP enable
狀態爲「yes」,表示開啓NTP同步。
網絡時間協議,英文名稱:Network Time Protocol(NTP)是用來使計算機時間同步化的一種協議,它可使計算機對其服務器或時鐘源(如石英鐘,GPS等等)作同步化,它能夠提供高精準度的時間校訂。
timedatectl set-ntp true #開啓ntp同步
timedatectl set-ntp false #禁止ntp同步

1.6.NTP synchronized
爲「yes」,表示NTP同步完成。

1.7.RTC in local TZ
設置RTC時間,爲"no"表示未設置
timedatectl set-local-rtc 1 #將RTC設置爲本地時間
timedatectl set-local-rtc 0 #將RTC設置爲UTC

2.二、timedatectl經常使用命令
timedatectl set-time 15:58:30 #只設置時間
timedatectl set-time 20151120 #只設置日期
timedatectl set-time '16:10:40 2015-11-20' #設置時間和日期

以上是我的經驗總結,望多多指教

相關文章
相關標籤/搜索