Я искал решение, но не нашел однозначного ответа.
В моей компании все наши серверы синхронизируют время с одним из наших частных серверов ntp (которые, если я прав, являются слоем 3).
Эти серверы уровня 3, конечно, настроены на получение времени некоторых общедоступных серверов NTP (уровень 2, если я прав)
из-за некоторых правил, связанных с нашим бизнесом, нам нужно постоянно быть уверенным, что наши клиентские серверы не имеют большого смещения с серверами уровня 2.
Итак, мы отслеживаем это, но смещение, которое видят наши клиентские серверы, является только смещением с нашими серверами уровня 5, есть ли что-то, что нужно сделать, чтобы получить смещение с серверами уровня 2, даже если он настроен на использование внутренних серверов уровня 3? Обратите внимание, что наши клиентские серверы не имеют доступа в Интернет, и наша цель - остаться в таком состоянии.
Мне было интересно, есть ли что-то, что нужно сделать на наших клиентских серверах, чтобы получить смещение со слоем 2. путем вычисления? (смещение клиента srv + смещение stratum 3?) любые другие возможности?
Я полагаю, что это проблема нескольких компаний, решение должно существовать
спасибо заранее
изменить: я изменил номер страты, который я написал в начале, на мой взгляд, в это время было не правильно
Разброс корней 81 мс по Интернету вполне правдоподобен. Уровень 0 может быть на полпути вокруг земного шара. Общая ошибка складывается из нескольких переходов.
Подумайте о добавлении аппаратного устройства NTP с радиоприемниками и приличным генератором. Ваши требования к производительности оправдывают затраты и неудобства. Бонус, для работы не требуется Интернет, но сохраняйте свои источники в Интернете.
Это ответ на Проверить, что внутренний NTP-сервер отправляет правильное время?. Краткое содержание:
Убедитесь, что у вас хорошая конфигурация.
NTP уже отслеживает смещение от своего восходящего слоя в рамках своей нормальной работы, поэтому все, что вам нужно, - это использовать соответствующий инструмент для извлечения этой информации и подключения ее к вашей системе оповещения / телеметрии.
Ваш ntpq
выходные данные показывают сервер уровня 3 с разницей в системном смещении менее 1 миллисекунды. Это примерно так хорошо, как вы можете ожидать от Интернет-ссылок, без применения специальных мер. Корневая дисперсия немного высока, но это почти полностью из-за ваших апстримов, поскольку ваша задержка до них составляет чуть более 2 мс.
Если вы настраиваете свои внутренние системы для синхронизации с серверами уровня 3, и они показывают аналогичное системное смещение, значит, вы достигли своей цели. Но убедитесь, что у вас есть как минимум 4 общедоступных сервера уровня 1/2 и как минимум 4 внутренних сервера.
Не забудьте прочитать черновик RFC передовой практики NTP, в котором объясняется, почему вам нужно несколько источников и почему важен мониторинг.
Вы когда-нибудь задумывались об использовании GPS-приемника (возможно, в сочетании с gpsd) в качестве источника времени для вашего NTP?
хорошо, я нашел решение !. Я могу спросить у своего слоя n-1, какое смещение у него со слоем n-2, используя команду ntpdc, затем я могу посмотреть в файле peerstat, какое смещение у моего клиентского сервера со слоем n-1. Я написал небольшой сценарий:
#!/bin/bash
#determine the IP of the currently used stratum n-1 srv as NTP source
used_ntp_source=`ntpq -np | grep "*" | awk '{print $1}' | sed 's/*//'`
#determine the offset between used stratum n-1 srv and the stratum n-2 (in seconds)
offset_between_stratn_1_and_stratn_2=`ntpdc -np $used_ntp_source | grep "*" | awk '{print \$7}'`
#determine the offset between localhost and the stratum n-1 srv (in seconds),looking in the last 20 lines of peerstats file, but keeping only the last one
local_offset_with_stratn_1=`tail -20 /var/log/ntpstats/peerstats | grep $used_ntp_source | tail -1 | awk '{print $5}'`
#calculation
calculated_offset=$(python -c "from decimal import Decimal; print(Decimal('$offset_between_stratn_1_and_stratn_2') + Decimal('$local_offset_with_stratn_1'))")
echo "the calculated offset is $calculated_offset"