В прошлом я видел, что большая часть моего компьютера в моей локальной сети действительно не имеет одинакового времени в пределах 1 секунды или около того.
Поэтому я хотел убедиться, что стек серверов (скажем, 48 компьютеров 1U) будет иметь одинаковые часы. Я знаю, что могу использовать NTP в этом вопросе, и я знаю, что один сервер может получать время от атомных часов, а другие синхронизируются с этим одним сервером.
Однако у меня есть одна главная проблема с этой техникой: если этот один сервер сломается, моя синхронизация времени остановится ... совсем не хорошо.
Есть ли надлежащий способ убедиться, что часы всех 48 компьютеров синхронизированы с точностью около 0,5 мкс? Если не 0,5 мкс, на что можно надеяться? (т.е. 0,5 мс?)
NTP может использовать пул серверов (например, http://www.pool.ntp.org/en/ но вы можете создать свой собственный), чтобы избежать случая отказа одного сервера, и серверы также могут поддерживать локальные часы, если по какой-то причине все их родительские серверы недоступны.
Я действительно нашел Сообщение блога с информацией, которую я искал. Они упоминают, что в их кластере есть компьютеры, должным образом синхронизированные за 1 мс с помощью NTP.
Это выглядит как PTP, как предложил Майкл Хэмптон, следует той же стратегии, что и в: он будет использовать один компьютер, гроссмейстер, как источник для синхронизации времени, в отличие от попыток получить правильное абсолютное время на всех компьютерах (в результате, если гроссмейстер отличается на 10 мс от того, что мир считает абсолютное реальное время, все узлы отключатся на 10 мс).
В этом документе предлагается следующее решение:
1) Настройте один компьютер для получения абсолютного времени с помощью NTP. Если этот один компьютер выйдет из строя, часы могут начать дрейфовать, но они не станут неточными между собой, они будут дрейфовать по сравнению с абсолютное реальное время только.
В этом случае вы используете server
определения (гроссмейстер):
server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
...
Также настройте этот компьютер как NTP-сервер, скажем local.ntp
2) Настройте другие компьютеры как одноранговые
server local.ntp # only on a few other (3 to 5) computers
peer c0 iburst
peer c1 iburst
peer c2 iburst
Вам не нужно, чтобы все 48 компьютеров были подключены друг к другу, вместо этого у вас будет от 3 до 5 с каждым компьютером, использующим немного разные настройки (c1, c2, c3, затем c2, c3, c4 и т. Д.). вы получаете одноранговую сеть, которая синхронизирует друг друга как можно точнее, с несколькими компьютерами (от 3 до 5), связанными с узлом, определенным в (1), т.е. local.ntp
, чтобы время было максимально приближено к реальному.
В local.ntp
Ссылка сама по себе может рассматриваться как одноранговый узел (вы даже можете сделать его одноранговым?)
P.S. использование restrict
настоятельно рекомендуется при использовании peer
в полуобщественной сети, чтобы предотвратить доступ посторонних к вашей сети NTP.