Насколько хорош NTP для распределенной синхронизации времени? - PullRequest
4 голосов
/ 19 февраля 2011

Насколько точен NTP для синхронизации времени серверов?

Я пишу службу, которая требует, чтобы набор серверов (некоторые из которых выступали в качестве клиентов, а некоторые как серверы) синхронизировались с гранулярностью второго уровня.Мне интересно, лучше ли использовать NTP или есть что-то лучше?

Должен ли я запустить ntp-сервер на одном из них, а другие использовать его в качестве источника?Любые другие рекомендации / страшные истории с NTP?

Все серверы Linux.

Обновление: Уровни обслуживания:

Я бы хотел, чтобы один сервер был точным UTC (второго уровня, не микросекунды или тому подобное), и я бы хотел, чтобы все остальные серверы были такими же, как и этот сервер, независимо от того, является ли его точный UTC или нет (события принимаются этим одним сервером из нескольких мест с различными интерваламиЯ требую, чтобы все эти события были на одном и том же «относительном» уровне. Нет, я не могу иметь на главном сервере TS события по мере их поступления, потому что это потребует сохранения смещения (когда событие фактически произошло и когда оно было зарегистрировано, что требует много дополнительной работы), и это без необходимости усложняет ситуацию.

В настоящее время я настроил один сервер как сервер времени stratum 2, используя некоторый GPS startum 1в качестве серверов в ntp.conf, на других серверах я установил этот сервер как единственный сервер в ntp.conf.

Надеюсь, этого будет достаточно. Спасибо!

Ответы [ 3 ]

2 голосов
/ 19 февраля 2011

NTP будет держать вас в течение секунды достаточно хорошо для большинства приложений.

Если вам нужна более высокая точность, и все серверы работают * nix, я бы исследовал реализацию Precision Time Protocol . Он включает в себя несколько родительских часов и согласование, чтобы найти надежный источник в сети. Это протокол времени, рекомендованный для отметок времени событий в электроэнергетике (например, точная отметка времени в файлах журналов для действий реле и сигналов измерения, что помогло в расследовании Северо-восточного затемнения 2003 ).

1 голос
/ 19 февраля 2011

Прежде всего, вы могли бы взглянуть на страницу Википедии NTP.

По сути, для начала (я проповедую это регулярно) укажите, какой уровень обслуживания вы хотели бы получить.Вам нужен точный UTC?К какой толерантности?То есть вам действительно нужно знать, который час?

Или вам просто нужна точная синхронизация между системами?

Сколько машин мы говорим, и они географически распределены??

Некоторые параметры:

  • точное время: установите по крайней мере один сервер в качестве уровня 2 и сделайте так, чтобы он ссылался как минимум на 3 сервера уровня 1.Если у вас много серверов, сделайте это более чем одним;очевидно, вы получаете больше надежности, не имея единой точки отказа.

  • точная синхронизация: настройка одноранговых узлов NTP.

  • точное время и географическое распределение: более одного сервера уровня 2, как указано выше, с одним «рядом» с каждым кластером;они могут вглядываться в слой 2. чтобы улучшить голосование.

Я не думаю, что есть что-то хорошо известное лучше, чем NTP, доступное.

Обновление В другом вопросе упоминается протокол точного времени PTP (IEEE 1588). Он отлично подходит для точной синхронизации, но зависит от многоадресной рассылки.

Кроме того, стоит подумать о получении источника времени GPS.

0 голосов
/ 19 февраля 2011

Да, установите один из ваших серверов в качестве внутреннего NTP-сервера и синхронизируйте остальные с этим.Как я помню, он дает вам точность, как правило, в течение миллисекунд.

Если какой-либо из ваших серверов выключен - и я не могу вспомнить, что означает «выключен» - NTP не исправит это.Есть способ автоматически исправить это, но я не могу вспомнить на данный момент.

...