Решение NTP для сети устройств Raspberry Pi

Я создал собственное решение для цифровых вывесок на основе Raspberry Pi. В основном все Pi разбросаны по одному городу на Среднем Западе (на данный момент), и они запрашивают ежечасные обновления с VPS, который физически находится в Далласе. Фактическое отображение Pi осуществляется через веб-приложение в хроме, которое открывается при загрузке и использует javascript для циклического просмотра содержимого через определенные промежутки времени.

В качестве примера предположим, что два таких дисплея находятся в одном месте, каждый из которых меняет изображение на экране каждые 4 секунды. И предположим, что в течение часа, начинающегося в 15:00, им предоставляется один и тот же список контента для циклического просмотра сервером. Когда наступает 15:00, оба отображают элемент контента A, ждут 4 секунды, отображают элемент контента B и т. д., прежде чем снова вернуться к A.

Поскольку у raspberry pi нет чипа часов реального времени, оба будут получать всю информацию о времени через NTP. ntp.conf говорит мне:

«pool.ntp.org сопоставляется примерно с 1000 NTP-серверов низкого уровня. Ваш сервер будет выбирать другой набор при каждом запуске».

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

Моя теория заключается в том, что, поскольку они выбирают разные серверы NTP из пула (и, возможно, некоторые из них находятся далеко и т. д.), они получают достаточно разные обновления времени, чтобы один думал, что сейчас 15:00:005, а другой думал это 15:00:00.

Наконец, придя к вопросу (извините), стоит ли мне настроить свой сервер в Далласе как единственный сервер NTP для всех моих разрозненных Pi? Даже если сервер Далласа ошибается на несколько секунд, по крайней мере, все они будут синхронизированы, игнорируя тот факт, что данные одного Pi могут идти по другому маршруту в Даллас, чем данные другого, что делает обновление времени немного неверным. Чтобы уточнить, мне все равно, думает ли Pi, что сейчас 15:00:005, когда на самом деле 15:00:00, я просто хочу, чтобы они ВСЕ думали, что это 15:00:005.

Возможно, я слишком беспокоюсь об этом или недооцениваю точность 3-4 низкоуровневых NTP-серверов, даже если они находятся далеко. Думал, это будет как минимум интересный вопрос. Заранее спасибо!


person Chris Trudeau    schedule 18.11.2015    source источник
comment
стоит ли это того - сколько $$$ вам это будет стоить, потому что числа Пи отличаются друг от друга на одну двадцатую секунды? $0? Нет, оно того не стоит. Но вы должны по крайней мере изменить их, чтобы использовать us.pool.ntp.org, чтобы остаться с США только интернет-трафик.   -  person TessellatingHeckler    schedule 19.11.2015
comment
Это не стоит мне никаких денег, я имел в виду, что оно того стоит, как увеличение точности синхронизации между устройствами. Меня просто раздражает, когда я вижу их немного не в себе. Конечно, это не часто, но я думаю, что меня легко раздражать. И да, я должен сделать это, спасибо за совет.   -  person Chris Trudeau    schedule 19.11.2015
comment
Я не понимаю твоей проблемы. Просто использовать тот же пул?!   -  person Gustav    schedule 19.11.2015
comment
Я использовал карты pool.ntp.org примерно для 1000 низкоуровневых NTP-серверов. Ваш сервер будет выбирать другой набор при каждом запуске. в ntp.conf означает, что каждый pi получает информацию с четырех разных серверов в разных местах, что создает расхождение во времени, из-за которого мои дисплеи не синхронизируются.   -  person Chris Trudeau    schedule 19.11.2015
comment
Если это не так, и это чередующийся набор из четырех, так что все pi получают время от одних и тех же четырех в любое время, то просто изменить его на пул США, вероятно, будет хорошо. Я пытаюсь выяснить, какой из этих двух методов он использует.   -  person Chris Trudeau    schedule 19.11.2015
comment
Все ПИ не получают все время одни и те же 4 сервера пула. В зависимости от кеша DNS у них могут быть разные серверы. Несмотря на это, все серверы пула очень близки к utc, и ntpd на Pi будет следить за временем. Мне очень трудно поверить, что любые визуально заметные проблемы синхронизации являются результатом алгоритмов ntpd для синхронизации времени.   -  person dfc    schedule 19.11.2015
comment
Я тоже не особо в это верил, думал, что это может быть что-то не так с моим кодом. Но хотя два из них не были синхронизированы, я вошел в оба и обнаружил, что один считает, что время опережает другое примерно на две секунды. На данный момент я настроил их всех так, чтобы они предпочитали четыре ближайших к моему городу сервера stratum 1 и использовали пул США в качестве резервной копии. Я предполагаю, что это будет достаточно хорошо. Спасибо всем, что нашли время ответить.   -  person Chris Trudeau    schedule 20.11.2015


Ответы (1)


В зависимости от вашего окна ошибки (оно кажется очень узким)

  1. Вы указываете их все на один и тот же NTP-сервер (возможно, ваш собственный) и получаете сообщение об ошибке о пути вашего пакета туда и обратно в течение дня, это может дать вам даже секунды точности в зависимости от вашей сети.
  2. Установите модуль GPS, спутники GPS транслируют очень точный час. У них даже есть информация о местоположении, чтобы вы могли сказать, насколько искажена ваша временная метка. Это очень точно, если все сделано правильно, есть даже системы беспроводного сетевого вещания, использующие этот метод для синхронизации данных.
person Ariel M.    schedule 20.11.2015
comment
Я в основном сделал № 1 в вашем списке, и я, вероятно, не буду делать что-то еще, если честно, поскольку я хочу контролировать расходы для каждого устройства. У меня есть те же четыре сервера уровня 1, все достаточно близкие, для каждого Pi сейчас, с четырьмя серверами пула в США после них. Все они находятся в пределах миллисекунд, и все выглядит рассинхронизированным только тогда, когда вы попадаете в сотни миллисекунд. Спасибо за ответ, вы единственный ответ, и я уже в значительной степени реализовал то, что вы предложили, поэтому я передам это вам. - person Chris Trudeau; 20.11.2015
comment
Вы можете увеличить свои шансы на хорошую синхронизацию, заставив их всех запрашивать время ntp одновременно, возможно, в 3 часа ночи или около того. Конечно, все это недетерминировано, поскольку зависит от условий сети. Но держу пари, ваша синхронизация будет в пределах секунды. - person Ariel M.; 20.11.2015