Синхронизировать время между серверами без подключения к интернету
У меня есть 5 серверов в локальной сети без подключения к интернету. Мне нужно, чтобы они синхронизировали часы.
Я мог бы настроить их как одноранговые узлы NTP и установить высокий слой для локальных часов одного из них. Таким образом, остальные четыре будут синхронизированы с этими часами.
на самом деле я хочу, чтобы они договорились о времени, используя все 5 локальных часов (т. е. делая какое-то среднее значение), по соображениям надежности и точности. Это возможно с НТП?
PS: я делаю не хотите использовать внешний источник синхронизации.
EDIT: и никаких сценариев за пределами функций NTP, что может только ухудшить точность:)
4 ответов
Если вы в среднем 5 дрейфующих часов, единственное, что вы получаете, это еще одни дрейфующие часы, которые сложнее исправить. Точнее не скажешь. NTP использует несколько серверов для повышения точности, поскольку он учитывает сетевую задержку. Поскольку все ваши системы находятся в быстрой локальной сети, вам нужен только один сервер.
настройте две системы для NTP-сервера, одну основную, и если вы чувствуете необходимость, одну резервную копию. Пусть все остальные системы синхронизируются с ними. Это будет значительно проще настроить, чем решение усреднения часов, и вам не придется разрабатывать сумасшедшие сценарии.
вы могли бы иметь возможность один из них слушать время от каждого компьютера, выполнять среднее, установить среднее, как это собственное время, и транслировать это время для всех других компьютеров. Кажется, хоть немного чрезмерным,.
вы можете настроить один из них в качестве сервера ntp, который будет транслировать свое время в локальной сети, а другие в качестве рабов слушать в локальной сети
изменить: Я пропустил среднюю часть. ну, в этом случае вы, вероятно, можете написать сценарий на локальном сервере, чтобы собрать время от всех рабов, получить среднее и обновить собственное время с этим значением. Вы даже можете избавиться от ntp в этом случае и просто использовать скрипт для обновления времени на всех серверах
Если это unix / linux, я бы настроил всех с авторизованными ключами SSH для опроса друг друга date +%s
команда (чтобы получить эпоху), среднее время с awk или что-то еще, а затем установить собственную локальную дату машины.
или, возможно, было бы более безопасным (и надежным) иметь одну авторитетную машину проверьте время каждого в том же поместье, усредните его, а затем обеспечьте себя и каждого другого хозяина этим средним.
в Windows вы, вероятно, будете смотреть в VBScript и WMI.
изменить: Вы можете столкнуться с некоторыми странными проблемами, если чьи-то часы дрейфуют вперед от среднего, и я предполагаю, что около половины из них будет ;). Будущие временные метки могут быть довольно странными. Это будет до вас, чтобы определить, как часто эта синхронизация должна будет происходить.