當(dāng)前位置 主頁(yè) > 技術(shù)大全 >
無(wú)論是在分布式系統(tǒng)、數(shù)據(jù)庫(kù)集群,還是在任何需要高精度時(shí)間戳的應(yīng)用場(chǎng)景中,時(shí)間的準(zhǔn)確性和一致性都是保證系統(tǒng)穩(wěn)定運(yùn)行的基礎(chǔ)
Network Time Protocol(NTP)作為一種標(biāo)準(zhǔn)的時(shí)間同步協(xié)議,為計(jì)算機(jī)系統(tǒng)之間提供了高效、可靠的時(shí)間同步服務(wù)
本文將詳細(xì)介紹在Linux 6系統(tǒng)中如何配置和使用NTP服務(wù),以實(shí)現(xiàn)時(shí)間同步
NTP協(xié)議概述 NTP是在計(jì)算機(jī)系統(tǒng)之間通過(guò)分組交換進(jìn)行時(shí)鐘同步的一個(gè)網(wǎng)絡(luò)協(xié)議,位于OSI模型的應(yīng)用層
它用于使客戶(hù)端和服務(wù)器之間進(jìn)行時(shí)鐘同步,提供高精準(zhǔn)度的時(shí)間校正
NTP服務(wù)器從權(quán)威時(shí)鐘源(如原子鐘、GPS)接收精確的協(xié)調(diào)世界時(shí)(UTC),客戶(hù)端再?gòu)姆⻊?wù)器請(qǐng)求和接收時(shí)間
NTP基于UDP報(bào)文進(jìn)行傳輸,使用的UDP端口號(hào)為123
NTP由David L. Mills教授設(shè)計(jì),是最早用于網(wǎng)絡(luò)中時(shí)鐘同步的標(biāo)準(zhǔn)之一
當(dāng)前協(xié)議為版本4(NTPv4),這是一個(gè)RFC 5905文檔中的建議標(biāo)準(zhǔn)
NTP通過(guò)層級(jí)(Stratum)來(lái)組織模型結(jié)構(gòu),層級(jí)中的每層被稱(chēng)為一個(gè)Stratum
通常將從權(quán)威時(shí)鐘獲得時(shí)鐘同步的NTP服務(wù)器的層數(shù)設(shè)置為Stratum 1,并將其作為主時(shí)間服務(wù)器,為網(wǎng)絡(luò)中其他的設(shè)備提供時(shí)鐘同步
Stratum 2從Stratum 1獲取時(shí)間,Stratum 3從Stratum 2獲取時(shí)間,以此類(lèi)推
時(shí)鐘層數(shù)的取值范圍為1到16,取值越小,時(shí)鐘準(zhǔn)確度越高
層數(shù)為1到15的時(shí)鐘處于同步狀態(tài),層數(shù)為16的時(shí)鐘被認(rèn)為是未同步的,不能使用
NTP的工作原理 NTP最典型的授時(shí)方式是Client/Server方式
客戶(hù)端首先向服務(wù)端發(fā)送一個(gè)NTP請(qǐng)求報(bào)文,其中包含該報(bào)文離開(kāi)客戶(hù)端的時(shí)間戳t1
NTP請(qǐng)求報(bào)文到達(dá)NTP服務(wù)器時(shí),NTP服務(wù)器的時(shí)刻為t2
當(dāng)服務(wù)端接收到該報(bào)文時(shí),NTP服務(wù)器處理之后,于t3時(shí)刻發(fā)出NTP應(yīng)答報(bào)文
該應(yīng)答報(bào)文中攜帶報(bào)文離開(kāi)NTP客戶(hù)端時(shí)的時(shí)間戳t1、到達(dá)NTP服務(wù)器時(shí)的時(shí)間戳t2、離開(kāi)NTP服務(wù)器時(shí)的時(shí)間戳t3
客戶(hù)端在接收到響應(yīng)報(bào)文時(shí),記錄報(bào)文返回的時(shí)間戳t4
通過(guò)這四個(gè)時(shí)間戳,客戶(hù)端可以計(jì)算出NTP報(bào)文從客戶(hù)端到服務(wù)器的往返延遲delay和客戶(hù)端與服務(wù)端之間的時(shí)間差offset
NTP客戶(hù)端根據(jù)計(jì)算得到的offset來(lái)調(diào)整自己的時(shí)鐘,實(shí)現(xiàn)與NTP服務(wù)器的時(shí)鐘同步
Linux 6 NTP配置步驟 1. 安裝NTP軟件 在Linux 6系統(tǒng)上,首先需要安裝NTP軟件包
可以使用以下命令: sudo yum install ntp 2. 啟動(dòng)NTP服務(wù) 安裝完成后,啟動(dòng)NTP服務(wù)并設(shè)置開(kāi)機(jī)自啟動(dòng): sudo systemctl start ntpd sudo systemctl enable ntpd 可以通過(guò)以下命令查看NTP服務(wù)運(yùn)行狀態(tài): sudo systemctl status ntpd 3. 配置NTP服務(wù)器 編輯NTP配置文件,通常位于`/etc/ntp.conf`
可以使用以下命令: sudo vim /etc/ntp.conf 配置文件中的關(guān)鍵部分包括: - 服務(wù)器地址:指定NTP服務(wù)器的地址
可以使用公共NTP服務(wù)器地址(如`ntp.aliyun.com`),也可以使用內(nèi)網(wǎng)NTP服務(wù)器地址
- 訪問(wèn)權(quán)限:配置NTP服務(wù)器的訪問(wèn)權(quán)限,以控制哪些客戶(hù)端可以訪問(wèn)NTP服務(wù)器
例如,使用第三方NTP地址進(jìn)行時(shí)間同步,可以添加如下內(nèi)容: server ntp.aliyun.com iburst 將默認(rèn)的pool配置注釋掉,前面加``號(hào)代表注釋
4. 測(cè)試NTP服務(wù)器 配置完成后,使用以下命令測(cè)試NTP服務(wù)器: ntpstat 也可以使用`ntpq -pn`命令查看NTP服務(wù)器的同步狀態(tài)
5. 配置內(nèi)網(wǎng)NTP服務(wù)器和客戶(hù)端 如果需要在內(nèi)網(wǎng)中部署NTP服務(wù)器,可以配置內(nèi)網(wǎng)NTP服務(wù)器和客戶(hù)端
配置內(nèi)網(wǎng)NTP服務(wù)器時(shí),添加如下內(nèi)容: restrict 192.168.58.1 mask 255.255.255.0 nomodify notrap server 127.127.1.0 fudge 127.127.1.0 stratum 10 其中,`restrict`語(yǔ)句用于限制特定IP地址的訪問(wèn)權(quán)限,`server`語(yǔ)句用于指定一個(gè)內(nèi)部時(shí)鐘數(shù)據(jù)
配置內(nèi)網(wǎng)NTP客戶(hù)端時(shí),將`server`指定為內(nèi)網(wǎng)NTP服務(wù)器地址即可
NTP服務(wù)的高級(jí)配置與優(yōu)化 1. 防火墻設(shè)置 確保防火墻不會(huì)阻擋NTP服務(wù)的通信
NTP使用UDP端口123,需要確保該端口在防火墻中是開(kāi)放的
2. 定時(shí)任務(wù) 為了確保系統(tǒng)時(shí)間持續(xù)準(zhǔn)確,可以設(shè)置一個(gè)定時(shí)任務(wù)來(lái)定期執(zhí)行NTP同步
例如,使用`cron`設(shè)置一個(gè)每天同步一次時(shí)間的任務(wù): sudo crontab -e 在打開(kāi)的編輯器中,添加以下行: 0 - 0 /usr/sbin/ntpdate ntp服務(wù)器地址 > /dev/null 2>&1 3. 硬件時(shí)鐘同步 如果系統(tǒng)重啟后時(shí)間重置,可能需要配置硬件時(shí)鐘(RTC)
可以使用`hwclock`命令來(lái)同步系統(tǒng)時(shí)間和硬件時(shí)鐘: sudo hwclock --systohc 4. 檢查和解決問(wèn)題 - 檢查NTP配置:確認(rèn)配置文件中NTP服務(wù)器地址和端口是否正確
- 檢查網(wǎng)絡(luò)連接:使用ping命令檢測(cè)NTP服務(wù)器是否能夠連接
- 查看系統(tǒng)日志:系統(tǒng)日志中可能包含有關(guān)NTP錯(cuò)誤或系統(tǒng)時(shí)間問(wèn)題的詳細(xì)信息,可以使用`sudo journalctl -xe`查看
- 禁用NTP服務(wù)自動(dòng)啟動(dòng):如果更傾向于使用`ntpdate`而非NTP守護(hù)進(jìn)程,可以禁用NTP服務(wù)的自動(dòng)啟動(dòng)
NTP與其他時(shí)間同步工具的比較 除了NTP,還有其他時(shí)間同步工具可供選擇,如`chrony`和`timedatectl`
`chrony`提供了更多的功能和更好的性能,尤其適用于網(wǎng)絡(luò)不穩(wěn)定的環(huán)境
`timedatectl`是systemd提供的時(shí)間管理工具,可以方便地查看和設(shè)置系統(tǒng)時(shí)間與時(shí)區(qū)
然而,NTP作為最早的時(shí)間同步協(xié)議之一,其穩(wěn)定性和可靠性得到了廣泛認(rèn)可
在大多數(shù)應(yīng)用場(chǎng)景中,NTP仍然是首選的時(shí)間同步解決方案
結(jié)論 通過(guò)本文的介紹,我們了解了NTP協(xié)議的基本原理、Linux 6系統(tǒng)中NTP服務(wù)的配置步驟以及高級(jí)配置與優(yōu)化方法
NTP作為一種標(biāo)準(zhǔn)的時(shí)間同步協(xié)議,為計(jì)算機(jī)系統(tǒng)之間提供了高效、可靠的時(shí)間同步服務(wù)
在Linux 6系統(tǒng)中,通過(guò)正確配置和使用NTP服務(wù),我們可以確保系統(tǒng)時(shí)間的準(zhǔn)確性和一致性,從而提高系統(tǒng)的穩(wěn)定性和性能