如果您發現執行個體中的系統時間存在異常,或者希望分布式系統中多台機器的時間保持一致性,請參考本文以瞭解時間同步服務及其相關配置。
時間不同步的判斷方法
在管理和維護 ECS執行個體時,時間同步是確保系統正常啟動並執行關鍵因素。如果您懷疑執行個體中的時間不同步,可以通過以下方法進行判斷:
比較系統時間與真即時間:檢查 ECS 執行個體上顯示的系統時間,並將其與您擷取到的真即時間(例如通過手機、電視或其他可靠的時間服務)進行對比。如果兩者之間存在明顯的時間誤差,說明系統時間可能不同步。
監測定時任務的執行:定期檢查已設定的定時任務(如 cron 作業等)。如果發現某些任務沒有按照預期的時間執行,或者執行時間出現了異常,可能是由於系統時間不準確導致的。
檢查 Tracking 日誌:在分布式系統中,Tracking 日誌用於記錄交易處理的順序和狀態。如果發現在日誌中出現鏈路混亂的情況,例如記錄順序顛倒或者時間戳記不可預測,可能表明系統時間在不同節點間不同步,從而影響資料一致性。
安全認證過程中的錯誤:在進行安全認證時,如果出現錯誤資訊,例如“時間戳記無效”或“認證失敗”,這通常表示系統時間與證明伺服器的時間存在偏差。許多認證機制(如 Kerberos)依賴於時間戳記來確保請求的有效性。
時間同步的重要性
時間的準確性與一致性對於ECS執行個體至關重要,它能夠確保定時任務的準確執行、日誌時間戳記的正確記錄以及分布式ECS叢集中執行個體的時鐘一致性。
當系統日誌顯示不同執行個體或服務的時間戳記存在顯著差異時,尤其是在進行故障排查時,可能會導致問題定位變得困難。此外,依賴於時間戳記的應用程式(例如金融交易系統、調度任務和科學計算)在執行過程中如果出現延遲或異常,通常表明存在時間不同步的問題。
在分布式系統中,如果探索資料更新出現衝突或記錄覆蓋,使用者需要審慎檢查所有裝置的時間設定。此外,在進行實驗或資料分析時,多個裝置的時間不一致可能會影響結果的準確性和可重複性,進一步影響決策和業務容錯能力。因此,定期監控和維護時間同步服務不僅能確保系統的穩定性和安全性,還能提高整體業務運行效率。使用者應對任何此類異常訊號給予高度重視,以便及時採取措施維護系統的時間準確性。
時間同步服務
時間同步服務用於與NTP伺服器同步時間以確保ECS執行個體時間準確,它是基於網路時間協議(Network Time Protocol,簡稱NTP)實現的,時間同步服務用於同步電腦的系統時間與世界各地的NTP伺服器。
Linux作業系統
在Linux執行個體中,較為常見的兩種時間同步的工具有:Chrony與NTP服務。Chrony與NTP服務的對比如下表。
時間同步服務 | 簡介 | 使用情境 | 時間同步精度 | 穩定性 |
Chrony | Chrony是一個實現網路時間協議的軟體包,用於同步電腦的系統時間與世界各地的NTP伺服器。Chrony特別適合在變化的網路環境中運行,能夠以快速和高效的方式調整系統時間。 | 適用於高精度、高穩定性、自動化等情境。 | 較高 | 能夠更好地適應高延遲和不穩定的網路環境。 |
NTP服務 | NTP服務是一種經典的時間同步服務,是NTP協議的一個實現。NTP服務適用於長期啟動並執行伺服器,特別是在網路條件比較穩定的環境下。 | 適用於大多數無需太高精度要求的普通情境。 | 正常 | 僅能適應一定程度的網路不穩定。 |
時間同步服務預設配置
查看時間同步服務進程
阿里雲公用鏡像中包含了預設的時間同步配置,基於公用鏡像建立的ECS執行個體會預設運行Chrony進行時間同步,正常情況下您無需幹預時間同步服務。
阿里雲ECS執行個體中,CentOS 6等部分老舊鏡像配置為NTP服務,當前NTP服務官方已經不再維護。如果ECS執行個體使用的是NTP服務,且業務不依賴NTP服務,建議升級NTP服務到Chrony服務。
您可以執行以下命令查看ECS執行個體中已使用的時間同步服務。
sudo ps aux | grep -E "ntpd|chronyd"
返回如下資訊時表示使用的時間同步服務為Chrony。
返回如下資訊時表示使用的時間同步服務為NTP服務。
查看時間同步伺服器位址
阿里雲公用鏡像中已預設配置了阿里雲NTP伺服器位址。您可以執行以下命令查看ECS執行個體中目前時間同步伺服器位址。
Chrony。
cat /etc/chrony/chrony.conf
NTP服務。
cat /etc/ntp.conf
在設定檔中,尋找以 server
開頭的行,這些行指定多個 NTP 伺服器位址及相關參數配置。
在設定檔中,可以指定多個 NTP 伺服器,這樣做主要是為了提高時間同步的可靠性和增強容錯能力。
容錯性:使用多個 NTP 伺服器可以確保即使某個伺服器不可用,系統仍然可以從其他可用的 NTP 伺服器擷取時間。這會大大減少由於時間源不可用而導致的時間不同步問題。
可靠性:不同的 NTP 伺服器可能會有不同的時間源和網路延遲。通過串連多個時間伺服器,
chrony
可以選擇最穩定、最可靠的時間源進行同步,從而提供更準確的時間。負載平衡:當多個 NTP 伺服器被指定時,
chrony
可以在它們之間分配請求,以避免對單一伺服器過多請求,從而減輕伺服器負擔並提高整體效能。提高同步速度:在初次啟動或發生時間偏差時,多個伺服器可以協助加速時間同步過程。使用多個伺服器,
chrony
可以更快地確定準確時間並進行調整。減少網路延遲影響:多個伺服器有助於減少由網路延遲引起的影響。
chrony
會選擇響應速度最快的伺服器進行時間校正,以確保時鐘始終準確。
查看目前時間
您可以執行以下命令查看當前系統時間是否準確。
Chrony
執行以下命令可以擷取目前時間同步狀態的詳細資料,包括系統時間偏差、系統時間的穩定性以及最後一次同步的時間等。您可以通過查看System time評估目前時間是否準確,如本樣本中的0.000025116 seconds slow of NTP time
表示當前系統時間比NTP服務時間慢。
sudo chronyc tracking
返回資訊樣本如下。
NTP服務
執行以下命令可以擷取已配置的NTP伺服器以及對應的狀態指標,其中位移量offset可以大致表示本地時間和伺服器時間的差異。
# 擷取所有已配置的NTP伺服器以及對應的狀態指標
sudo ntpd -p
# sudo ntpd -p <server> 擷取特定NTP伺服器對應狀態指標
sudo ntpd -p ntp3.aliyun.com
返回資訊樣本如下:
返回資訊欄位解釋:
remote
:NTP 伺服器的地址。refid
:參考時鐘的標識(例如 GPS、Local Clock 等)。st
:伺服器的層次層級(stratum),數值越小,表示時間源越精確。t
:連線類型(u 代表 unicast,m 代表 multicast,b 代表 broadcast)。when
:上次成功查詢的時間(以秒為單位)。poll
:NTP 請求伺服器資訊的間隔(以秒為單位)。reach
:最近 8 次查詢的成功與失敗狀態的標識碼。delay
:單次請求與響應之間的延遲。offset
:系統時間與伺服器時間的差值(延遲)。jitter
:時間延遲的變化程度。
手動同步時間
阿里雲ECS執行個體預設啟動並執行Chrony或者NTP服務會逐步調整時間,避免時間跳變的風險,不建議手動同步時間。如果因為業務需要,必須要手動同步時間,請按以下步驟進行操作。
Chrony
sudo chronyc makestep
當系統返回資訊為200 OK
時,表示Chrony服務已手動同步完成。
NTP服務
當前NTP服務官方已經停止維護,使用ntpdate
進行手動時間同步有時鐘跳變的風險,如必須使用,請在ntpdate命令後添加三個或三個以上的時鐘源,儘可能規避風險。更多阿里雲NTP伺服器資訊,請參見阿里雲NTP伺服器位址列表。
Virtual Private Cloud執行個體。
sudo ntpdate ntp.cloud.aliyuncs.com ntp7.cloud.aliyuncs.com ntp10.cloud.aliyuncs.com ntp11.cloud.aliyuncs.com ntp12.cloud.aliyuncs.com
傳統網路執行個體。
sudo ntpdate ntp1.cloud.aliyuncs.com ntp2.cloud.aliyuncs.com ntp3.cloud.aliyuncs.com ntp4.cloud.aliyuncs.com ntp5.cloud.aliyuncs.com
配置NTP伺服器位址
如果需要設定特定的 NTP 伺服器進行時間同步,您也可以通過以下步驟進行配置。
在分布式ECS叢集中,為保證分布式叢集執行個體的時鐘一致性,請確保所有執行個體都配置為指向同一或可靠的 NTP 服務地址。
Chrony
遠端連線Linux執行個體。具體操作,請參見使用Workbench工具以SSH協議登入Linux執行個體。
配置NTP伺服器。
如果您需要配置為阿里雲的NTP伺服器,請按照下面步驟中的
<NTP伺服器>進行配置
,具體請參見阿里雲NTP伺服器位址列表。關於如何選擇阿里雲NTP伺服器位址,請參見NTP服務同步異常怎麼辦?。執行以下命令,進入
chrony
設定檔。sudo vim /etc/chrony.conf
屏蔽不需要的NTP伺服器,如下圖所示,在設定檔中將不需要使用的NTP服務注釋掉。
添加新的NTP伺服器。如下圖所示,您可以在設定檔中添加新的NTP伺服器
ntp12.cloud.aliyuncs.com
;具體可用NTP伺服器位址請參見附錄阿里雲NTP伺服器位址列表。儲存設定檔並退出,執行以下命令重啟
chronyd
並設定開機自啟動。sudo systemctl restart chronyd.service sudo systemctl enable chronyd.service
查看Chrony服務狀態。
執行以下命令,查看本機時間同步狀態,用於驗證服務是否已啟動。
sudo chronyc tracking
執行以下命令,查看時間同步伺服器列表。
sudo chronyc -n sources -v
NTP服務
遠端連線Linux執行個體。具體操作,請參見使用Workbench工具以SSH協議登入Linux執行個體。
配置NTP伺服器。
如果您需要配置為阿里雲的NTP伺服器,請按照下面步驟中的
<NTP伺服器>進行配置
,具體請參見阿里雲NTP伺服器位址列表。關於如何選擇阿里雲NTP伺服器位址,請參見NTP服務同步異常怎麼辦?。執行以下命令,進入
NTP
設定檔。sudo vim /etc/ntp.conf
屏蔽不需要的NTP伺服器,如下圖所示,在設定檔中將不需要使用的NTP服務注釋掉。
添加新的NTP伺服器。格式為
server <ntp伺服器位址> minpoll <最小請求間隔> maxpoll <最大請求間隔> iburst
。如下圖所示,您可以在設定檔中添加新的NTP伺服器ntp12.cloud.aliyuncs.com
。具體可用NTP伺服器位址請參見附錄阿里雲NTP伺服器位址列表。儲存設定檔並退出,執行以下命令重啟
ntpd
。sudo service ntpd restart
啟動NTP服務。
依次執行以下命令,啟動
NTP
服務並設定開機自啟動。sudo service ntpd start sudo chkconfig ntpd on
執行以下命令,查看NTP服務運行狀態。
sudo ntpstat
執行以下命令,查看NTP服務對等端的列表資訊。
sudo ntpq -p
升級NTP服務到Chrony服務
阿里雲ECS執行個體中,CentOS 6等部分老舊鏡像配置為NTP服務,當前NTP服務官方已經不再維護。如果ECS執行個體使用的是NTP服務,且業務不依賴NTP服務,建議升級為Chrony服務。
卸載ntpd。
在升級之前,建議運行以下命令先卸載現有的
ntpd
服務。# Alibaba Cloud Linux / CentOS / RHEL sudo yum remove ntp # Ubuntu/Debian sudo apt remove ntp
運行以下命令安裝
Chrony
。# Alibaba Cloud Linux / CentOS / RHEL sudo yum install chrony # Ubuntu/Debian sudo apt install chrony
配置
Chrony
。Chrony
的設定檔通常位於/etc/chrony.conf
。在此檔案中,您可以添加您的 NTP 伺服器和其他配置。這是一個簡單的chrony.conf
樣本:# NTP server settings server ntp4.aliyun.com minpoll 4 maxpoll 10 iburst server ntp5.aliyun.com iburst # 指定漂移檔案的位置 driftfile /var/lib/chrony/drift # 允許從本地查詢 chronyd allow 127.0.0.1
說明參數解析:
server ntp.cloud.aliyuncs.com: 這是 NTP 伺服器的網域名稱。
chrony
將串連到這個伺服器以擷取時間同步。minpoll: 這個參數指定了最小的輪詢間隔(以 2 的冪為單位)。
minpoll 4
表示最小的輪詢間隔為24=16秒。這意味著chrony
至少每 16 秒就會與此伺服器進行一次同步請求。maxpoll: 這個參數指定了最大的輪詢間隔。
maxpoll 10
表示最大的輪詢間隔為210=1024秒。因此,chrony
可能會將輪詢間隔調整到 1024 秒,但不會低於 16 秒。iburst: 這個選項是一個補充參數,用於加快初次同步過程。當
chrony
啟動後,它會通過發送一組快速請求(通常是 8 個請求)來快速擷取伺服器的時間。在這個例子中,iburst
會在啟動後立即向ntp.cloud.aliyuncs.com
發送多個請求,確保在短時間內迅速獲得準確的時間。
啟動和啟用
Chrony
服務。運行以下命令,啟用並啟動
Chrony
服務,以便在系統啟動時自動運行。# 啟動 Chrony 服務 sudo systemctl start chronyd # 設定 Chrony 在系統啟動時自動啟動 sudo systemctl enable chronyd
檢查
Chrony
狀態。您可以運行以下命令,使用
chronyc
工具來檢查Chrony
的狀態和同步情況。# 檢查服務狀態 sudo systemctl status chronyd # 使用 chronyc 查詢同步狀態 chronyc tracking # 查詢可用的時間源 chronyc sources
驗證時間同步
等待幾分鐘來進行時間同步後,您可以使用
chronyc tracking
命令查看主伺服器的狀態以及本地時鐘與時間伺服器之間的偏差。
Windows作業系統
在Windows執行個體中,通常使用系統內建的時間服務(Windows Time Service,W32time)來進行時間同步。
查看目前時間
使用命令提示字元。
按下
Win + R
,輸入cmd
,然後按Enter
,開啟命令提示字元。在命令提示字元中輸入以下命令查看目前時間。
date /t time /t
date /t
將顯示當前日期;time /t
將顯示目前時間。
通過圖形介面:查看工作列:在 Windows 工作列的右下角,您可以看到當前日期和時間。
調整日期/時間設定:按右鍵工作列的時間,然後選擇“調整日期/時間”。在這裡,您可以查看和設定目前時間和日期。
手動同步時間
命令提示字元
按
Win + R
,輸入cmd
,然後按Enter
,開啟命令提示字元。輸入以下命令以手動同步。
w32tm /resync
這將強制 Windows 時間服務與配置的 NTP 伺服器重新同步。
如果需要查看同步狀態,可以使用如下命令查看同步結果。
w32tm /query /status
圖形化介面
開啟設定:按右鍵工作列的時間顯示,選擇日期和時間設定。
查看時間設定:在日期和時間設定介面中,確保自動化佈建時間處於開啟狀態。
手動同步時間:在日期和時間設定介面中,在同步時鐘地區,單擊立即同步按鈕完成手動同步時間。
配置 NTP 伺服器
如果需要設定特定的 NTP 伺服器進行時間同步,您也可以通過以下步驟進行配置。
命令提示字元
以管理員身份開啟命令提示字元。
運行以下命令,設定 NTP 伺服器。
以
ntp11.cloud.aliyuncs.com
為例,更多NTP服務地址,請參見阿里雲NTP伺服器位址列表。w32tm /config /manualpeerlist:"ntp11.cloud.aliyuncs.com" /syncfromflags:manual /reliable:YES /update
運行以下命令重啟時間服務。
net stop w32time net start w32time
運行以下命令再次同步時間。
w32tm /resync
圖形化介面
Windows Server作業系統預設配置微軟NTP伺服器(time.windows.com),但是可能經常同步出錯。使用阿里雲ECS執行個體時,您可以將預設NTP伺服器更換成阿里雲提供的內網NTP伺服器。本文以Windows Server 2022系統為例,介紹如何修改預設NTP伺服器位址。
遠端連線Windows執行個體。
具體操作,請參見使用Workbench工具以RDP協議登入Windows執行個體。
在工作列的通知區域,單擊日期和時間,並單擊日期和時間設定。
在設定頁面,單擊添加不同時區的時鐘。
在日期和時間對話方塊裡,單擊Internet 時間頁簽,然後單擊更改設定(C)...。
在Internet 時間設定對話方塊裡,選中與Internet時間伺服器同步(S)...,填寫一個阿里雲內網NTP伺服器位址,並單擊立即更新,然後單擊確定。關於NTP伺服器位址,請參見阿里雲NTP伺服器位址列表。
重要當時鐘同步失敗時,可能是執行個體中存在第三方殺毒軟體,請關閉殺毒軟體後重新同步。
單擊確定。
常見問題
附錄
阿里雲NTP伺服器位址列表
各網路下的阿里雲NTP伺服器位址(僅支援IPv4協議)如下表所示。如果您需要修改阿里雲NTP伺服器位址,可以參考該列表。
傳統網路內網 | Virtual Private Cloud內網 | 公網 |
ntp1.cloud.aliyuncs.com ntp2.cloud.aliyuncs.com ntp3.cloud.aliyuncs.com ntp4.cloud.aliyuncs.com ntp5.cloud.aliyuncs.com ntp6.cloud.aliyuncs.com 重要 傳統網路類型的ECS執行個體相關服務將於2025年02月28日起停止服務,具體下線公告以及遷移VPC網路方案,請參見【下線公告】停止提供阿里雲傳統網路類型的ECS執行個體相關服務。 | ntp.cloud.aliyuncs.com ntp7.cloud.aliyuncs.com ntp8.cloud.aliyuncs.com ntp9.cloud.aliyuncs.com ntp10.cloud.aliyuncs.com ntp11.cloud.aliyuncs.com ntp12.cloud.aliyuncs.com | ntp.aliyun.com ntp1.aliyun.com ntp2.aliyun.com ntp3.aliyun.com ntp4.aliyun.com ntp5.aliyun.com ntp6.aliyun.com ntp7.aliyun.com |
相關文檔
如果您希望瞭解更多關於Linux時間的相關概念及操作,或者想瞭解關於Linux公用鏡像中時間配置的變化,請參見Linux時間和時區說明。