Muchos sistemas de software que dependen de una secuenciación cuidadosa de eventos dependen de un reloj de sistema estable y consistente. Los registros del sistema escritos por la mayoría de los servicios incluyen una marca de tiempo, que ayuda a depurar problemas que ocurren entre varios componentes de su sistema. Para ayudar a mantener sincronizados los relojes del sistema, las instancias de Compute Engine están preconfiguradas para usar el protocolo de hora de red (NTP).
Además de mantener sincronizada la hora del servidor, NTP es útil en el raro caso de un segundo intercalar. Un segundo intercalar es un ajuste de un segundo realizado en la hora UTC para tener en cuenta los cambios en la rotación de la Tierra. Los segundos bisiestos no ocurren a intervalos rutinarios, porque la velocidad de rotación de la Tierra varía irregularmente en respuesta a eventos climáticos y geológicos. Los segundos intercalares anteriores han impactado notablemente una variedad de servicios y aplicaciones en la web. Los servidores NTP ayudan a garantizar que todos los servidores informen al mismo tiempo durante el caso de un segundo intercalar.
Este documento describe cómo configurar servidores NTP en sus máquinas virtuales (VM) para que se comporten correctamente en el caso de un segundo intercalar.
Servidores NTP de Google y manchas de salto
Los segundos intercalares para un sistema operativo Unix se implementan comúnmente repitiendo el último segundo del día. Esto puede causar problemas con el software que espera que las marcas de tiempo solo aumenten. Para solucionar este problema, los servidores de tiempo en Google Cloud" difuminar " el segundo adicional durante veinticuatro horas (doce antes y doce después del segundo intercalar) para que las computadoras no vean el segundo adicional de una sola vez como una marca de tiempo repetida. Esto reduce el riesgo en sistemas que dependen de una marca de tiempo consistente. Se recomienda que todas las instancias de máquinas virtuales (VM) de Compute Engine estén configuradas para utilizar los servicios NTP internos de Google.
Configura NTP para tus instancias
Google Cloud No puedo predecir cómo los servicios NTP externos, como pool.ntp.org
, manejarán el segundo intercalar. Si es posible, se recomienda no utilizar fuentes NTP externas con máquinas virtuales de Compute Engine. Peor aún, el uso tanto del servicio NTP de Google como de un servicio externo puede provocar cambios impredecibles en la hora del sistema. Es preferible usar solo una única fuente NTP externa a usar una combinación, pero los servicios NTP externos, como pool.ntp.org
, probablemente usarán pasos para manejar el segundo intercalar. Como resultado, es posible que sus máquinas virtuales vean una marca de tiempo repetida.
El método más seguro es configurar las máquinas virtuales de Compute Engine para que utilicen un único servidor NTP: el servidor NTP interno proporcionado por Google. No mezcle servidores NTP externos y servidores NTP de Google, ya que esto podría provocar un comportamiento inesperado. Para obtener más información sobre el servidor NTP interno proporcionado por Google, consulte las preguntas frecuentes sobre NTP público de Google .
Para asegurarse de que sus máquinas virtuales estén configuradas correctamente, siga estas instrucciones.
Linux (cronista)
De forma predeterminada, la mayoría de las nuevas versiones de Linux utilizan chrony
para administrar su configuración NTP y la sincronización horaria. Para asegurarse de que chrony
utilice solo el servicio NTP interno, verifique la configuración chrony
y elimine los servidores NTP externos.
Utilice
ssh
para conectarse a su instancia.Consola
Para usar la consola para conectarse a la VM usando SSH, siga estos pasos:
Vaya a la página de instancias de VM en la consola de Google Cloud.
Haga clic en el botón SSH de la VM que desea configurar.
nube de gcloud
Para usar la CLI de Google Cloud para conectarse a la VM mediante SSH, ejecute el siguiente comando:
gcloud compute instances ssh VM_NAME
Reemplace
VM_NAME
con el nombre de la VM a la que se está conectando.En su instancia, ejecute
chronyc sources
para verificar el estado actual de su configuración NTP:$ chronyc sources
El resultado es similar al siguiente:
210 Number of sources = 2 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* metadata.google.internal 2 6 377 4 -14us[ -28us] +/- 257us ^- 38.229.53.9 2 6 37 4 -283us[ -297us] +/- 28ms
Si ve un único registro que apunta a
metadata.google
ometadata.google.internal
, no necesita realizar ningún cambio. Si ve varias fuentes, mezcladas entremetadata.google
y una fuente pública comopool.ntp.org
, actualice sus fuentes para eliminar cualquier servidor NTP externo.En el resultado del ejemplo, hay dos registros, uno que apunta a
metadata.google.internal
y otro que apunta a una dirección externa. Debido a que existen múltiples fuentes, deberá actualizar sus servidores NTP para eliminar la dirección38.229.53.9
, como se describe en el siguiente paso.Configure sus servidores NTP para eliminar servidores NTP externos.
Para eliminar el servidor NTP adicional de la lista, edite el archivo
/etc/chrony/chrony.conf
usando su editor de texto favorito. Busque todas las líneas que comiencen conserver external_source_ip_or_name
y elimínelas.Después de editar su archivo
/etc/chrony/chrony.conf
, reinicie el serviciochrony
. El comando para reiniciar puede variar según la distribución de Linux, como se muestra en los siguientes ejemplos:sudo service chrony restart
sudo systemctl restart chrony
Verifique su configuración ejecutando el comando
chronyc sources
nuevamente:$ chronyc sources
El resultado debería ser similar al siguiente:
210 Number of sources = 1 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* metadata.google.internal 2 7 377 98 -1343ns[-1588ns] +/- 396us
Linux (ntpd)
La mayoría de las distribuciones de Linux más antiguas utilizan ntpd
para administrar su configuración NTP y la sincronización horaria. Para asegurarse de que ntpd
utilice solo el servicio NTP interno, verifique la configuración ntpd
y elimine los servidores NTP externos.
Utilice
ssh
para conectarse a su instancia.Consola
Para usar la consola para conectarse a la VM usando SSH, siga estos pasos:
Vaya a la página de instancias de VM en la consola de Google Cloud.
Haga clic en el botón SSH de la VM que desea configurar.
nube de gcloud
Para usar la CLI de Google Cloud para conectarse a la VM mediante SSH, ejecute el siguiente comando:
gcloud compute instances ssh VM_NAME
Reemplace
VM_NAME
con el nombre de la VM a la que se está conectando.En su instancia, ejecute
ntpq -p
para verificar el estado actual de su configuración NTP:$ ntpq -p
El resultado es similar al siguiente:
remote refid st t when poll reach delay offset jitter ============================================================================== *metadata.google 255.28.23.83 2 u 27 64 1 0.634 -2.537 2.285 *217.162.232.173 130.149.17.8 2 u 191 1024 176 79.245 3.589 27.454
Si ve un único registro que apunta a
metadata.google
ometadata.google.internal
, no necesita realizar ningún cambio. Si ve varias fuentes, mezcladas entremetadata.google
y una fuente pública comopool.ntp.org
, debe actualizar sus fuentes para eliminar cualquier servidor NTP externo.En el resultado del ejemplo, hay dos registros, uno que apunta a
metadata.google
y otro que apunta a una dirección externa. Debido a que existen múltiples fuentes, deberá actualizar sus servidores NTP para eliminar la dirección*217.162.232.173
, como se describe en el siguiente paso.Configure sus servidores NTP para eliminar fuentes externas.
Para configurar sus servidores NTP, edite el archivo
/etc/ntp.conf
usando su editor de texto favorito. Busque la secciónservers
de la configuración y elimine todas las fuentes NTP que no sean de Google, por ejemplo:vim /etc/ntp.conf
# You do need to talk to an NTP server or two (or three). #server ntp.your-provider.example ... server metadata.google.internal iburst
Después de editar su archivo
/etc/ntp.conf
, reinicie el servicio NTP. El comando para reiniciar puede variar según la distribución de Linux:sudo service ntp reload
Verifique su configuración ejecutando el comando
ntpq -p
nuevamente:ntpq -p
remote refid st t when poll reach delay offset jitter ============================================================================== *metadata.google 255.28.23.83 2 u 27 64 1 0.634 -2.537 2.285
ventanas
Vaya a la página de instancias de VM en la consola de Google Cloud.
Haga clic en el botón RDP junto a la instancia de Windows a la que desea conectarse.
Después de iniciar sesión, haga clic derecho en el icono de PowerShell y seleccione Ejecutar como administrador .
Cuando se cargue el símbolo del sistema, ejecute el siguiente comando para ver la configuración NTP actual:
w32tm /query /configuration
[Configuration] ... Type: NTP (Local) NtpServer: metadata.google.internal, ...
Si ve un único registro que apunta a
metadata.google
ometadata.google.internal
, no necesita realizar ningún cambio. Si ve varias fuentes, mezcladas entremetadata.google
y una fuente pública, debe eliminar el servidor externo. Siga la guía de Windows para configurar su servidor NTP.Para garantizar la compatibilidad de software más amplia en máquinas virtuales Windows, Google recomienda utilizar el controlador gVNIC para garantizar una precisión NTP inferior a milisegundos con
metadata.google
.Si debe usar VirtIO con su máquina virtual Windows, para obtener una precisión inferior a milisegundos con servidores NTP, Google recomienda no usar el servicio de hora de Windows (detenga y cancele el registro
w32tm
).Detenga el servicio de hora de Windows:
net stop w32time
Elimine el servicio de hora de Windows del registro:
w32tm /unregister
Después de detener y eliminar el servicio de hora de Windows del registro, instale el cliente NTP de Meinberg .
Siga las instrucciones de configuración proporcionadas en la documentación de Meinberg.
Configure el servidor NTP para el cliente NTP de Meinberg como
metadata.google.internal
.Una vez que termine de configurar NTP, espere entre 5 y 15 minutos para que el reloj del sistema en la VM se estabilice con el servidor NTP.
Para obtener información sobre por qué no se recomienda el uso de w32tm, consulte la documentación de Problemas conocidos .
Utilizar el jump smearing con sistemas externos a Google Cloud
La función de eliminación de saltos de los servidores NTP de Google es una forma conveniente de gestionar el riesgo que implica la reproducción de un segundo en sistemas sensibles al tiempo. Otros servicios NTP pueden proporcionar una solución alternativa aceptable para la mayoría de los sistemas de software. Sin embargo, es importante que no mezcle los servicios NTP de Google con los servicios públicos de pasos NTP.
Para sincronizar dispositivos externos Google Cloud Para ahorrar tiempo, puede utilizar Google Public NTP para esos dispositivos. El NTP público de Google utiliza la misma difamación de segundos intercalares que se proporciona a las máquinas virtuales de Compute Engine.
¿Qué sigue?
- Obtenga más información sobre el cumplimiento del estándar de seguridad de datos PCI .
- Revise las preguntas frecuentes sobre NTP público de Google .