0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Лучший способ синхронизировать часы javascript на стороне клиента с датой сервера

Лучший способ синхронизировать часы javascript на стороне клиента с датой сервера

У меня есть задача показать цифровые часы (с точностью до минут) на странице HTML в каком — то фиксированном timezone (MSK или MSD-в зависимости от текущей даты). Я бы не хотел полагаться на системные часы клиента, поэтому требуется некоторая синхронизация с сервером. HTTP сервер отправляет заголовок даты в каждом ответе, чтобы мы могли отправить запрос AJAX GET или HEAD на любой URL нашего сайта, чтобы получить дату сервера, вычислить разницу с датой клиента и использовать ее при обновлении часов с setTimeout(). Остаются и другие проблемы: timezone переключение на дневной свет, учет задержки при очень медленных соединениях.

Есть идеи для этой задачи самым простым способом? Я бы предпочел решить ее без программирования на стороне сервера.

7 ответов

  • Вызов переменной на стороне сервера на стороне клиента в javascript

У меня есть программа javascript, которая находит пользователя, а затем возвращает его _id на стороне сервера. Есть ли возможность сделать то же самое на стороне клиента? Или вызвать переменную на стороне сервера на стороне клиента WITHOUT с помощью jquery? Вот мой код: router.post(‘/’, function.

Это jQuery на стороне клиента или на стороне сервера библиотека JavaScript?

Вы можете рассчитать точное время с помощью NTP (протокол сетевого времени) в ваших кодах,

я пытаюсь объяснить тебе:

  1. У нас есть ClientTime при отправке запроса (например 4/3/2012 13:56:10.123)
  2. Вы отправляете ClientTime на сервер
  3. У нас есть время в оба конца для запроса, я назвал его RequestTime (например: это занимает 5 секунд)
  4. В Сервере мы вычисляем время разницы между Сервером и Клиентом (например: It ServerTime — ClientTime = ServerClientDifferenceTimeWithRequestTime), теперь вы должны учитывать эту разницу, включая время запроса туда и обратно на шаге 3, затем вы должны удалить время туда и обратно из разницы
  5. Сервер отправляет ответ, включающий ServerClientDifferenceTimeWithRequestTime и ServerTime
  6. У нас есть время для ответа в оба конца, я назвал его ResponseTime (например: это занимает 3 секунды)
  7. В клиенте мы снова вычисляем время разницы между сервером и Клиентом (например: It ServerTime — ClientTime = ServerClientDifferenceTimeWithResponseTime), опять же: теперь вы должны учитывать эту разницу, включая время отклика в оба конца на шаге 6
  8. Теперь у нас есть время в клиенте
  9. Вы должны рассчитать простые уравнения в клиенте:

X(SyncedTime) = Now + (ServerClientDifferenceTimeWithRequestTime — RquestTime)

X(SyncedTime) = Now + (ServerClientDifferenceTimeWithResponseTime — ResponseTime)

Now — ClientTime = RquestTime + ResponseTime =>

Now — (ServerClientDiffRq — RquestTime) = Now — (ServerClientDiffRs — ResponseTime)

если вы решите эту проблему, вы найдете это:

ResponseTime = (ServerClientDifferenceTimeWithRequestTime — Now + ClientTime + — ServerClientDifferenceTimeWithResponseTime )/2

, а затем вы можете найти синхронизированное время или время сервера в клиенте с помощью этого уравнения:

X(SyncedTime) = Now + (ServerClientDifferenceTimeWithResponseTime — ResponseTime)

Я показываю простой код, но когда вы хотите его написать, не забудьте использовать функции UTC дата & время.

На стороне сервера (например, php, c#):

PHP:

C#:

Клиентская сторона (Javascript с Jquery ):

  • javascript библиотека для хранения данных на стороне клиента с синхронизацией на стороне сервера

Я ищу библиотеку javascript, которая позволит мне хранить данные в базе данных на стороне клиента и в задней части автоматически синхронизировать базу данных обратно с базой данных сервера предпочтительнее что-то, что поддерживает различные движки точно так же, как это делает jStore для jQuery.

Возможные Дубликаты : как вызвать функцию на стороне сервера со стороны клиента — asp.net Вызов кода ASP.NET за функцией из Javascript Вызов метода ASP.NET на стороне сервера через JQuery привет, ребята, при загрузке страницы aspx, как можно вызвать метод на стороне сервера с кодом на стороне.

Эти две функции Javascript должны сделать трюк за вас.

EDIT: снято «.заменить(/^(. )[sS] /,»$1″)».

calcOffset() вычисляет смещение от времени сервера и компенсирует GMT/UTC.

getServerTime(), чтобы получить смещение по местному времени в соответствии с серверами, используя локальный timezone.

Если calcOffset() занимает много времени для выполнения, вы можете потерять точность в несколько секунд. Возможно, можно было бы принять во внимание время выполнения.

Читайте так же:
Как отрегулировать радиаторный вентиль

Если вы беспокоитесь о том, что вычисленное смещение станет неправильным при изменении местного времени или времени сервера на летнее время или с него, вы можете пересчитать немного после каждого часа, система компенсирует изменения в дневном времени экономии. Возможно, потребуется подождать, пока не пройдут как локальные, так и серверные часы.

Пример работает только в IE из-за «Msxml2.XMLHTTP», я думаю.

Я обнаружил, что алгоритм @mehdi-yeganeh выше не дал мне полезных результатов, но идея здравая: использовать алгоритм NTP (или, по крайней мере, его слабую версию) для синхронизации часов сервера и клиента.

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

на стороне браузера (javascript):

на стороне сервера (php, но может быть что угодно):

Ваш сервер на маршруте ‘GET /ntp’ должен возвращать что-то вроде:

Если у вас есть PHP >5.4, то вы можете сохранить вызов на microtime() и сделать его немного более точным с помощью:

Этот путь может рассматриваться как своего рода гетто, есть некоторые другие ответы Stack Overflow, которые могут привести вас к лучшему решению:

вы должны помнить время клиента между readyState==2 и readyState==3, если вы собираетесь использовать ajax, потому что время сервера будет установлено где-то между временем получения запроса и подготовкой ответа

Я бы запрашивал обновление с сервера только каждые 30 секунд или около того, если вам требуется точность только до минуты. Не полагайтесь на время клиента вообще, но используйте свои системные часы, чтобы поддерживать точность часов между обновлениями. Я думаю, вы сами ответили на свой вопрос?

Было бы лучше, если бы мы лучше поняли, что вы на самом деле пытаетесь сделать.

Если вы просто хотите, чтобы часы отображали время на сервере, которое затем настраивается на определенный timezone, сделайте это на стороне клиента со смещениями. Обработайте DST в часовых поясах, которые он применим, используя также дату, которую вы получаете от сервера. Если вы хотите определить задержку, вам, вероятно, понадобится небольшой скрипт на сервере, чтобы вычислить разницу. Но, как и выше, это помогло бы лучше понять проблему. Если точность только до минуты, задержка кажется менее критичной.

Благодаря @Mehdi Yeganeh и @Fedearne. я реализую свою функцию, чтобы использовать как логику, так и ее работу.

Я бы синхронизировал время во время инициализации с сервером времени Интернета.

Похожие вопросы:

Я заметил, что есть аналогичный вопрос по stackoverflow , но он был задан в 2008 году, а сейчас 2015 год. Ответ указывает правильное направление, но, похоже, в то время никакого плагина не было. Я.

В моем веб-приложении есть запрос, который занимает больше времени, но я не знаю, является ли это проблемой на стороне сервера или на стороне клиента. Есть ли способ синхронизировать процесс на.

При работе над django разработкой приложений какова наилучшая практика отображения объектов модели на стороне клиента? Должны ли модели анализироваться с использованием кода на стороне сервера или.

У меня есть программа javascript, которая находит пользователя, а затем возвращает его _id на стороне сервера. Есть ли возможность сделать то же самое на стороне клиента? Или вызвать переменную на.

Это jQuery на стороне клиента или на стороне сервера библиотека JavaScript?

Я ищу библиотеку javascript, которая позволит мне хранить данные в базе данных на стороне клиента и в задней части автоматически синхронизировать базу данных обратно с базой данных сервера.

Возможные Дубликаты : как вызвать функцию на стороне сервера со стороны клиента — asp.net Вызов кода ASP.NET за функцией из Javascript Вызов метода ASP.NET на стороне сервера через JQuery привет.

Я работаю в среде .Net, и на моей странице aspx я хотел бы добавить работающие цифровые часы w//seconds, но мне нужно, чтобы они использовали время на стороне сервера. Каков наилучший подход для.

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

Читайте так же:
Регулировка грифа акустической гитары hohner

У меня есть пара функций Javascript, которые мне нужно использовать как на стороне сервера, так и на стороне клиента в узловом приложении. На стороне сервера я мог бы создать модуль и require его.

5 способов синхронизации времени в ОС Windows 10 и почему возникает ошибка

Многие пользователи Вин 10 не придают особого значения точности часов на экране своего ПК. Но некоторым людям правильное время на компьютере жизненно необходимо для корректной работы специализированного софта. К такому относятся бухгалтерские, геймерские, трейдерские, букмекерские, блогерские и прочие программы. Рассмотрим, как правильно провести синхронизацию времени на ПК с Windows 10 по своему месту нахождения или расположению нужного сервера.

Как синхронизировать время на компьютере с интернетом Windows 10

Все версии ОС на ПК или телефоне имеют установленную функцию автоматической синхронизации локального времени на устройстве. Для этого производится отправка запроса на сервер для уточнения правильного времени и настройки внутренних часов на компьютере после получения ответа.

screenshot_1

Для того чтобы описанный механизм синхронизации осуществлялся, используется сетевой протокол NTP, который так и называется: «Протокол сетевого времени» («Network Time Protocol»). Главная задача этого протокола – не только получить информацию о точном времени, но и учесть промежуток между запросом и ответом в случае задержки. Потому, даже при низкой скорости или нестабильности интернет-соединения, настройка локальных часов будет проводиться с точностью до 10 миллисекунд.

Сегодня существует множество подобных NTP-серверов, по которым устройство бесплатно синхронизирует локальные часы. Что касается Windows 10, то в настройках уже указан нужный сервер для настройки. Но, по некоторым причинам, автоматическая синхронизация может нарушиться. Тогда ее можно провести вручную, для этого в «десятке» предусмотрено несколько способов, каждый из которых будет описан по отдельности.

screenshot_2

Параметры

Этот способ имеется только в Вин 10, в предыдущих сериях ОС он не использовался. Нужно сделать следующие действия:

  • Нажать на кнопку «Пуск» и в выпавшем окне – на значок шестеренки («Параметры»).

screenshot_3

  • Откроется окно, в котором нужно найти иконку «Время и язык» и нажать на нее.

screenshot_4

  • После перехода вкладка будет разделена на две части. В левой найти и открыть раздел «Дата и время». В правой поставить галочку в пункте: «Установить время автоматически» на включенный режим, если она не активна.

screenshot_5

  • Если синхронизация не произошла, в том же разделе найти пункт: «Формат даты, времени и региона» или в более старой версии «Дополнительные параметры даты и времени, региональные параметры», после чего открыть его.
  • Откроется панель, в которой нажать на раздел «Дата и время».
  • В новом окне нажать на вкладку «Время по интернету», затем – на кнопку «Изменить параметры».
  • Теперь нужно поставить галочку в разделе: «Синхронизировать с сервером времени в интернете». Ниже появится выпадающее окошко, в котором можно выбрать NTP-сервер или прописать свой, если предложенные ОС не подходят.

screenshot_6

  • После нажать на кнопки «Обновить сейчас» и «Ок».

Также во вкладке «Дополнительные часы», можно добавлять еще пункты, если требуется возможность видеть время по другим поясам.

Панель управления

Метод схож с предыдущим, только отличается способ открытия окна «Дата и время», где настраивается автоматическая синхронизация часов. Делается это так:

  • В поиске (лупа возле кнопки «Пуск») написать «Панель управления», открыть ее после выдачи результата.

screenshot_7

  • Выбрать раздел: «Часы, язык и регион», затем нажать «Дата и время».

screenshot_8

  • После его открытия сделать те же действия, что описаны в предыдущем заголовке, с места о вкладке «Время по интернету».

screenshot_9

Командная строка

CMD, как правило, используют программисты, так как она позволяет быстро выполнять множество сложных действий на ПК. Для обычных же пользователей Командная строка – не очень удобный инструмент, так как все директивы нужно вводить вручную, да еще знать их значение и правильно прописывать, без ошибок. Но если имеется желание установить синхронизацию часов через CMD, то делается это следующим образом:

  • ПКМ нажать по кнопке «Пуск».
  • В появившемся окне выбрать раздел: «Командная строка (Администратор)».

screenshot_10

  • Когда CMD загрузится, прописать команду «w32tm /resync» (пробел обязательно должен быть), и нажать кнопку «Ввод».
Читайте так же:
Валковые жатки назначение устройство и регулировки

screenshot_11

  • Затем появится информация, что был отправлен запрос, а затем – что синхронизация прошла успешно.

Если произошел сбой (0x80070426), можно попробовать следующие команды:

  • «w32tm /config /syncfromflags:manual /manualpeerlist:time.windows.com» – задать источник настройки времени.
  • «net start w32time» – запустить службу времени.
  • «w32tm /resync» – провести принудительную синхронизацию.

screenshot_12

PowerShell

Это более продвинутый аналог CMD, который обладает чуть большими возможностями. Соответственно, им также чаще пользуются программисты. Для запуска нужно:

  • Нажать ПКМ по кнопке «Пуск» и выбрать: «Windows PowerShell (Администратор)».

screenshot_13

  • Дождавшись, когда приложение загрузится, и появится строка для ввода, прописать в ней: «Get-Service W32Time | Select-Object» и нажать «Enter».

screenshot_14

  • В появившемся ответе отыскать раздел «Status», если там будет написано «Running», то прописать команду для синхронизации: «w32tm /config /reliable:yes» и нажать «Enter».

screenshot_15

  • Если в статусе будет указано «Stopped», нужно прописать команду запуска службы: «Start-Service W32Time». После чего снова ввести команду для синхронизации.

screenshot_16

Службы

Если указанные выше способы не сработали, тогда стоит провести настройку в разделе «Служба времени Windows». Для этого выполняются следующие действия:

  • Открыть системное окно нажатием клавиш «Win + R» и прописать команду «services.msc», после чего нажать на кнопку «Ок».

screenshot_17

  • Появившаяся вкладка «Службы» будет разделена на две части. В правой отыскать «Служба времени Windows» и открыть двойным щелчком.

screenshot_18

  • Теперь нужно найти пункт «Тип запуска» и указать «Вручную».
  • Если в разделе «Состояние» написано: «Остановлена», то нужно нажать кнопки «Запустить» и «Ок».

screenshot_19

  • В том случае, когда служба и так включена в ручном режиме, нужно сначала ее остановить, а потом запустить заново (перезапустить).

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

Что делать, если синхронизация часов не работает

Если после всех описанных способов при попытке настройки локального времени происходит ошибка, то можно сделать еще несколько действий:

Как установить и настроить NTP на сервере

Как установить и настроить NTP на сервере

Работа многих служб ОС зависит от того, насколько точны системные часы. Для чего нужна эта точность? Затем, что неточное время на сервере повлечет за собой много неприятностей.

В качестве примера приведем следующий: если в локальной сети часы машин, которые совместно используют файлы, не будут синхронизированы, то нельзя будет установить время изменения файлов. Из-за этого возникнет конфликт версий или перезаписи данных. Без установки точного времени на сервере появятся и сложности с задачами Cron – непонятно, когда они запустятся. Невозможно будет проанализировать журналы системных событий, чтобы понять причины неисправностей и сбоев.

Для того чтобы эти неприятности не возникли, нужно наладить синхронизацию системных часов. Для этого используется протокол NTP (Network Time Protocol).

Как устроен протокол NTP

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

С ними синхронизируются NTP серверы уровня 1, являющиеся источниками для серверов уровня 2. Серверы второго уровня синхронизируются с серверами первого уровня, но еще могут синхронизироваться между собой. Точно так же функционируют серверы третьего уровня и ниже. В целом, поддерживается порядка 256 уровней.

Иерархическая структура NTP является отказоустойчивой и избыточной. Так, резервные серверы берут синхронизацию на себя, когда речь идет об отказах соединения с вышестоящими серверами. Для расчета точного времени NTP берет данные ото всех источников, синхронизируясь с несколькими серверами.

Как установить и настроить NTP-сервер

Чтобы синхронизировать время, используют демон ntpd, который может быть как сервером, принимающим время из удаленных хостов, так и клиентом, раздающим время сторонним хостам. Демон ntpd зависит от указанных в файле конфигурации настроек.

Для установки сервера NTP используется стандартный менеджер пакетов $ sudo apt-get install ntp.

После установки все необходимые настройки NTP будут находиться в файле /etc/ntp.conf.

Первая строчка файла конфигурации – driftfile /var/lib/ntp/ntp.drift. В ней указан файл, в котором хранится информация о том, как часто смещается время. В этом же файле содержится и значение, которое было получено из предыдущих изменений времени. Если по каким-то причинам внешние NTP-серверы недоступны, знание берут из этого файла.

Читайте так же:
Регулировка в внутри монитора

После этого нужно указать файл, сохраняющий логи синхронизации – logfile /var/log/ntp.log.

В файле конфигурации нужно указать перечень серверов NTP, с которыми нужно синхронизироваться. По умолчанию этот перечень выглядит вот так:

  • server 0.ubuntu.pool.ntp.org
  • server 1.ubuntu.pool.ntp.org
  • server 2.ubuntu.pool.ntp.org
  • server 3.ubuntu.pool.ntp.org

Эти строки означают группу серверов, которые сообщают серверу верное время. Через опцию iburst можно увеличить точность синхронизации, то есть указать то, что на сервер необходимо отправлять несколько пакетов вместо одного:

  • server 0.ubuntu.pool.ntp.org iburst
  • server 1.ubuntu.pool.ntp.org iburst
  • server 2.ubuntu.pool.ntp.org iburst
  • server 3.ubuntu.pool.ntp.org iburst

Еще можно донести информацию о нужном сервере через опцию prefer:

VDS Timeweb арендовать

Ареал использования серверов NTP

Такие серверы есть во всем мире, но обычно синхронизация происходит с NTP-серверами именно того ареала, где физически находится ваш сервер. Таким образом, в файле конфигурации /etc/ntp.conf указывается поддомен ареала (региона) для pool.ntp.org:

  • Азия – asia.pool.ntp.org
  • Европа – europe.pool.ntp org
  • Африка – africa.pool.ntp.org
  • Северная Америка – north-america.pool.ntp.org
  • Южная Америка – south-america.pool.ntp.org
  • Океания – oceania.pool.ntp.org
  • Россия – ru.pool.ntp.org

Резервный сервер точного времени

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

Особые случаи использования NTP

Например, NTP могут использовать, чтобы усилить трафик в DDoS-атаках. А чтобы избежать столкновения с различными злоупотреблениями, следует ограничить доступ для внешних клиентов. Говоря об ограничениях, то по умолчанию в /etc/ntp.conf файле выставлены такие:

  • restrict − 4 default kod notrap nomodify nopeer noquery
  • restrict − 6 default kod notrap nomodify nopeer noquery

Такие опции, как nomodify, notrap, nopeer и noquery, не позволяют внешним клиентам менять конфигурации на сервере. Параметр kod (расшифровывается как kiss of death, «смертельный поцелуй») дает дополнительный уровень защиты: клиент, который часто отправляет запросы, получает сперва kod-пакет, являющийся предупреждением о том, что в обслуживании отказано, а потом отключается от сервера.

Для синхронизации машин из локальной сети с сервером NTP в файл конфигурации добавляется такая строчка:

А для локального хоста устанавливается неограниченный доступ к серверу NTP:

Как проверить синхронизацию

После сохранения всех изменений в файле конфигурации NTP-сервер нужно перезагрузить:

А затем выполнить команду:

NTP INFO

На выходе получится таблица, в которой указаны следующие параметры:

  • remote – адрес сервера точного времени;
  • refid – вышестоящий сервер;
  • st – уровень (stratum) сервера;
  • t – тип пира (u- unicast, m- multicast);
  • when – время последней синхронизации;
  • poll – время в секундах, за которое демон NTP синхронизируется с пиром;
  • reach – состояние доступности сервера;
  • delay – время задержки ответа от сервера;
  • offset – временная разница между сервером и сервером синхронизации;
  • jitter – смещение времени на удаленном сервере.

Слева от адреса сервера могут быть указаны еще и такие символы:

  • * – сервер выбран для синхронизации;
  • + – сервер, пригодный для синхронизации;
  • – – с сервером синхронизироваться не стоит;
  • х – сервер недоступен.

Чтобы проверить, насколько сервер подходит для синхронизации, нужно использовать команду ntpdate -q.

Как установить локальные дату и время

Чтобы установить локальные дату и время на сервере, нужно использовать команду ntpdate, при этом отправив необходимый запрос к серверу NTP:

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

В сети ЦОД ручное определение времени системы на всех устройствах может занимать довольно много времени, при этом системное время может быть еще и неточным. В таких ситуациях способен помочь протокол NTP, позволяющий быстро и точно синхронизировать системное время всех устройств, подключенных в сеть.

Ниже вы можете посмотреть на диаграмму настройки протокола NTP, где в целях синхронизации времени настроены IP-адреса SwitchA и SwitchB. При этом SwitchA синхронизировал свои часы с более авторитетными часами, к примеру, с GPS — системой глобального позиционирования. Таким образом, SwitchA функционирует еще и как сервер времени SwitchB.

download-1801-9a0555.png

План конфигурации

Создание данной конфигурации можно разделить на 2 части: 1. Настраиваем IP-адреса для SwitchA и SwitchB. 2. Конфигурируем SwitchA как основные тактовые часы, что позволит использовать локальные часы SwitchA в качестве опорных часов. 3. Настраиваем SwitchB в целях синхронизации времени с SwitchA и настраиваем аутентификацию NTP в целях обеспечения безопасности синхронизации.

Читайте так же:
Гитара упражнения синхронизация рук в руки

Что же, приступим.

Процедура конфигурирования

Первое, что надо сделать, — настроить IP-адреса для SwitchA и SwitchB. Начнем со SwitchA:

2-1801-60bf9d.png

Теперь настраиваем IP-адрес для SwitchB:

3-1801-712439.png

На этой стадии все, переходим к этапу номер два. Теперь понадобится настроить SwitchA в качестве главного сервера синхронизации и включить NTP-аутентификацию. Также следует установить уровень синхронизации 1.

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

К слову, в реальных условиях сервер NTP, который синхронизирован с авторитетными часами, задают как stratum 1 и используют в качестве источника синхронизации. Прочие сетевые устройства синхронизируют свои часы с часами сервера NTP, а это значит, что локальные часы сервера NTP настроены в качестве основных часов NTP.

4-1801-14a815.png

Вообще, методы аутентификации включают как MD5, так и HMAC-SHA256. HMAC-SHA256 характеризуется более высокой безопасностью, а MD5 — более высокой скоростью. В нашем примере мы применяем HMAC-SHA256 (третья строка вышеуказанного кода). Из первой же строки можно заметить, что ширина часов устанавливается на 1.

Теперь включаем функцию NTP-сервера для SwitchA:

5-1801-bdbaae.png

Следующий шаг — настройка SwitchB в целях синхронизации времени со SwitchA с последующим включением NTP-аутентификации. IP-адрес NTP-сервера — 10.10.1.1. Режим синхронизации часов устанавливается на одноадресный клиент/сервер.

6-1801-0e619e.png

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

Проверяем конфигурацию

В первую очередь проверим конфигурацию на SwitchA. Для этого: 1) запустим команду display ntp status, чтобы просмотреть статус NTP:

7-1801-b7d588.png

2) запустим команду display clock, чтобы увидеть состояние часов:

8-1801-c70342.png

Теперь можно проверить конфигурацию на SwitchB. Здесь: 1) запускаем команду display ntp status:

9-1801-f10955.png

2) запускаем команду display clock:

10-1801-14c3ba.png

Файлы конфигурации

Вот как выглядит файл конфигурации SwitchA (представленный в конфигурации формат зашифрованного текста может отличаться, что зависит от версии системного ПО):

11-1801-0db2e3.png

12-1801-f65f28.png

Выводы и рекомендации

Итак, какие возможны сценарии использования NTP: 1. Режим одноадресного клиента/сервера. Подходит для более высокого уровня в подсети синхронизации. Клиентам нужно получить IP-адрес сервера непосредственно до момента синхронизации. 2. Одноранговый режим. Подходит для более низкого уровня в подсети синхронизации. Активный и пассивный одноранговые узлы можно синхронизировать друг с другом. Если точнее, одноранговый узел более высокого уровня синхронизируется с узлом нижнего уровня. 3. Широковещательнй режим. Подходит, если IP-адрес сервера либо однорангового узла не определен, а также если надо синхронизировать в сети часы большого числа устройств. 4. Многоадресный режим. Для высокоскоростной сети, имеющей несколько рабочих станций и не требующей высокой точности часов. В типичной ситуации один либо несколько серверов сетевой синхронизации регулярно отправляют на рабочие станции многоадресные пакеты. Задержка передачи пакетов в локали находится на уровне миллисекунд. 5. Manycast. Когда серверы разбросаны по сети. Здесь клиент способен обнаруживать и синхронизироваться с ближайшим manycast-сервером.

Какие состояния проходит NTP в процессе синхронизации: — часы не установлены. Показывается, что часы не обновляются; — частота задана по конфигурации. Показывается, что тактовая частота установлена посредством NTP; — набор часов. Показывается, что часы установлены; — набор часов с неопределенной частотой. Показывается, что часы установлены, однако тактовая частота не определена; — часы синхронизированы. Показывается, что часы были синхронизированы; — импульс (часы устанавливаются в XXX сек.). Показывается, что система обнаруживает факт того, что разница во времени между клиентом и сервером синхронизации больше 128 миллисекунд. Локальные часы проверяются в течение XXX секунд.

Что можно сделать, если в NTP-синхронизации возникает ошибка (как обнаружить неисправность): 1. Запустите display ntp event clock-unsync, что отобразит последние 10 причин сбоев синхронизации. 2. Запустите display ntp sessions, что позволит увидеть информацию про все сеансы локального NTP. 3. Запустите display ntp slot-status, что даст возможность просмотреть состояния системы часов.

Статья написана по материалам центра документации компании Huawei.

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector