การตั้งค่าเซิร์ฟเวอร์ NTP ระดับ 2 ภายในเครื่อง


9

ฉันกำลังพยายามติดตั้ง NTP บนเครือข่ายท้องถิ่นที่ไม่มีการเชื่อมต่ออินเทอร์เน็ต ลำดับความสำคัญหลักคือว่าเครื่องในเครือข่ายจะซิงค์กันแม้ว่าเวลาที่พวกเขาซิงค์ที่ไม่ถูกต้อง 100%

นอกจากนี้เรายังมีข้อกำหนดที่จะใช้ลำดับชั้นของ NTP เพื่อทำซ้ำการตั้งค่าของระบบที่ปรับใช้ สิ่งที่ฉันต้องการทำคือมีลำดับชั้นของเครื่องดังนี้:

Moon  (Main Server running Windows) (10.1.3.10)
|____Earth   (Linux x64 client) (10.1.3.1)
|____Mars    (Linux x64 client) (10.1.3.2)
|____Saturn  (Linux x64 client) (10.1.3.3)
|____RackCard23   (Linux x64 client and server to the two machines below)  (10.1.3.23)
     |___RackCard21   (Linux x64 client) (10.1.4.21)
     |___RackCard22   (Linux x64 client) (10.1.4.22)

โปรดทราบว่า RackCards มีสองพอร์ตอีเธอร์เน็ตหนึ่งพอร์ตเชื่อมต่อกับเครือข่าย 10.1.3.x และอีกพอร์ตหนึ่งในเครือข่าย 10.1.4.x RackCard23 ซึ่งซิงค์ออกจากเซิร์ฟเวอร์หลัก Moon จะทำเช่นนั้นในเครือข่าย 10.1.3.x และ RackCard22 / 23 จะเชื่อมต่อกับ RackCard23 บนเครือข่าย 10.1.4.x นี่เป็นเพราะฉันไม่ต้องการให้ RackCards 22/23 ออกจากเครือข่ายเพื่อซิงค์เวลาและเพราะมันทำซ้ำระบบที่ปรับใช้ครั้งสุดท้าย

จนถึงตอนนี้ฉันสามารถจัดการทุกอย่างที่ควรโดยการปิด Moon เพื่อซิงค์อย่างถูกต้อง (รวมถึง RackCard23)

แต่ฉันมีปัญหาในการรับ RackCard22 และ 23 เพื่อซิงค์จาก RackCard23

[root@RackCard23]# cat /etc/ntp.conf
# NTP Deamon Configuration File "ntp.conf"
# Created on 27/04/2010
# Original backed-up as "ntp.conf.backup"

server 10.1.3.10 iburst minpoll 4 maxpoll 4 prefer #This is what we want to happen
fudge   127.127.1.0 stratum 2   #Not sure about these two lines, was trying to force it to be a stratum 2 server
fudge   127.127.0.1 stratum 2

# Drift file.  Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift
restrict 10.1.3.10 mask 255.255.255.255 nomodify notrap noquery

#Attempt to get to act as an NTP Server
broadcast 10.1.4.255

restrict 10.1.3.21 mask 255.255.255.255 nomodify notrap
restrict 10.1.4.21 mask 255.255.255.255 nomodify notrap

นี่คือผลลัพธ์จาก ntptrace:

[rootRackCard23]# /usr/sbin/ntptrace
localhost.localdomain: stratum 16, offset 0.000000, synch distance 0.000030

อย่างที่คุณเห็นว่าเครื่องกำลังรายงานตัวเองว่าเป็นเซิร์ฟเวอร์ stratum 16 แม้ว่าจะถูกซิงค์กับเซิร์ฟเวอร์ "stratum 1" (Moon):

[root@RackCard23 awd]# /usr/sbin/ntpdate -d 10.1.3.10
21 Jun 13:55:09 ntpdate[19410]: ntpdate 4.2.2p1@1.1570-o Tue May 19 13:57:56 UTC 2009 (1)
Looking for host 10.1.3.10 and service ntp
host found : 10.1.3.10
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
server 10.1.3.10, port 123
stratum 1, precision -6, leap 00, trust 000
refid [LOCL], delay 0.04135, dispersion 0.00383
transmitted 4, in filter 4
reference time:    cfc99402.e010624d  Mon, Jun 21 2010  8:32:18.875
originate timestamp: cfc9dfad.48000000  Mon, Jun 21 2010 13:55:09.281
transmit timestamp:  cfc9dfad.47e27179  Mon, Jun 21 2010 13:55:09.280
filter delay:  0.04155  0.04155  0.04137  0.04135
         0.00000  0.00000  0.00000  0.00000
filter offset: -0.01448 0.000781 0.000537 0.000394
         0.000000 0.000000 0.000000 0.000000
delay 0.04135, dispersion 0.00383
offset 0.000394

21 Jun 13:55:09 ntpdate[19410]: adjust time server 10.1.3.10 offset 0.000394 sec

การกำหนดค่าของไคลเอนต์ (RackCard21 / 22) มีลักษณะดังนี้:

[root@RackCard21]# cat /etc/ntp.conf
# NTP Deamon Configuration File "ntp.conf"
# Created on 27/04/2010
# Original backed-up as "ntp.conf.backup"

server 10.1.4.23 iburst minpoll 4 maxpoll 4 prefer

server 127.127.1.0
fudge   127.127.1.0 stratum 10

# Drift file.  Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift

# restrict 127.0.0.1

restrict None mask 255.255.255.255 nomodify notrap noquery

และ ntptrace ให้สิ่งนี้:

[root@RackCard21]# /usr/sbin/ntpdate -d 10.1.4.23
21 Jun 14:04:34 ntpdate[14381]: ntpdate 4.2.2p1@1.1570-o Tue May 19 13:57:56 UTC 2009 (1)
Looking for host 10.1.4.23 and service ntp
host found : 10.1.4.23
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
10.1.4.23: Server dropped: strata too high
server 10.1.4.23, port 123
stratum 16, precision -20, leap 11, trust 000
refid [10.1.4.23], delay 0.02568, dispersion 0.00000
transmitted 4, in filter 4
reference time:    00000000.00000000  Thu, Feb  7 2036  6:28:16.000
originate timestamp: cfc9dfef.12b79516  Mon, Jun 21 2010 13:56:15.073
transmit timestamp:  cfc9e1e2.aeae7d56  Mon, Jun 21 2010 14:04:34.682
filter delay:  0.02573  0.02571  0.02568  0.02568
         0.00000  0.00000  0.00000  0.00000
filter offset: -499.609 -499.609 -499.609 -499.609
         0.000000 0.000000 0.000000 0.000000
delay 0.02568, dispersion 0.00000
offset -499.609286

21 Jun 14:04:34 ntpdate[14381]: no server suitable for synchronization found

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

ดังนั้นฉันต้องทำให้ RackCard23 เป็น stratum ที่สูงขึ้น (stratum 2) ฉันจะทำเช่นนั้นได้อย่างไร

ความช่วยเหลือใด ๆ ที่ได้รับความนิยมอย่างมากเนื่องจากฉันพยายามทำให้มันใช้งานได้หลายวันแล้ว!

แก้ไข:

สวัสดีคริสโตเฟอร์

ฉันรีสตาร์ท ntpd แล้วใช่;)

กล่อง linux ทั้งหมดกำลังเรียกใช้ CentOS 5.4

นี่คือผลลัพธ์จากคำสั่งที่คุณแนะนำ ประการแรกจากเซิร์ฟเวอร์:

[root@RackCard23]# /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.1.3.10       .INIT.          16 u    -   16    0    0.000    0.000   0.000
 10.1.4.255      .BCST.          16 u    -   64    0    0.000    0.000   0.001

[root@RackCard23]# /usr/sbin/ntpdc -c monlist
remote address          port local address      count m ver code avgint  lstint
===============================================================================
localhost.localdomain  34566 127.0.0.1              1 7 2      0      0       0
10.1.4.21                123 10.1.4.23              5 3 4    180      5       1
10.1.4.22                123 10.1.4.23              7 3 4      0      2       2

และจากลูกค้า:

[root@RackCard21]# /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.1.4.23       .INIT.          16 u   10   16    0    0.000    0.000   0.000
 LOCAL(0)        .LOCL.          10 l   44   64    1    0.000    0.000   0.001

หากคุณไม่มีการเชื่อมต่ออินเทอร์เน็ตแหล่งเวลาของคุณคืออะไรฉันคิดถึงมันบ้างไหม?
— dbasnett

แหล่งเวลาไม่สำคัญเลยเราไม่ได้ตามเวลาที่ถูกต้อง 100% สิ่งที่เราต้องการคือเครื่องทุกเครื่องเชื่อมโยงกันแม้ว่านั่นหมายความว่าเวลาของพวกเขาจะถูกปิด 10+ นาทีตามเวลาจริง ดังนั้นเราจึงใช้เครื่องสุ่มบนเครือข่ายเป็นแหล่งเวลาหลัก - เช่นนาฬิกาภายใน สิ่งที่เรารู้และยอมรับนั้นไม่น่าเชื่อถือ แต่ตราบใดที่สิ่งต่าง ๆ ตรงกันมันก็โอเคสำหรับเรา ในระบบที่ใช้งานจริงเราจะซิงค์กับแหล่งเวลาบนระบบอื่นที่เราไม่สามารถควบคุมได้ซึ่งอาจจะใช่หรือไม่แม่นยำกว่า
— fwgx

คำตอบ:


5

อย่างที่ Chris พูดไว้ stratum 16 บ่งชี้ว่าเซิร์ฟเวอร์ไม่ได้ซิงค์กับเซิร์ฟเวอร์จริง เพื่อให้แน่ใจว่าคุณได้เริ่มบริการ ntp ใหม่ใช่ไหม ( service ntpd restart) ฉันไม่ได้พยายามที่จะบอกว่าคุณคิดถึงสิ่งง่าย ๆ แต่ฉันทำเสมอ!

คุณสามารถโพสต์เอาต์พุตของคำสั่งอีกสองสามคำสั่งเพื่อช่วยในการวินิจฉัยได้หรือไม่

ntpq -pบนไคลเอนต์ & เซิร์ฟเวอร์ ควรแสดงเซิร์ฟเวอร์ที่กำหนดค่ารวมถึงสถิติสำหรับเซิร์ฟเวอร์เหล่านั้น
ntpdc -c monlistบนเซิร์ฟเวอร์ ควรแสดงลูกค้าที่เชื่อมต่อ

นอกจากนี้เนื่องจากคุณไม่ได้พูดถึงระบบปฏิบัติการฉันจึงใช้คำสั่งสไตล์ RHEL แจ้งให้เราทราบหากคุณมีสิ่งที่แตกต่าง

แก้ไขหลังจากข้อมูลเพิ่มเติม
ตกลงเห็นผลลัพธ์ของคุณนี่คือปัญหาของคุณ: คุณไม่มีเซิร์ฟเวอร์ stratum 1 ความจริงแล้ว "Moon" กำลังใช้นาฬิกาท้องถิ่นอยู่ มันรายงานตัวเองว่าเป็นเซิร์ฟเวอร์ stratum 16 สำหรับการอ้างอิงของคุณเซิร์ฟเวอร์ Stratum1 จะมี GPS ในตัวหรือนาฬิกาอะตอมมิก คุณมีหนึ่งในนั้นหรือไม่ มิเช่นนั้น Moon จำเป็นต้องซิงโครไนซ์นาฬิกากับเซิร์ฟเวอร์ ANTERNTP หากไม่มีการเข้าถึงเครือข่ายคุณจะต้องทำให้เสียชั้นบรรยากาศ (สิ่งนี้ต้องการให้คุณไม่สนใจเวลาที่ 'จริง' มากเกินไปซึ่งคุณทำไม่ได้ แต่ใครก็ตามที่อ่านข้อความนี้ควรทราบด้วย)

บนดวงจันทร์เพิ่มบรรทัดต่อไปนี้ไปยังแฟ้ม ntp.conf fudge 127.127.1.0 stratum 10ของคุณ: สิ่งนี้จะทำให้รายงานนาฬิกาในเครื่องของตนเป็น stratum 10 ซึ่งจะทำให้เซิร์ฟเวอร์อื่น ๆ ใช้มันผ่านนาฬิกา stratum 16 ท้องถิ่นของพวกเขา

- คาริสโตเฟอร์คาริล


เพิ่มผลลัพธ์ไปยังโพสต์คำถามหลัก
— fwgx

เห็นด้วยกับคริส จำนวนมากเข้าใจผิดเกี่ยวกับชั้น ntp.org/ntpfaq/NTP-s-algo.htm
— dbasnett

3

อาจอยู่นอกหัวข้อเซิร์ฟเวอร์ Stratum 2 ในพื้นที่ต้องใช้การเชื่อมต่อกับเซิร์ฟเวอร์ Stratum 1 และภายในเครือข่ายแยกของคุณคุณไม่มี

คุณสามารถรับโมดูล GPS ราคาถูกและ Raspberry Pi คอมพิวเตอร์บอร์ดเดียวที่ใช้พลังงานน้อยที่สุดและมีความสามารถในการเชื่อมต่อที่เพียงพอ เชื่อมต่อโมดูล GPS ของคุณกับ Raspberry Pi และเข้าร่วม Pi ในเครือข่ายของคุณด้วยซอฟต์แวร์ที่เหมาะสมสามารถเป็นเซิร์ฟเวอร์ Stratum 1 NTP ของคุณที่เซิร์ฟเวอร์ Stratum 2 ของคุณหรือเนื่องจากคุณมีมันอยู่ในเครือข่ายของคุณคอมพิวเตอร์ทุกเครื่องซิงค์เวลาด้วย


2

NTPd จะตั้งค่า stratum ของตนเองตาม:

  1. หากไม่มีการประเมินการเลื่อนของนาฬิกาในเครื่องให้ตั้งค่า stratum เป็น 16 กระบวนการนี้ใช้เวลาประมาณ 15 นาทีบนเซิร์ฟเวอร์ปกติหลังจากนั้นจะดำเนินการในขั้นตอนถัดไป
  2. เชื่อมต่อกับเซิร์ฟเวอร์เวลาที่กำหนดค่าทั้งหมดประเมินว่าเซิร์ฟเวอร์ใดเชื่อถือได้ (และเป็นที่ต้องการ) ตั้งค่า stratum โลคัลเป็น stratum ของเซิร์ฟเวอร์ที่เชื่อถือได้ต่ำสุดบวกหนึ่ง ดังนั้นหากเซิร์ฟเวอร์ที่เชื่อถือได้ต่ำที่สุดที่พบคือ 1 แล้ว local จะเป็น 2

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


1
อาจเป็นเพราะ Moon เป็นเครื่อง Windows XP Pro x64 ที่ใช้บริการ W32Time NTP ที่เป็นค่าเริ่มต้นซึ่งเป็น Simple NTP (SNTP) ที่ RackCard23 ไม่เห็นว่าเป็นเซิร์ฟเวอร์ NTP ที่เหมาะสมดังนั้นจะไม่ตั้งค่า stratum เป็นอย่างอื่น มากกว่า 16
— fwgx

โอ๊ะฉันไม่เห็นสิ่งนี้ก่อนที่จะแก้ไขโพสต์ของฉัน นี่เป็นโอกาสที่ค่อนข้างดี มีเหตุผลใดที่จะไม่ใช้ไคลเอ็นต์ ntp ที่เหมาะสมบนลำดับชั้นของคุณ? (ไม่ว่าจะใช้ Windows หรือ Unix)
— Christopher Karel

2

นอกเหนือจากนี้ฉันจะรวมการวิเคราะห์เอาต์พุต ntpq ของคุณ เพียงเพื่อช่วยแก้ไขปัญหาทั่วไปในอนาคตสำหรับตัวคุณเองและคนอื่น ๆ

ก่อนอื่นจากเซิร์ฟเวอร์ของคุณ:

[root@RackCard23]# /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.1.3.10       .INIT.          16 u    -   16    0    0.000    0.000   0.000
 10.1.4.255      .BCST.          16 u    -   64    0    0.000    0.000   0.001

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

คอลัมน์ที่สาม "st" หมายถึง stratum ของเซิร์ฟเวอร์เหล่านั้น ในกรณีนี้แสดงว่าเครื่องทั้งสองกำลังใช้นาฬิกาท้องถิ่น (stratum เริ่มต้นที่ 16) สามคอลัมน์สุดท้ายจะบ่งบอกว่านาฬิกาทั้งสองอยู่ไกลแค่ไหน อาจเป็นค่า "ความแตกต่างของวินาทีในนาฬิกา" หรือเวลาแฝงระหว่างเครื่องสองเครื่องจนถึงความแตกต่างในเวลาแฝงนั้น ที่นี่ตัวเลขที่สูงขึ้นจะแย่ลง

เหตุผลของรายการที่ไม่ซิงค์เช่นนี้อาจขึ้นอยู่กับปัจจัยบางอย่าง: หากออฟเซ็ตในนาฬิกามากเกินไป ntp จะไม่ลองด้วยซ้ำเพราะมันจะทำให้เกิดการกระโดดครั้งใหญ่ในเวลาท้องถิ่น หากกระวนกระวายใจแย่ลูกค้าจะ desync จนกระทั่งสิ่งต่าง ๆ มีเสถียรภาพ (โดยปกติจะเป็นการชั่วคราวและยัง reoccuring) อีกวิธีหนึ่งเช่นในกรณีของคุณถ้าเซิร์ฟเวอร์ที่กำหนดค่ามีค่า stratum เท่ากับหรือสูงกว่าแสดงว่าพวกเขามีความน่าเชื่อถือน้อยกว่าเป็นแหล่งเวลาลูกค้าจะไม่ใช้พวกเขา

- คาริสโตเฟอร์คาริล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.