在虛擬機器中執行 NTP 伺服器有哪些限制? (2010)

在虛擬機器中執行 NTP 伺服器有哪些限制? (2010)

我想在本地網路上設定多個 Stratum 2 時間伺服器。與購買三台 1U 伺服器相比,虛擬機器無疑是一種更便宜的方法。這樣做會帶來什麼限制?也就是說,準確度會受到多大程度的不利影響?

此外,我的直覺是這些本地時間伺服器應該駐留在不同的實體機器上,以減輕任何硬體異常情況。這種直覺正確嗎?

編輯 我應該說,透過「虛擬機」我沒有具體來說意思是虛擬機。相反,我指的是虛擬化實例的一般概念。

答案1

現在已經是 2023 年了,這個問題的所有早期答案現在都是錯誤的(至少從 2016 年底開始),至少就 Linux VM 而言是如此。 [以下建議可能不適用於 Windows VM。

如果您在 2023 年或之後閱讀本文,請不要相信 2013 年或更早的答案中有關最大 20-100 毫秒準確度的說法。現代虛擬機器中的時間同步在 LAN 上可以實現低於 1 毫秒的精度,在消費級 Internet 連接上可以達到接近 1 毫秒的精度。

以下 ServerFault 問題包含更多最新討論:

這裡有一些說明性​​的偏移圖(按時間順序排列)來支持我的主張。在某些情況下,我仍然擁有原始日誌文件,我非常樂意將其提供給任何想要自行調查的人。請注意每個實例中圖表的比例:

  1. ntpd2016 年底,在 KVM 管理程式(在某種 Intel Xeon 上)下的 OpenStack 私有雲中 運行的虛擬機器:偏移-kvm
  2. ntpd2020 年中期在獨立 KVM 主機(Intel Celeron 1037U 上)上 運行的虛擬機器:偏移-kvm-賽揚
  3. 2021 年底 運行的許多 AWS t3a.micro(AMD) 實例:chronyd偏移-aws-t3a
  4. 2021 年末 運行的許多 AWS t4g.micro(ARM) 實例:chronyd偏移-aws-t4g
  5. 2022 年初 運行的一些 Azure Standard_B1s(Intel) 執行個體:chronyd偏移-azure-b1s
  6. chronyd2022 年末在 AWS ECS/Fargate (Intel) 中 運行的大量容器:偏移-fargate

答案2

一個簡單的事實是,2010 年虛擬機器內的時鐘精度仍然非常糟糕。這來自幾個地方,但最致命的是時間漂移不是恆定的;漂移因子每時每刻都在變化。 NTP 是內建時脈補償的協議,但它在設計時內建了靜態漂移因子。但是,如果該機器每 30 天可能會丟失 4 到 70 秒,那麼 NTP 就不太擅長追蹤這種變化程度。

NTP 在虛擬機器環境中很難跟上的原因是它看到的本地時鐘可能會在一分鐘內改變其漂移因子。根據檢查其父時間源的頻率,它可能會導致重大漂移因子變化,並導致其更頻繁地不同步。不同步的時間會在整個組織中蔓延。

本地網路的 NTP 是一種影響相對較低的協議,記憶體佔用非常小,並且可以輕鬆地搭載在其他網路基礎設施伺服器(例如 DNS 和 DHCP 伺服器)上。有些路由器還可以提供 NTP 功能,因此您可能需要研究一下。

理想情況下,您需要兩個位於不同位置的獨立伺服器,每個伺服器與一組不同的更高層伺服器同步。將兩台時間伺服器配置為使用另一台伺服器作為「對等點」也是一個非常好的主意,這樣可以最大限度地減少上游時間來源之一出現問題時對時間服務的影響;會有層變化,但至少不會報告不同步。最後,善待您的上游時間提供者,並將您的伺服器配置為在時間確定後在輪詢之間運行很長時間。這是「server」行上的「maxpoll」參數,是兩次同步嘗試之間的秒次方。

如果您絕對必須為此使用虛擬機,我會設定不少於三個這樣的 NTP 伺服器。其中每個都需要位於不同的主機上,如果可能的話,位於不同的資料中心。正如我剛才建議的那樣,他們需要不同的時間源並且應該相互對等。然後將所有 NTP 用戶端配置為使用所有三個作為父來源。確保 maxpoll 值夠低,同步資料包在網路外和網路上的同步時間間隔不會超過一個半小時​​和 30 分鐘。在任何給定時間,這三者中至少有一個很有可能保持同步。對於只能與一位時間主持人交談的客戶來說,他們只能忍受偶爾出現的不同步事件。總的來說,這種情況下的時間品質不會像實體伺服器那樣精確。

如果我必須大概的話,我會說你在純虛擬機器環境中的共識時間可能會在,哦,30 到 100 毫秒內。在純粹的實體環境中,一旦時間伺服器運行足夠長的時間來穩定時間,您的共識時間可能會在 10 毫秒內。

答案3

查看 vmware 計時文件。在虛擬機器中執行 NTP 守護程序可能不是一個好主意,特別是如果您需要可靠的時間。

答案4

在虛擬化環境中執行 NTP,您將幸運地達到 20 毫秒的精度(這就是我們使用 VMware 所做的)。虛擬化時鐘偏差很嚴重,特別是在存在資源爭用的虛擬化環境。

這取決於您需要的準確程度。如果您只關心第二個(例如網頁伺服器),只要您沒有資源爭用,您可能會沒事。如果您想要毫秒級的精確度(例如繁忙的資料庫、日誌伺服器、研究專案),那麼請忘記虛擬化時間伺服器。

NTP 伺服器應始終位於實體主機上。您應該至少有 3 個伺服器在池中進行對等(這樣一台惡意伺服器就會被池投票否決);如果可能的話,請從 GPS 或其他本地 0 級來源獲取時間,而不是透過網路。

相關內容