全部產品
Search
文件中心

Elastic Compute Service:行政時間同步服務

更新時間:Dec 10, 2024

如果您發現執行個體中的系統時間存在異常,或者希望分布式系統中多台機器的時間保持一致性,請參考本文以瞭解時間同步服務及其相關配置。

時間不同步的判斷方法

在管理和維護 ECS執行個體時,時間同步是確保系統正常啟動並執行關鍵因素。如果您懷疑執行個體中的時間不同步,可以通過以下方法進行判斷:

  • 比較系統時間與真即時間:檢查 ECS 執行個體上顯示的系統時間,並將其與您擷取到的真即時間(例如通過手機、電視或其他可靠的時間服務)進行對比。如果兩者之間存在明顯的時間誤差,說明系統時間可能不同步。

  • 監測定時任務的執行:定期檢查已設定的定時任務(如 cron 作業等)。如果發現某些任務沒有按照預期的時間執行,或者執行時間出現了異常,可能是由於系統時間不準確導致的。

  • 檢查 Tracking 日誌:在分布式系統中,Tracking 日誌用於記錄交易處理的順序和狀態。如果發現在日誌中出現鏈路混亂的情況,例如記錄順序顛倒或者時間戳記不可預測,可能表明系統時間在不同節點間不同步,從而影響資料一致性。

  • 安全認證過程中的錯誤:在進行安全認證時,如果出現錯誤資訊,例如“時間戳記無效”或“認證失敗”,這通常表示系統時間與證明伺服器的時間存在偏差。許多認證機制(如 Kerberos)依賴於時間戳記來確保請求的有效性。

時間同步的重要性

時間的準確性與一致性對於ECS執行個體至關重要,它能夠確保定時任務的準確執行、日誌時間戳記的正確記錄以及分布式ECS叢集中執行個體的時鐘一致性。

  • 當系統日誌顯示不同執行個體或服務的時間戳記存在顯著差異時,尤其是在進行故障排查時,可能會導致問題定位變得困難。此外,依賴於時間戳記的應用程式(例如金融交易系統、調度任務和科學計算)在執行過程中如果出現延遲或異常,通常表明存在時間不同步的問題。

  • 在分布式系統中,如果探索資料更新出現衝突或記錄覆蓋,使用者需要審慎檢查所有裝置的時間設定。此外,在進行實驗或資料分析時,多個裝置的時間不一致可能會影響結果的準確性和可重複性,進一步影響決策和業務容錯能力。因此,定期監控和維護時間同步服務不僅能確保系統的穩定性和安全性,還能提高整體業務運行效率。使用者應對任何此類異常訊號給予高度重視,以便及時採取措施維護系統的時間準確性。

時間同步服務

時間同步服務用於與NTP伺服器同步時間以確保ECS執行個體時間準確,它是基於網路時間協議(Network Time Protocol,簡稱NTP)實現的,時間同步服務用於同步電腦的系統時間與世界各地的NTP伺服器。

Linux作業系統

在Linux執行個體中,較為常見的兩種時間同步的工具有:ChronyNTP服務ChronyNTP服務的對比如下表。

時間同步服務

簡介

使用情境

時間同步精度

穩定性

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。

    image

  • 返回如下資訊時表示使用的時間同步服務為NTP服務。

    image

查看時間同步伺服器位址

阿里雲公用鏡像中已預設配置了阿里雲NTP伺服器位址。您可以執行以下命令查看ECS執行個體中目前時間同步伺服器位址。

  • Chrony。

    cat /etc/chrony/chrony.conf
  • NTP服務。

    cat /etc/ntp.conf

在設定檔中,尋找以 server 開頭的行,這些行指定多個 NTP 伺服器位址及相關參數配置。

image

在設定檔中,可以指定多個 NTP 伺服器,這樣做主要是為了提高時間同步的可靠性和增強容錯能力。

  • 容錯性:使用多個 NTP 伺服器可以確保即使某個伺服器不可用,系統仍然可以從其他可用的 NTP 伺服器擷取時間。這會大大減少由於時間源不可用而導致的時間不同步問題。

  • 可靠性:不同的 NTP 伺服器可能會有不同的時間源和網路延遲。通過串連多個時間伺服器,chrony可以選擇最穩定、最可靠的時間源進行同步,從而提供更準確的時間。

  • 負載平衡:當多個 NTP 伺服器被指定時,chrony可以在它們之間分配請求,以避免對單一伺服器過多請求,從而減輕伺服器負擔並提高整體效能。

  • 提高同步速度:在初次啟動或發生時間偏差時,多個伺服器可以協助加速時間同步過程。使用多個伺服器,chrony可以更快地確定準確時間並進行調整。

  • 減少網路延遲影響:多個伺服器有助於減少由網路延遲引起的影響。chrony會選擇響應速度最快的伺服器進行時間校正,以確保時鐘始終準確。

查看目前時間

您可以執行以下命令查看當前系統時間是否準確。

Chrony

執行以下命令可以擷取目前時間同步狀態的詳細資料,包括系統時間偏差、系統時間的穩定性以及最後一次同步的時間等。您可以通過查看System time評估目前時間是否準確,如本樣本中的0.000025116 seconds slow of NTP time表示當前系統時間比NTP服務時間慢。

sudo chronyc tracking

返回資訊樣本如下。

image

NTP服務

執行以下命令可以擷取已配置的NTP伺服器以及對應的狀態指標,其中位移量offset可以大致表示本地時間和伺服器時間的差異。

# 擷取所有已配置的NTP伺服器以及對應的狀態指標
sudo ntpd -p

#  sudo ntpd -p <server> 擷取特定NTP伺服器對應狀態指標
sudo ntpd -p ntp3.aliyun.com

返回資訊樣本如下:

image

返回資訊欄位解釋:

  • 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服務已手動同步完成。

image

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

  1. 遠端連線Linux執行個體。具體操作,請參見使用Workbench工具以SSH協議登入Linux執行個體

  2. 配置NTP伺服器。

    如果您需要配置為阿里雲的NTP伺服器,請按照下面步驟中的<NTP伺服器>進行配置,具體請參見阿里雲NTP伺服器位址列表。關於如何選擇阿里雲NTP伺服器位址,請參見NTP服務同步異常怎麼辦?

    1. 執行以下命令,進入chrony設定檔。

      sudo vim /etc/chrony.conf
    2. 屏蔽不需要的NTP伺服器,如下圖所示,在設定檔中將不需要使用的NTP服務注釋掉。

      image

    3. 添加新的NTP伺服器。如下圖所示,您可以在設定檔中添加新的NTP伺服器ntp12.cloud.aliyuncs.com;具體可用NTP伺服器位址請參見附錄阿里雲NTP伺服器位址列表

      image

    4. 儲存設定檔並退出,執行以下命令重啟chronyd並設定開機自啟動。

      sudo systemctl restart chronyd.service
      sudo systemctl enable chronyd.service
  3. 查看Chrony服務狀態。

    1. 執行以下命令,查看本機時間同步狀態,用於驗證服務是否已啟動。

      sudo chronyc tracking
    2. 執行以下命令,查看時間同步伺服器列表。

      sudo chronyc -n sources -v

NTP服務

  1. 遠端連線Linux執行個體。具體操作,請參見使用Workbench工具以SSH協議登入Linux執行個體

  2. 配置NTP伺服器。

    如果您需要配置為阿里雲的NTP伺服器,請按照下面步驟中的<NTP伺服器>進行配置,具體請參見阿里雲NTP伺服器位址列表。關於如何選擇阿里雲NTP伺服器位址,請參見NTP服務同步異常怎麼辦?

    1. 執行以下命令,進入NTP設定檔。

      sudo vim /etc/ntp.conf
    2. 屏蔽不需要的NTP伺服器,如下圖所示,在設定檔中將不需要使用的NTP服務注釋掉。

      image

    3. 添加新的NTP伺服器。格式為server <ntp伺服器位址> minpoll <最小請求間隔> maxpoll <最大請求間隔> iburst 。如下圖所示,您可以在設定檔中添加新的NTP伺服器ntp12.cloud.aliyuncs.com 。具體可用NTP伺服器位址請參見附錄阿里雲NTP伺服器位址列表

      image

    4. 儲存設定檔並退出,執行以下命令重啟ntpd

      sudo service ntpd restart
  3. 啟動NTP服務。

    1. 依次執行以下命令,啟動NTP服務並設定開機自啟動。

      sudo service ntpd start
      sudo chkconfig ntpd on
    2. 執行以下命令,查看NTP服務運行狀態。

      sudo ntpstat
    3. 執行以下命令,查看NTP服務對等端的列表資訊。

      sudo ntpq -p

升級NTP服務到Chrony服務

阿里雲ECS執行個體中,CentOS 6等部分老舊鏡像配置為NTP服務,當前NTP服務官方已經不再維護。如果ECS執行個體使用的是NTP服務,且業務不依賴NTP服務,建議升級為Chrony服務。

  1. 卸載ntpd。

    在升級之前,建議運行以下命令先卸載現有的 ntpd 服務。

    # Alibaba Cloud Linux / CentOS / RHEL
    sudo yum remove ntp
    
    # Ubuntu/Debian
    sudo apt remove ntp
  2. 運行以下命令安裝Chrony

    # Alibaba Cloud Linux / CentOS / RHEL
    sudo yum install chrony
    
    # Ubuntu/Debian
    sudo apt install chrony
  3. 配置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發送多個請求,確保在短時間內迅速獲得準確的時間。

  4. 啟動和啟用Chrony服務。

    運行以下命令,啟用並啟動 Chrony 服務,以便在系統啟動時自動運行。

    # 啟動 Chrony 服務
    sudo systemctl start chronyd
    
    # 設定 Chrony 在系統啟動時自動啟動
    sudo systemctl enable chronyd
  5. 檢查Chrony狀態。

    您可以運行以下命令,使用 chronyc 工具來檢查 Chrony 的狀態和同步情況。

    # 檢查服務狀態
    sudo systemctl status chronyd
    
    # 使用 chronyc 查詢同步狀態
    chronyc tracking
    
    # 查詢可用的時間源
    chronyc sources
  6. 驗證時間同步

    等待幾分鐘來進行時間同步後,您可以使用 chronyc tracking 命令查看主伺服器的狀態以及本地時鐘與時間伺服器之間的偏差。

Windows作業系統

在Windows執行個體中,通常使用系統內建的時間服務(Windows Time Service,W32time)來進行時間同步。

查看目前時間

  1. 使用命令提示字元。

    1. 按下Win + R,輸入cmd,然後按Enter,開啟命令提示字元。

    2. 在命令提示字元中輸入以下命令查看目前時間。

       date /t 
       time /t

      date /t將顯示當前日期;time /t將顯示目前時間。

  2. 通過圖形介面:查看工作列:在 Windows 工作列的右下角,您可以看到當前日期和時間。

  3. 調整日期/時間設定:按右鍵工作列的時間,然後選擇“調整日期/時間”。在這裡,您可以查看和設定目前時間和日期。

手動同步時間

命令提示字元

  1. Win + R,輸入cmd,然後按Enter,開啟命令提示字元。

  2. 輸入以下命令以手動同步。

     w32tm /resync

    這將強制 Windows 時間服務與配置的 NTP 伺服器重新同步。

    image

  3. 如果需要查看同步狀態,可以使用如下命令查看同步結果。

     w32tm /query /status

    image

圖形化介面

  1. 開啟設定:按右鍵工作列的時間顯示,選擇日期和時間設定

  2. 查看時間設定:在日期和時間設定介面中,確保自動化佈建時間處於開啟狀態。

  3. 手動同步時間:在日期和時間設定介面中,在同步時鐘地區,單擊立即同步按鈕完成手動同步時間。

配置 NTP 伺服器

如果需要設定特定的 NTP 伺服器進行時間同步,您也可以通過以下步驟進行配置。

命令提示字元

  1. 以管理員身份開啟命令提示字元。

  2. 運行以下命令,設定 NTP 伺服器。

    ntp11.cloud.aliyuncs.com 為例,更多NTP服務地址,請參見阿里雲NTP伺服器位址列表

     w32tm /config /manualpeerlist:"ntp11.cloud.aliyuncs.com" /syncfromflags:manual /reliable:YES /update

    image

  3. 運行以下命令重啟時間服務。

     net stop w32time
     net start w32time
  4. 運行以下命令再次同步時間。

     w32tm /resync

圖形化介面

Windows Server作業系統預設配置微軟NTP伺服器(time.windows.com),但是可能經常同步出錯。使用阿里雲ECS執行個體時,您可以將預設NTP伺服器更換成阿里雲提供的內網NTP伺服器。本文以Windows Server 2022系統為例,介紹如何修改預設NTP伺服器位址。

  1. 遠端連線Windows執行個體。

    具體操作,請參見使用Workbench工具以RDP協議登入Windows執行個體

  2. 在工作列的通知區域,單擊日期和時間,並單擊日期和時間設定

    image

  3. 在設定頁面,單擊添加不同時區的時鐘

    image

  4. 日期和時間對話方塊裡,單擊Internet 時間頁簽,然後單擊更改設定(C)...

    image

  5. Internet 時間設定對話方塊裡,選中與Internet時間伺服器同步(S)...,填寫一個阿里雲內網NTP伺服器位址,並單擊立即更新,然後單擊確定。關於NTP伺服器位址,請參見阿里雲NTP伺服器位址列表

    重要

    當時鐘同步失敗時,可能是執行個體中存在第三方殺毒軟體,請關閉殺毒軟體後重新同步。

    image

  6. 單擊確定

常見問題

阿里雲NTP伺服器是否收費?

不收費。阿里雲公用鏡像中包含了預設的時間同步配置,基於公用鏡像建立的ECS執行個體會預設運行Chrony或者NTP服務進行時間同步。

NTP服務同步異常怎麼辦?

請先確認您的伺服器的網路類型,請根據對應的網路類型選擇對應的NTP伺服器位址。關於NTP伺服器位址請參見阿里雲NTP伺服器位址列表。其中公網NTP伺服器位址面向整個互連網,時間準確性和穩定性不及內網的NTP伺服器位址。

  • 網路類型為專用網路:NTP伺服器位址在Virtual Private Cloud內網這一列選擇。

  • 網路類型為傳統網路: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時間和時區說明