Я настраиваю 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 с некоторыми внешними источниками.