Синхронизируйте время между серверами без подключения к интернету - PullRequest
8 голосов
/ 26 июня 2010

У меня 5 серверов в локальной сети без подключения к Интернету.Мне нужно, чтобы они синхронизировали часы между собой.

Я мог бы настроить их как одноранговые узлы NTP и установить высокий уровень для локальных часов одного из них.Таким образом, остальные четыре будут синхронизироваться с этими часами.

Что я на самом деле хочу, так это чтобы они договорились о времени, используя все 5 локальных часов (т.е. выполнив какое-то среднее) по причинамНадежность и точность.Возможно ли это с NTP?

PS: я не хочу использовать внешний источник синхронизации.

РЕДАКТИРОВАТЬ: и нет сценариев вне функций NTP, которые могли бы толькоточность хуже :)

Ответы [ 4 ]

6 голосов
/ 26 июня 2010

Если у вас в среднем 5 дрейфующих часов, единственное, что вы получите, - это еще один дрейфующий час, который сложнее исправить Это не будет точнее. NTP использует несколько серверов для повышения точности, поскольку учитывает задержку в сети. Поскольку все ваши системы находятся в быстрой локальной сети, вам нужен только один сервер.

Настройте две системы на NTP-сервер, одну первичную, а если вам нужно, одну резервную копию. Пусть все другие системы синхронизируются с ними. Это будет значительно проще в настройке, чем решение с усреднением по часам, и вам не придется разрабатывать сумасшедшие сценарии.

1 голос
/ 26 июня 2010

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

0 голосов
/ 26 июня 2010

Хотел бы я дать однозначное предложение, но я недостаточно знаю о вашем окружении. Независимо от того, что вы, вероятно, будете делать какой-то сценарий кунг-фу.

Если это Unix / Linux, я бы настроил всех с помощью авторизованных ключей SSH, чтобы опросить команду date +%s друг друга (чтобы получить эпоху), усреднить эти времена с помощью awk или чего-то еще, а затем установить собственную локальную дату машины.

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

В Windows вы, вероятно, изучите VBScript и WMI.

EDIT: Вы можете столкнуться с некоторыми странными проблемами, если чьи-то часы смещаются вперед от среднего, и я предполагаю, что примерно половина из них будет;). Будущие временные метки могут быть довольно странными. Вам решать, как часто должна выполняться эта синхронизация.

0 голосов
/ 26 июня 2010

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

редактирование: Я пропустил среднюю часть. ну, в таком случае, вы, вероятно, можете написать скрипт на локальном сервере, чтобы собирать время от всех ведомых, получать среднее значение и обновлять собственное время с этим значением. В этом случае вы даже можете избавиться от ntp и просто использовать скрипт для обновления времени на всех серверах

...