Назад | Перейти на главную страницу

Как правильно вести хронометраж VPS?

Я настраиваю VPS для регистрации некоторых онлайн-данных временных рядов и замечаю, что время отключено. Я бы хотел, чтобы здесь была точность выше 10 секунд.

Я где-то читал, что хронометраж VPS отличается от времени в нативных (x86) системах, потому что ошибка зависит от загрузки системы или чего-то еще? И из-за этого ntpd может не подходить для работы внутри VPS?

Хватит слухов, я хотел бы знать: как поддерживать правильное системное время на VPS? Отличается ли это в зависимости от технологии виртуализации или поставщика VPS? И почему ntpd не подходит для работы внутри VPS?

Если у вас есть доступ к оборудованию, виртуальному (виртуальная машина) или физическому («голое железо» / гипервизор), вы можете и должны использовать NTP для синхронизации.

Проведите собственные эксперименты, настроив ntpd и включив статистику на разных хостах. Сравните с вашими любимыми эталонными часами и посмотрите, как они работают.

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

Краткая версия: хронометраж в контейнерах (каковым является большинство VPS) - это ответственность хоста; вам, вероятно, придется лоббировать своего провайдера VPS, чтобы исправить это.

Заметка: Этот совет делает не применяется, если ваш VPS является виртуальной машиной Xen (например, AWS), KVM (например, GCE) или Hyper-V (например, Azure). В этом случае ядро ​​и его драйвер часов виртуализированы, и вы должны обращаться с ними, как с голым железом, и запускать клиент NTP, такой как ntpd, chronyd, или systemd-timesyncd.

Более длинная версия: если ваш VPS является типичным контейнером, то NTP не может контролировать локальные часы. Часы ядра не являются контейнерами (пространством имен), и большинство менеджеров контейнеров (например, OpenVZ, Docker, LXC / LXD) не предоставляют контейнерам возможность времени ядра. (Видеть https://bugs.launchpad.net/ubuntu/+source/chrony/+bug/1589780 для обсуждения этого в контексте Ubuntu и Chrony.)

Если вы арендуете свой VPS у типичного провайдера, похоже, что они либо вообще не смогли настроить NTP, либо настроили его плохо и не отслеживают его.

Вы можете использовать такую ​​конфигурацию, как https://gist.github.com/kuzetsa/4a64cd1a95260d0bc5cc1b8aeaba1878 чтобы заставить ntpd запускаться в вашем контейнере, не пытаясь изменить локальные часы ( disable kernel линия является важной частью). Это позволит вам контролировать NTP-сервер хоста (если есть); добавьте pool.ntp.org или другую общедоступную службу NTP, если вы хотите сравнить часы вашего хоста VPS с некоторыми внешними источниками.