一些伺服器的正確 NTP 配置
我在一個小型網路中有大約 20 台 Linux 伺服器,我需要它們的時鐘彼此接近(例如,在 20 毫秒內)。我已經開始將它們中的每一個同步到 europe.pool.ntp.org 並且工作已經完成。
現在我有兩個問題:
- 我是游泳池的明顯負擔嗎?即,如果我從 20 台伺服器或 2 台伺服器訪問,它對池有什麼明顯的影響嗎?
- 如果它確實有所不同,那麼讓我的子網保持同步並使池處於輕負載狀態的設置/配置是什麼?有針對大型網路的指南(http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3101),但我沒有找到針對小型網路的指南。
- 我是游泳池的明顯負擔嗎?即,如果我從 20 台伺服器或 2 台伺服器訪問,它對池有什麼明顯的影響嗎?
鑑於該池多年來一直需要伺服器(請參閱
$$ 1 $$) 我會說,雖然 2 或 20 台伺服器並沒有真正產生影響,但您應該始終記住,您並不孤單。因此,您最好考慮說 1000 名管理員,在這種情況下,我們正在談論 2000 或 20000 台伺服器,這確實會產生影響。
- 如果它確實有所不同,那麼讓我的子網保持同步並使池處於輕負載狀態的設置/配置是什麼?
您必須同步兩個
$$ 2 $$網路中的伺服器與池(我們稱它們為Primary NTP Servers),然後將所有其他伺服器同步到這兩個伺服器。這種方法還有一個優點,就是所有伺服器之間的時間會更加匹配(小於 1 毫秒)。這符合 IETF 最佳實踐。 1) 主 NTP 伺服器的配置
替換 ntp 的
server
andrestrict
行$$ d $$.conf 包含以下內容,並將其餘部分保留為您的發行版預設值$$ 3 $$:
peer 10.11.12.1 iburst # ^^^^^^^^^^^ # The LAN IP of the _other_ Primary NTP server server 0.europe.pool.ntp.org server 1.europe.pool.ntp.org server 2.europe.pool.ntp.org server 3.europe.pool.ntp.org restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery restrict 127.0.0.1 restrict ::1
請注意,此配置還允許來自 Internet 各地的主機通過 NTP 查詢來查詢您的主機時間。如果您不想,請使用防火牆。在我的範例中,10.11.12.1 和 10.11.12.2 是主 NTP 伺服器的 IP(它們有兩張網卡,一張面向公共網際網路,一張面向本地 10.11.12.x 子網)。每個主 NTP 伺服器都將另一個聲明為對等點(對等點基本上意味著伺服器和客戶端 - 您將另一台主機用作時間源,而另一台主機也將您用作時間源)。所以**調整第一行的IP,**使每個Primary NTP Server的配置指向另一個作為對等點。看
$$ 4 $$關於我選擇使用 4 台伺服器。 2) 所有其他伺服器的配置
2A) 如果您有兩個網路介面
您最好使用第二個介面來創建一個本地子網(例如
10.11.12.0/24
)並將其用於 NTP 查詢。在這種情況下,限制線可以更緊。所以再次替換你的ntp的server
和restrict
行$$ d $$.conf 包含以下內容,並將其餘部分保留為您的發行版預設值$$ 3 $$:
restrict -4 default ignore restrict -6 default ignore restrict 10.0.0.0 mask 255.0.0.0 kod notrap nomodify nopeer noquery restrict 127.0.0.1 restrict ::1 # Only use our Primary NTP Servers server 10.11.12.1 iburst server 10.11.12.2 iburst # ^^^^^^^^^^ # The IPs of your 2 Primary NTP Servers
2B) 如果您沒有兩個網路介面
您應該使用下面的限制行(並閱讀有關使用防火牆阻止訪問上面的 NTP 伺服器的說明)。所以再次替換你的ntp的
server
和restrict
行$$ d $$.conf 包含以下內容,並將其餘部分保留為您的發行版預設值$$ 3 $$:
restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery restrict 127.0.0.1 restrict ::1 # Only use our Primary NTP Servers server 10.11.12.1 iburst server 10.11.12.2 iburst # ^^^^^^^^^^ # The IPs of your 2 Primary NTP Servers
筆記
**$$ 1 $$**從 2006 年到 2012 年,他們不斷要求更多伺服器加入:2006 年的請求、2009年的請求和2012年的請求。查看www.pool.ntp.org了解目前狀態的更新。
**$$ 2 $$**僅建議將兩個主 NTP 伺服器作為一種簡單的方式來獲得冗餘,而無需複雜的高可用性安排。您可能出於其他原因選擇 3 或 4(再次閱讀IETF 最佳實踐)
**$$ 3 $$**在實踐中,無論您的發行版如何,您需要在 ntpd 配置中包含的唯一其他內容是定義放置漂移文件的目錄及其名稱的行 - 例如
driftfile /var/lib/ntp/ntp.drift
。我已經在 CentOS、Debian 和 Ubuntu 中測試了我的解決方案。我猜它適用於大多數其他發行版。**$$ 4 $$*我按照最佳實踐配置了 4 個池伺服器。配置超過 4 台伺服器在技術上是可以接受的,但您會增加 NTP 池的負載以獲得有問題的可用性增益,因此請不要這樣做。在最佳實踐中,我看到“從 ntp-4.2.6 開始,‘pool’ 指令將啟動“足夠”的關聯以提供強大的時間服務”*,所以如果你使用 .pool。像我在這裡做的地址和 ntp >=4.2.6 伺服器行的確切數量可能無關緊要。
咆哮哦!我討厭 NTP(除了我喜歡它的工作原理)。官方文件充滿了過時的資訊,他們有“我如何使用它?” 資訊與有關內部的科學細節混合在一起。我也討厭
restrict 127.0.0.1
真正的意思allow everything for 127.0.0.1
更新歷史
我已經
iburst
從本地 NTP 伺服器的配置中刪除了該選項,因為它們對池的友好性值得商榷。(看評論)。刪除它們只會為第一次同步增加幾分鐘的等待時間。學分
SF 使用者 Marki 和 Sven 的評論和回答為這個答案提供了一個很好的起點。感謝他們倆。還要感謝 SF 使用者 BACON 多年後糾正了一個嚴重錯誤(ndemou 定律:“給予足夠的眼球和無限的時間,所有的錯誤都是淺的”)