Системное время становится неправильным при перезагрузке виртуальных машин - PullRequest
2 голосов
/ 02 октября 2019

С момента виртуализации нескольких физических серверов в GCP у меня возникла проблема, связанная с тем, что каждый раз, когда серверы перезагружаются, время меняется на несколько часов вперед (думаю, это 4 часа, но может быть 6 часов). Мой местный офис находится в часовом поясе CST, и это то, что мы хотим, чтобы сервер отображал. В GCP виртуальные серверы находятся в зоне us-central1a. На виртуальном сервере выполните команду tzutil / g, которая показывает, что для сервера установлено «центральное стандартное время». Он также показывает центральный часовой пояс, если я нажимаю на часы на панели инструментов и выбираю «изменить настройки даты и времени»

После того, как сервер был перезагружен (и сообщает о неправильном времени), я могу исправить время, нажав «обновить». Параметры «сейчас» (находятся на панели инструментов «Часы», «Изменить параметры даты и времени», вкладка «Время в Интернете», «Изменить параметры» «Обновить сейчас» (это указывает на сервер времени time.nist.gov).

Только эта проблеманачал возникать после миграции в GCP, поэтому я считаю, что это проблема Compute Engine, а не проблема ОС.

есть мысли о том, почему это может происходить? У меня это происходит на всех 4 серверах Windows, которые были перенесеныв Google Cloud. Три - win2008r2, а один - Win2012r2

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

Ответы [ 2 ]

2 голосов
/ 02 октября 2019

Я настроил сценарий запуска на задержку, а затем синхронизировал время после перезагрузки, но он не работал 100% времени, так что это скорее бинт

Получение этого сценария, вероятно, является решением, здесь. Что бы это ни стоило, вам нужно сделать то же самое и в Azure, и в AWS, поскольку они также устанавливают часовые пояса Windows в UTC по умолчанию, используя один и тот же механизм.

Обычно все серверы работают в формате UTC, его клиенты (приложения, браузеры и т. Д.) Устанавливают свои часовые пояса в соответствии с тем, где находятся они , и они сами могут переводить время UTC в любую локаль, в которой они находятся. в. (Другими словами, вы бы не хотели, чтобы сервер с миллионом клиентских подключений отслеживал часовой пояс каждого клиента для правильной работы). В вашем случае, суть заключается в том, что для запроса настраиваемого часового пояса на сервере также потребуется настраиваемая конфигурация сервера, а поведение, которое вы видите, является заданным. Вот почему лучше всего понять, почему сценарий запуска не работает так, как вы ожидаете.

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

0 голосов
/ 03 октября 2019

Если вы посмотрите журналы экземпляров виртуальной машины в консоли GCP, то увидите, что BIOS BIOS сообщает время в UTC

2019/10/3 14:9:44 Begin firmware boot time

Через некоторое время BIOS передает загрузчик

2019/10/3 14:9:45 End firmware boot time
Booting from Hard Disk 0...

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

...
2019/10/03 09:10:05 GCEWindowsAgent: GCE Agent Started (version 4.6.0@1)

В журнале событий Windows вы должны видеть события службы времени:

Log Name: System
Source: Time-Service
Level: Information

The time provider NtpClient is currently receiving valid time data from metadata.google.internal,0x1 (ntp.m|0x1|0.0.0.0:123->169.254.169.254:123).
The time service is now synchronizing the system time with the time source metadata.google.internal,0x1 (ntp.m|0x1|0.0.0.0:123->169.254.169.254:123).

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

C:\Users\user>systeminfo | find /i "Time"
System Boot Time:          10/3/2019, 9:09:49 AM
Time Zone:                 (UTC-06:00) Central Time (US & Canada)

Следовательно, вам не нужно синхронизировать время ни вручную, ни с помощью сценария запуска. Служба времени сделает это за вас: синхронизировать системное время сразу после загрузки и поддерживать его синхронизированным после. Все, что вам нужно, это установить правильные Time zone и Internet time server для Windows, а затем убедиться, что сервер времени доступен через сеть.

...