Vps

如何進行正確的 VPS 計時?

  • May 2, 2018

我正在配置一個 VPS 來記錄一些時間序列的線上數據,我注意到時間已經關閉。我希望在這方面有超過 10 秒的精度。

我在某處讀到 VPS 計時與本機(x86)系統不同,因為錯誤因係統負載或其他原因而異?因此 ntpd 可能不適合在 VPS 內執行?

道聽途說,我想知道:如何在 VPS 上保持適當的系統時間?這是否因虛擬化技術或 VPS 提供商而有所不同?為什麼 ntpd 不適合在 VPS 內執行?

簡短版本:容器中的計時(這是大多數 VPS 的功能)是主機的責任;您可能需要遊說您的 VPS 提供商來解決此問題。

注意:如果您的 VPS 是 Xen(例如 AWS)、KVM(例如 GCE)或 Hyper-V(例如 Azure)虛擬機,則此建議不*適用。*在這種情況下,核心及其時鐘驅動程序是虛擬化的,您應該像對待裸機一樣對待它們,並執行 NTP 客戶端,例如ntpdchronydsystemd-timesyncd

更長的版本:如果你的 VPS 是一個典型的容器,那麼 NTP 無法控製本地時鐘。核心時鐘不是容器化的(命名空間),並且大多數容器管理器(例如 OpenVZ、Docker、LXC/LXD)不授予容器核心時間能力。(請參閱https://bugs.launchpad.net/ubuntu/+source/chrony/+bug/1589780以在 Ubuntu 和 Chrony 的上下文中對此進行討論。)

如果您從典型的供應商那裡租用您的 VPS,聽起來他們要麼根本無法配置 NTP,要麼配置不當並且沒有對其進行監控。

您可以使用類似https://gist.github.com/kuzetsa/4a64cd1a95260d0bc5cc1b8aeaba1878的配置讓 ntpd 在您的容器中執行,而無需嘗試更改本地時鐘(該disable kernel行是重要部分)。這將允許您監控主機的 NTP 伺服器(如果有);如果您想將您的 VPS 主機的時鐘與一些外部源進行比較,請添加 pool.ntp.org 或其他公共 NTP 服務。

引用自:https://serverfault.com/questions/909898