Máy chủ NTP đơn trên mạng cách ly


8

Tôi có hai máy linux (A và B) trên một mạng bị cô lập. Chúng phải được đồng bộ hóa thời gian. Máy A được cấp nguồn không liên tục và phải phục vụ thời gian, vì nó được kết nối với nguồn thời gian có thẩm quyền (GPS). Máy B chỉ được cấp nguồn nếu máy A được cấp nguồn, nhưng nó là một thiết bị linux được nhúng và trạng thái nguồn của nó sẽ thay đổi thường xuyên. Cả hai máy đều không có quyền truy cập vào các hệ thống khác. Đó là một mạng kín.

Tôi hiểu rằng đây là một đơn đặt hàng khá cao đối với NTP, vì NTP thường mong đợi có liên hệ với một số máy chủ. Tôi gặp sự cố khi điều này hoạt động chính xác trên Máy B. Máy A đồng bộ với GPS tốt và máy B có thể truy cập vào máy A và thậm chí thực hiện các truy vấn thời gian, nhưng Máy A không đáng tin cậy (có lẽ chính nó?). Sau một giờ máy A hoạt động, máy này đột nhiên thay đổi và máy B hoạt động. Tuy nhiên, khi máy A không hoạt động (và do đó là máy B), máy B lại một lần nữa không thể tìm thấy đồng bộ thời gian tốt.

Đây là một số thông tin ntpdate. Xin lưu ý rằng ngay cả khi tầng A của máy A là 1, hoạt động không thành công với cùng một đầu ra ở cuối.

10.10.10.1: Máy chủ bị rớt: tầng tầng quá cao
máy chủ 10.10.10.1, cổng 123
tầng 16, độ chính xác -19, bước nhảy vọt 11, tin tưởng 000
refid [10.10.10.1], độ trễ 0,02614, độ phân tán 0,00000
truyền 4, trong bộ lọc 4
thời gian tham khảo: 00000000.00000000 Thu, ngày 7 tháng 2 năm 2036 6: 28: 16.000
bắt nguồn dấu thời gian: d3a9bdc4.27ebb350 Thu, ngày 12 tháng 7 năm 2012 21: 19: 00.155
truyền dấu thời gian: bc17c804.b42dfffe Sat, ngày 1 tháng 1 năm 2000 0: 25: 39.703
độ trễ bộ lọc: 0,02625 0,02614 0,02618 0,02625 
         0,00000 0,00000 0,00000 0,00000 
bộ lọc bù: 39544160 39544160 39544160 39544160
         0,000000 0,000000 0,000000 0,000000
độ trễ 0,02614, độ phân tán 0,00000
bù 395441600,451568

 1 tháng 1 00:25:39 ntpdate [677]: không tìm thấy máy chủ nào phù hợp để đồng bộ hóa

Tôi đoán là máy A không tin tưởng vào thời gian phục vụ. Sau 51 phút (có thể đã xảy ra trước đó, tôi không biết) thời gian hoạt động và đồng hồ của nó được đồng bộ hóa với GPS, máy A bắt đầu phục vụ thời gian chính xác và máy B đã chọn nó. Tôi cần điều này xảy ra sớm hơn. Giống như, trong vòng vài giây nếu có thể.

Với các cấu hình sau (và rất nhiều chờ đợi), cuối cùng nó cũng thành công.

Máy A ntp.conf:

máy chủ 127.127.28.0 thích minpoll đúng 4 maxpoll 4
fudge 127.127.28.0 stratum 1 time1 0.420 refid GPS 

Máy B ntp.conf:

máy chủ 10.10.10.1 thích minpoll đúng 4 maxpoll 4

ntpq -c ngang hàng trên Máy B mà không sửa thời gian tốt:

     điều khiển từ xa st t khi bình chọn đạt độ trễ bù jitter
================================================== ============================
 10.10.10.1 .STEP. 16 u 9 16 0 0.000 0.000 0.000

ntp1 -c ngang hàng trên Máy B với thời gian sửa tốt:

     điều khiển từ xa st t khi bình chọn đạt độ trễ bù jitter
================================================== ============================
* 10.10.10.1 SHM (0) 2 u 7 16 17 0.669 2.597 1.808

Vì vậy, bây giờ câu hỏi trở thành: làm cách nào để khiến Máy A tự tin một cách nhanh chóng?

Một số đầu ra gỡ lỗi từ Máy A trước và sau Máy B quyết định rằng Máy A đủ tốt để sử dụng ..

trước..

~ # ntpq -c rv
associd = 0 status = c418 leap_alarm, sync_uhf_radio, 1 sự kiện, no_sys_peer,
phiên bản = "ntpd 4.2.6p4@1.2324 Thứ Sáu ngày 24 tháng 2 15:01:45 UTC 2012 (1)",
bộ xử lý = "armv7l", system = "Linux / 2.6,35,14", bước nhảy = 11, tầng = 2,
độ chính xác = -19, rootdelay = 0,000, rootdisp = 44,537, refid = SHM (0),
reftime = d3ab0053.43b44780 Thứ Sáu, ngày 13 tháng 7 năm 2012 20: 15: 15.264,
đồng hồ = d3ab0062.e7e03154 Thứ Sáu, ngày 13 tháng 7 năm 2012 20: 15: 30.905, ngang hàng = 34819, tc = 4,
mintc = 3, offset = 0,000, tần số = 0,000, sys_jitter = 3,853,
clk_jitter = 36.492, clk_wander = 0.000

sau...

~ # ntpq -c rv
associd = 0 status = 0415 leap_none, sync_uhf_radio, 1 sự kiện, clock_sync,
phiên bản = "ntpd 4.2.6p4@1.2324 Thứ Sáu ngày 24 tháng 2 15:01:45 UTC 2012 (1)",
bộ xử lý = "armv7l", system = "Linux / 2.6,35,14", bước nhảy = 00, tầng = 2,
độ chính xác = -19, rootdelay = 0,000, rootdisp = 41.278, refid = SHM (0),
reftime = d3ab0063.43b37856 Thứ Sáu, ngày 13 tháng 7 năm 2012 20: 15: 31.264,
đồng hồ = d3ab006d.9ee53ec2 Thứ Sáu, ngày 13 tháng 7 năm 2012 20: 15: 41.620, ngang hàng = 34819, tc = 4,
mintc = 3, offset = 0.000, tần số = 43.896, sys_jitter = 0.762,
clk_jitter = 36.953, clk_wander = 0.000

1
Chúng ta có thể xem các ntp.conftệp và đầu ra từ ntpq -pkhi máy B KHÔNG nhận được thời gian tốt từ máy A không? Nó có thể được đánh dấu máy A là một đánh dấu sai hoặc một cái gì đó. Khi máy B không tin tưởng máy A, máy A có được đồng bộ hóa với GPS không? (Đầu ra của ntpstatmáy A.)
Aaron Copley

Tôi đã nghe nói rằng chrony phù hợp hơn cho ứng dụng này. "Nếu máy tính của bạn kết nối với mạng trong 5 phút mỗi ngày một lần (hoặc đại loại như thế) hoặc bạn tắt máy tính (Linux v2.0) khi bạn không sử dụng hoặc bạn muốn sử dụng NTP trên mạng bị cô lập không có đồng hồ phần cứng trong tầm nhìn, chrony sẽ hoạt động tốt hơn cho bạn. "
David Schwartz

@AaronCopley Tôi có thể đăng chúng trong vài (10 hoặc 12) giờ. Máy A được đồng bộ hóa với GPS trong vòng một phút khi khởi động Máy B có vấn đề khi đồng bộ hóa với máy A trong một khoảng thời gian khá dài.
San Jacinto

@DavidSchwartz Cảm ơn. Tôi sẽ xem xét nó, nhưng tôi hơi miễn cưỡng thay đổi nhiều hơn các cấu hình nếu tôi có thể giúp nó. Tại thời điểm này, việc xây dựng chéo mọi thứ cho Máy B là một việc vặt.
San Jacinto

@AaronCopley Cập nhật.
San Jacinto

Câu trả lời:


8

NTP nên hoạt động tốt. Nhìn vào một số tùy chọn để đồng bộ hóa nhanh khi khởi động. Nhìn vào burstiburstcác tùy chọn cho hệ thống B. Nhìn vào truetùy chọn cho nguồn đồng hồ GPS.

Cân nhắc sử dụng đồng hồ phần cứng làm nguồn thời gian dự phòng trên cả hai hệ thống. Đặt hệ thống tầng cao hơn B. Một cái gì đó như sau sẽ hoạt động:

server  127.127.1.0
fudge   127.127.1.0 stratum 8

Xem đầu ra ntpq -c peersđể xem khi nào bạn có được nguồn đồng hồ đáng tin cậy. Thông thường ntpmuốn một số phản hồi từ một nguồn thời gian đáng tin cậy trước khi nó tin tưởng nó. Điều này được chỉ định bởi ký tự đầu tiên trên mỗi dòng.

Trong khi NTP thích nhiều nguồn hơn, bất kỳ số lượng nguồn thời gian lẻ nào trong một cấp tầng sẽ hoạt động tốt. Vì bạn chỉ có hai máy chủ và đồng hồ GPS, mức độ ưu tiên (tầng) của các nguồn sẽ tăng từ GPS, đồng hồ trên máy chủ A, đồng hồ trên máy chủ B. Tăng tầng giữa mỗi ba hoặc bốn cấp sẽ đảm bảo các ưu tiên được tôn trọng.

EDIT: Nếu bạn có máy chủ NTP busybox trên máy chủ A, có thể đáng để cài đặt gói máy chủ ntp đầy đủ. Hiểu những gì đang xảy ra với máy chủ A cần phải đi một chặng đường dài để giải quyết vấn đề của bạn. Bạn sẽ cần ít nhất một nguồn thời gian đáng tin cậy ở đó trước khi máy chủ B tin tưởng nó. Nếu ntpq -c peerskhông hoạt động, sau đó bạn có thể thử ntpdc peers. Cả hai lệnh này cho phép bạn truy vấn các máy chủ khác. Một peerstatsbản ghi cũng có thể hữu ích.

Trên máy chủ B sử dụng ntpclient như tài liệu của busybox ntp cách ghi nhật ký những gì đang xảy ra trên nó

Đồng hồ phải ở gần thời gian chính xác nếu máy chủ không hoạt động lâu. Nếu bạn cần đồng bộ hóa hai hệ thống, điều đó là đủ. GPS sẽ mang lại thời gian đồng bộ với thế giới thực.

'ntpd -q' đồng bộ hóa nhanh chóng, nhưng thoát (hành vi ntpdate). Nó cần phải được theo sau bởi một ntpdlệnh mà không có tùy chọn thoát để có đồng bộ hóa liên tục.

EDIT2: Tôi kiểm tra máy chủ của mình và thấy một trong các máy chủ bị tắt trong một giây. Trong khi sửa lỗi này, tôi đã chơi với các cài đặt. iburstđược một máy chủ tin cậy rất nhanh. trueđảm bảo trình điều khiển đồng hồ được tin cậy nếu không có nhiều nguồn đáng tin cậy khác. Đồng hồ mất hơn một phút trước khi nó được tin cậy tại địa phương và có thể được tin cậy từ xa.

Khi kiểm tra, bạn sẽ có thể khởi động lại ntpdquy trình một khi nó được đồng bộ hóa và kiểm tra các cài đặt hoạt động nhanh như thế nào. Trong trường hợp trên, Máy chủ B có thể cần phải được khởi động lại để kiểm tra tốc độ đồng bộ hóa của nó. Khi theo dõi ntpdthay đổi, tôi sử dụng một dòng như:

while ntpq -c peers localhost; do sleep 10; done

Tên máy chủ và thời gian ngủ được điều chỉnh theo yêu cầu. Trong một số trường hợp, tôi chuỗi hai hoặc nhiều ntpqdòng lệnh trong vòng lặp. Khi làm như vậy tôi sử dụng lệnh echo và / hoặc date để cung cấp một dấu hiệu về nơi các bộ dữ liệu thay đổi.


Thêm cụm từ vào tập tin conf không cải thiện tình hình. Mỗi máy này là một máy busybox và tùy chọn "-c" không xác định đối với ntpq. Ngoài ra, đồng hồ không thể tin tưởng vào các thiết bị này cho đến khi chúng được đồng bộ hóa với GPS. Chỉ là một giới hạn của các hệ thống. Cảm ơn.
San Jacinto

Tôi thực sự đã mắc một lỗi nhỏ, tôi đã có phiên bản đầy đủ của ntpd chạy trên Máy A. Máy B là phiên bản duy nhất chạy phiên bản BusyBox (và nếu tôi có cách xây dựng chương trình cho nó, tôi cũng sẽ làm như vậy ở đó ). Cuối cùng, mọi thứ hoạt động. Tôi nghĩ đó là một vấn đề niềm tin sever. Bạn có thể cung cấp một số cái nhìn sâu sắc để chỉnh sửa của tôi? Cảm ơn.
San Jacinto

Ngoài ra, nếu bạn có cơ hội chỉnh sửa câu trả lời của mình một lần nữa, bạn có thể @ tôi để hệ thống thông báo cho tôi không? Cảm ơn.
San Jacinto

@SanJacinto Tôi đã thêm một chỉnh sửa thứ hai với kết quả từ hệ thống của tôi. Tôi không có ứng dụng khách ntpd busybox vì vậy tôi không thể đảm bảo kết quả với nó. Tôi sẽ thử thêm cả hai trueiburstvào máy chủ B.
BillThor

+1 từ tôi cho nỗ lực của bạn, nhưng nó không giải quyết được vấn đề của tôi. Một giải pháp tôi đã tìm thấy (và vui lòng đề xuất một cái gì đó khác nếu bạn muốn và tôi sẽ thử) là giết ntpd trên máy A sau khi nó đồng bộ với GPS, sau đó khởi động lại nó. Điều này dường như cho phép máy B đồng bộ với máy A trong vòng vài giây. Tôi đoán là một bước nhảy 42 năm trong Máy A (luôn khởi động từ Đại Kỷ Nguyên) đang khiến nó lo lắng về việc chia sẻ thời gian của mình, nhưng khi nó bắt đầu và đồng hồ đã được đặt, thì dường như đồng hồ đã không còn xa để được ở bên, vì vậy những điều chỉnh nhỏ làm cho nó cảm thấy tốt về việc chia sẻ thời gian của nó. Tôi đã cho phép ntp ..
San Jacinto
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.