Назад | Перейти на главную страницу

смещение ntp со стратой 1, при использовании страты 2

Я искал решение, но не нашел однозначного ответа.

В моей компании все наши серверы синхронизируют время с одним из наших частных серверов ntp (которые, если я прав, являются слоем 3).

Эти серверы уровня 3, конечно, настроены на получение времени некоторых общедоступных серверов NTP (уровень 2, если я прав)

из-за некоторых правил, связанных с нашим бизнесом, нам нужно постоянно быть уверенным, что наши клиентские серверы не имеют большого смещения с серверами уровня 2.

Итак, мы отслеживаем это, но смещение, которое видят наши клиентские серверы, является только смещением с нашими серверами уровня 5, есть ли что-то, что нужно сделать, чтобы получить смещение с серверами уровня 2, даже если он настроен на использование внутренних серверов уровня 3? Обратите внимание, что наши клиентские серверы не имеют доступа в Интернет, и наша цель - остаться в таком состоянии.

Мне было интересно, есть ли что-то, что нужно сделать на наших клиентских серверах, чтобы получить смещение со слоем 2. путем вычисления? (смещение клиента srv + смещение stratum 3?) любые другие возможности?

Я полагаю, что это проблема нескольких компаний, решение должно существовать

спасибо заранее

изменить: я изменил номер страты, который я написал в начале, на мой взгляд, в это время было не правильно

Разброс корней 81 мс по Интернету вполне правдоподобен. Уровень 0 может быть на полпути вокруг земного шара. Общая ошибка складывается из нескольких переходов.

Подумайте о добавлении аппаратного устройства NTP с радиоприемниками и приличным генератором. Ваши требования к производительности оправдывают затраты и неудобства. Бонус, для работы не требуется Интернет, но сохраняйте свои источники в Интернете.

Это ответ на Проверить, что внутренний NTP-сервер отправляет правильное время?. Краткое содержание:

  1. Убедитесь, что у вас хорошая конфигурация.

  2. 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"