การกำหนดค่า NTP ที่เหมาะสมสำหรับเซิร์ฟเวอร์ไม่กี่แห่ง


9

ฉันมีเซิร์ฟเวอร์ Linux ประมาณ 20 เครื่องในเครือข่ายขนาดเล็กและฉันต้องการนาฬิกาของพวกเขาใกล้ ๆ กัน (เช่นภายใน 20 มิลลิวินาที) ฉันเริ่มต้นด้วยพวกเขาทุกคนซิงค์กับ europe.pool.ntp.org และงานเสร็จ

ตอนนี้ฉันมีสองคำถาม:

  1. ฉันเป็นภาระที่เห็นได้ชัดเจนในสระน้ำหรือไม่ คือมันสร้างความแตกต่างที่เห็นได้ชัดเจนกับพูลหรือไม่ถ้าฉันกดจากเซิร์ฟเวอร์ 20 เครื่องหรือจาก 2 เครื่อง?
  2. หากมันสร้างความแตกต่างการตั้งค่า / การกำหนดค่าที่จะทำให้ subnet ของฉันซิงค์และพูลภายใต้การโหลดเบาคืออะไร? มีแนวทางสำหรับเครือข่ายขนาดใหญ่ ( http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3101 ) แต่ฉันไม่พบเครือข่ายขนาดเล็ก

1
โดยปกติแล้วคุณควรมีเซิร์ฟเวอร์เวลาภายในหนึ่งหรือสองเครื่องซึ่งคุณต้องซิงค์เครือข่ายภายใน เซิร์ฟเวอร์ภายในสองตัวของคุณสามารถมีpeerความสัมพันธ์ได้ ดูตัวอย่างntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3101
Marki

ขอบคุณสำหรับความคิดเห็นและลิงค์ Marki เกี่ยวกับลิงค์มันตั้งข้อสังเกตว่ามันมีไว้สำหรับ "เครือข่ายขนาดใหญ่" ซึ่งไม่ใช่กรณีของฉันอย่างแน่นอน เกี่ยวกับข้อเสนอแนะของคุณ: ฉันไม่คิดว่าเซิร์ฟเวอร์เวลาหนึ่งภายในเป็นความคิดที่ดี (จุดล้มเหลวเดียว) แต่ 2 ดูเหมือนความคิดที่ดี คุณช่วยอธิบายได้ไหมว่าความสัมพันธ์แบบเพื่อนคืออะไร (หรือมีลิงก์)
ndemou

ควรทราบด้วยว่าฉันไม่ใช่ผู้เชี่ยวชาญ NTP แน่นอน :-) ห่างจากมัน
ndemou

จะไม่เจ็บถ้าคุณ google เกี่ยวกับสิ่งที่เป็นเพื่อน โปรดทราบว่าเว็บไซต์นี้ไม่ได้ให้บริการอะไรบนแผ่นเสียงเงินเมื่อผู้คนไม่ทำการค้นคว้าเลย
Marki

อย่าเข้าใจฉันผิดฉันทำการบ้าน แต่ NTP เป็นหนึ่งในวิชาเหล่านี้ที่เอกสารส่วนใหญ่กลืนกัน (นี่คือ ntp.conf - แค่ใช้มัน) หรือลึกเกินไป (50 หน้าของทฤษฎีการอ่านก่อนที่คุณจะอ่าน สามารถเริ่มเข้าใจข้อเท็จจริงพื้นฐาน)
ndemou

คำตอบ:


8
  1. ฉันเป็นภาระที่เห็นได้ชัดเจนในสระน้ำหรือไม่ คือมันสร้างความแตกต่างที่เห็นได้ชัดเจนกับพูลหรือไม่ถ้าฉันกดจากเซิร์ฟเวอร์ 20 เครื่องหรือจาก 2 เครื่อง?

เนื่องจากพูลนั้นต้องการเซิร์ฟเวอร์เป็นเวลาหลายปี (ดู [1]) ฉันจะบอกว่าถึงแม้ว่าเซิร์ฟเวอร์ 2 หรือ 20 เครื่องจะไม่สร้างความแตกต่างจริงๆคุณควรจำไว้เสมอว่าคุณไม่ได้อยู่คนเดียว ดังนั้นคุณควรคิดถึงผู้ดูแลระบบ 1,000 คนซึ่งในกรณีนี้เรากำลังพูดถึงเซิร์ฟเวอร์ 2000 หรือ 20,000 เซิร์ฟเวอร์และนี่จะสร้างความแตกต่าง

  1. หากมันสร้างความแตกต่างการตั้งค่า / การกำหนดค่าที่จะทำให้ subnet ของฉันซิงค์และพูลภายใต้การโหลดเบาคืออะไร?

คุณต้องซิงค์เซิร์ฟเวอร์ [2] สองเครื่องในเครือข่ายของคุณด้วยพูล (เรียกว่าเซิร์ฟเวอร์หลัก NTP ) จากนั้นซิงค์เซิร์ฟเวอร์อื่นทั้งหมดกับเซิร์ฟเวอร์ทั้งสอง วิธีนี้ยังมีข้อได้เปรียบที่ว่าเวลาระหว่างเซิร์ฟเวอร์ทั้งหมดของคุณจะถูกจับคู่อย่างใกล้ชิดมากขึ้น (น้อยกว่า 1 มิลลิวินาที) นี้อยู่ในสอดคล้องกับ IETF ปฏิบัติที่ดีที่สุด

1) การกำหนดค่าสำหรับเซิร์ฟเวอร์ NTP หลัก

แทนที่serverและrestrictบรรทัดของ ntp [d] .conf ด้วยค่าต่อไปนี้และเก็บส่วนที่เหลือเป็นค่าเริ่มต้นการแจกจ่ายของคุณ [3]:

server 10.11.12.1  iburst peer
#      ^^^^^^^^^^^
#      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

โปรดทราบว่าการกำหนดค่านี้อนุญาตให้โฮสต์จากทั่วทุกมุมโลกสามารถสืบค้นเวลาโฮสต์ของคุณผ่านการสอบถาม NTP ใช้ไฟร์วอลล์ของคุณหากคุณไม่ต้องการ ในตัวอย่างของฉัน 10.11.12.1 และ 10.11.12.2 เป็น IP ของเซิร์ฟเวอร์ NTP หลัก (พวกเขามีการ์ดเครือข่ายสองใบหนึ่งใบหันหน้าไปทางอินเทอร์เน็ตสาธารณะและอีกหนึ่งซับเน็ต 10.11.12.x ภายในเครื่อง) เซิร์ฟเวอร์ NTP หลักแต่ละตัวมีอีกเซิร์ฟเวอร์หนึ่งที่ประกาศเป็นเพียร์ (โดยทั่วไปหมายถึงเซิร์ฟเวอร์และไคลเอนต์ - คุณใช้โฮสต์อื่นเป็นแหล่งเวลาและโฮสต์อื่นใช้คุณเป็นแหล่งเวลาด้วย) ดังนั้นปรับ IP ในบรรทัดที่ 1เพื่อให้การกำหนดค่าของเซิร์ฟเวอร์ NTP หลักแต่ละจุดชี้ไปที่อีกอันหนึ่งว่าเป็นเพียร์ ดู [4] เกี่ยวกับตัวเลือกของฉันในการใช้เซิร์ฟเวอร์ 4 ตัว

2) การกำหนดค่าสำหรับเซิร์ฟเวอร์อื่น ๆ ทั้งหมด

2A) หากคุณมีเครือข่ายสองอินเตอร์เฟส

คุณควรใช้อินเทอร์เฟซที่ 2 เพื่อสร้างซับเน็ตท้องถิ่น (เช่น10.11.12.0/24) และใช้สำหรับเคียวรี NTP ในกรณีนั้นเส้น จำกัด อาจแน่นมากขึ้น ดังนั้นแทนที่อีกครั้งserverและrestrictเส้นของ ntp [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 ของคุณด้านบน) ดังนั้นแทนที่อีกครั้งserverและrestrictเส้นของ ntp [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 พวกเขาอย่างต่อเนื่องขอเซิร์ฟเวอร์เพิ่มเติมที่จะเข้าร่วมที่: 2,006คำขอที่2009หนึ่งและ2012หนึ่ง ตรวจสอบwww.pool.ntp.orgเพื่อรับทราบสถานะปัจจุบัน

[2]เซิร์ฟเวอร์ NTP หลักสองตัวได้รับการแนะนำเป็นวิธีง่ายๆในการมีความซ้ำซ้อนโดยไม่มีข้อตกลงที่มีความพร้อมใช้งานสูง คุณอาจเลือก 3 หรือ 4 ด้วยเหตุผลอื่น (อ่านแนวทางปฏิบัติที่ดีที่สุดของ IETFอีกครั้ง)

[3]ในทางปฏิบัติและไม่ว่าการกระจายของคุณสิ่งเดียวที่อื่น ๆ ที่คุณจำเป็นต้องมีในการกำหนดค่าของคุณ ntpd เป็นเส้นกำหนดไดเรกทอรีที่จะนำไฟล์ดริฟท์และชื่อของมัน - driftfile /var/lib/ntp/ntp.driftเช่น ฉันได้ทดสอบวิธีการแก้ปัญหาของฉันใน CentOS, Debian และ Ubuntu ฉันคิดว่ามันใช้งานได้ใน distros อื่น ๆ ส่วนใหญ่

[4]ผมได้กำหนดค่าเซิร์ฟเวอร์ 4 สระว่ายน้ำต่อไปนี้ปฏิบัติที่ดีที่สุด การกำหนดค่าเซิร์ฟเวอร์มากกว่า 4 แห่งเป็นที่ยอมรับทางเทคนิค แต่คุณจะเพิ่มภาระให้กับพูล NTPเพื่อให้ได้รับความพร้อมในการใช้งานที่น่าสงสัยดังนั้นอย่าทำเช่นนั้น ในแนวทางปฏิบัติที่ดีที่สุดฉันเห็นว่า"เริ่มต้นด้วย ntp-4.2.6 คำสั่ง 'pool' จะหมุนสมาคม" พอ "เพื่อให้บริการเวลาที่มีประสิทธิภาพ"ดังนั้นหากคุณใช้. pool ที่อยู่ที่ฉันทำที่นี่และ ntp> = 4.2.6 จำนวนบรรทัดเซิร์ฟเวอร์ที่แน่นอนอาจไม่สำคัญ

โวยวายโอ้! ฉันเกลียด NTP (ยกเว้นว่าฉันชอบที่ใช้งานได้) เอกสารอย่างเป็นทางการเต็มไปด้วยข้อมูลล้าสมัยและพวกเขามี "ฉันจะใช้มันได้อย่างไร" ข้อมูลผสมกับรายละเอียดทางวิทยาศาสตร์เกี่ยวกับ internals และฉันก็เกลียดที่ความrestrict 127.0.0.1หมายจริงๆallow everything for 127.0.0.1


ประวัติการอัพเดท

ฉันได้ลบiburstตัวเลือกออกจากการกำหนดค่าของ Local NTP Servers เพราะความเป็นมิตรของพวกเขากับกลุ่มนั้นเป็นที่ถกเถียงกัน (ดูความคิดเห็น) การลบออกจะเพิ่มเวลารอสองสามนาทีในการซิงโครไนซ์ครั้งแรกเท่านั้น


เครดิต

ความคิดเห็นและคำตอบจากผู้ใช้ SF Marki และ Sven เป็นจุดเริ่มต้นที่ดีสำหรับคำตอบนี้ ขอบคุณทั้งคู่


1
+1 จากฉัน ฉันเรียกใช้เซิร์ฟเวอร์พูลและฉันไม่สามารถเน้นความถูกต้องของโพสต์นี้ได้ยกเว้นว่าiburstเป็นพารามิเตอร์ที่น่ารำคาญที่จะใช้กับเซิร์ฟเวอร์สาธารณะดังนั้นโปรดอย่า (แม้ว่าจะไม่มีอะไรที่น่ารำคาญเหมือนburst) ผู้ดูแลระบบเซิร์ฟเวอร์พูลกำลังทำสิ่งที่คุณโปรดปรานโดยไม่ทราบว่าคุณเป็นใครและไม่มีการตอบแทนใด ๆ กับตัวเองอย่างหมดจดเพื่อให้อินเทอร์เน็ตทำงานได้ดีขึ้น หากคุณทำงานหนักขึ้นสามารถทำให้ชีวิตของพวกเขาง่ายขึ้นคุณเป็นหนี้ให้พวกเขาทำเช่นนั้น
MadHatter

ขอบคุณ MadHatter เกี่ยวกับ iburst ฉันคิดว่ามันโอเคสำหรับเซิร์ฟเวอร์ "ตลอดเวลา" ทั่วไป คุณมีลิงค์ใด ๆ เพื่อสนับสนุนคำแนะนำของคุณที่ไม่ใช้ตัวเลือกนี้ (ฉันได้ตรวจสอบ www.pool.ntp.org/en/use.html และ googled เป็นเวลา 10 นาที แต่ไม่พบข้อสรุปใด ๆ )
ndemou

ฉันจะแบ่งปันสถิติการเข้าชมอย่างมีความสุข; ตัวอย่างรวดเร็วแสดงให้เห็นว่าโฮสต์ที่กำหนดค่าผิดพลาดเช่นโฮสต์ที่ส่งบ่อยกว่าหนึ่งครั้งต่อนาทีคิดเป็นประมาณ 45% ของลูกค้าของฉัน แต่รับผิดชอบประมาณ 75% ของการรับส่งข้อมูล ซึ่งส่วนใหญ่จะมาจากเซิร์ฟเวอร์ที่ใช้burstแต่แม้จะiburstบอกว่า (จากntpdหน้า man) " ด้วยตัวเลือกนี้การแลกเปลี่ยนข้อความเพื่อแลกเปลี่ยนข้อมูลและตั้งนาฬิกาในเวลาประมาณ 10 วินาที " การใช้การiburstพูดว่า " การตั้งค่านาฬิกาของฉันอย่างรวดเร็วมีความสำคัญมากกว่าการทำให้โหลดบนเซิร์ฟเวอร์ของคุณต่ำ " และนั่นไม่สุภาพ
MadHatter

คุณพูดถูก "วอลเลย์ข้อความ" แต่เท่าที่ฉันสามารถเข้าใจการระเบิดนี้จะเกิดขึ้นเฉพาะในช่วงเริ่มต้น NTP daemon และ (อาจ) หากเซิร์ฟเวอร์พูลไม่สามารถเข้าถึงได้ในไม่ช้า (ฉันมาจากครั้งแรก) นี่คือบทคัดย่อจากหน้า Arch wiki NTPd: "แนะนำให้ใช้ตัวเลือก iburst และส่งกลุ่มข้อมูลต่อเนื่องหากไม่สามารถเชื่อมต่อกับความพยายามครั้งแรกได้ตัวเลือก burst จะทำเช่นนี้เสมอแม้ในครั้งแรกและ ไม่ควรใช้โดยไม่ได้รับอนุญาตอย่างชัดเจนและอาจทำให้บัญชีดำ "
ndemou

คุณพูดถูกที่iburstน่ารังเกียจน้อยกว่าburstมาก ประเด็นของฉันคือเมื่อคุณใช้ทรัพยากรของคนอื่นฟรีมีข้อโต้แย้งว่าคุณควรโน้มตัวไปข้างหลังเพื่อให้มีน้ำใจ การไม่คิดคำนึงถึงอย่างแข็งขันเพียงอย่างเดียวอาจไม่เพียงพอ ฉันยอมรับว่ามีการกล่าวกันว่าเป็นแนวปฏิบัติที่ดีที่สุด แต่เอกสารเหล่านั้นไม่ได้พิจารณาว่าเซิร์ฟเวอร์อัปสตรีมที่คุณซิงค์อยู่นั้นเป็นส่วนหนึ่งขององค์กรของคุณหรือไม่ พวกเขากำหนดแนวทางปฏิบัติที่ดีที่สุดด้านเทคนิค (ซึ่งฉันเห็นด้วยคือใช้iburst) แทนที่จะเป็นแนวปฏิบัติที่ดีที่สุดทางสังคม
MadHatter

6

วิธีการปกติในการทำเช่นนี้คือการใช้การตั้งค่าแบบลำดับชั้น - คุณซิงค์เซิร์ฟเวอร์หนึ่งหรือสองเซิร์ฟเวอร์ในเครือข่ายของคุณด้วยพูลแล้วใช้เซิร์ฟเวอร์เหล่านั้นเป็นแหล่งเวลาท้องถิ่นของคุณ ระดับนี้เรียกว่าstrataใน NTP lingo

ลองคิดดูสิถ้าคุณทำสิ่งนี้ตามที่คุณต้องการมันจะไม่เป็นที่น่าสังเกต แต่ถ้า 1,000 ไซต์ที่มีขนาดของคุณเริ่มต้นคุณจะจบลงด้วยคำร้องขอที่ไม่จำเป็น 20k และบางครั้งก็เห็นได้ชัดเจน

อ่านhttp://en.wikipedia.org/wiki/Network_Time_Protocol


แต่พิจารณามุมมองทางเลือก - ลูกค้าอีกยี่สิบคนที่อยู่เหนือลูกค้าที่มีอยู่นับล้านคนแทบจะทุกอย่าง
200_success

2
เหมือนอย่างที่เขากล่าวว่าถ้าทุกคนเริ่มที่จะคิดว่าวิธีการที่ ...
Marki

แต่คุณหยุดที่จุดใด คิดว่าทุกอุปกรณ์ Linksys pool.ntp.orgชั้นว่าเรือที่กำหนดไว้ล่วงหน้ากับการใช้งาน การรับส่งข้อมูล DNS อย่างแน่นอนเกินปริมาณการใช้งาน NTP คุณต้องแคช DNS ในเครื่องด้วยหรือไม่ แม้แต่ทราฟฟิก DNS ก็มีขนาดเล็กเมื่อเทียบกับปริมาณแบนด์วิธที่เหลือ
200_success

@ 200_ ความสำเร็จ: สิ่งนี้ไม่คุ้มค่าในการโต้วาที แต่อุปกรณ์ "Linksys class" ส่วนใหญ่จะทำการแคชทราฟฟิก DNS ในพื้นที่และพวกเขาทำการค้นหา ISP DNS ของพวกเขาซึ่งแคชเช่นกัน ...
Sven

1
หากอุปกรณ์ Linksys เรือลำนั้นจะซิงค์กับntp.pool.orgพวกเขาอยู่ในการละเมิดข้อตกลงสระว่ายน้ำ ; หากพวกเขาทำมันอย่างถูกต้องโดยการสมัครโซนผู้ขาย (ดูลิงค์) พวกเขาก็จะได้รับการคาดหวังว่าจะมีส่วนร่วมในโครงการพูลตามสัดส่วนของการโหลด (อีกครั้งดูลิงค์)
MadHatter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.