Muchos sistemas de software que dependen de una secuencia de eventos cuidadosa usan un reloj de sistema estable y coherente. Estos sistemas suelen usar registros del sistema con marcas de tiempo para garantizar la sincronización del tiempo y depurar los problemas a medida que ocurren. Para ayudar a mantener sincronizados los relojes del sistema, las instancias de Compute Engine están preconfiguradas para usar el protocolo de tiempo de red (NTP), una solución integrada de hardware y software de sincronización de tiempo.
El NTP también es útil en el caso poco frecuente de un segundo bisiesto, un ajuste de un segundo que se realiza en el horario UTC para tener en cuenta los cambios en la rotación de la Tierra. Los segundos bisiestos no ocurren a intervalos rutinarios, ya que la velocidad de rotación de la Tierra varía de manera irregular debido a eventos climáticos y geológicos. Los segundos bisiestos anteriores afectaron de forma notoria una variedad de servicios y aplicaciones en la Web. Los servidores NTP ayudan a garantizar que todos los servidores informen la misma hora durante un segundo bisiesto.
En este documento, se describe cómo configurar los servidores NTP en tus instancias de procesamiento, incluido el manejo adecuado de los segundos bisiestos.
Servidores NTP de Google y extensión de bisiestos
Los segundos intercalares para un sistema operativo Unix se implementan, comúnmente, con la repetición del último segundo del día. Esto puede causar problemas con el software que solo espera que las marcas de tiempo aumenten. Para solucionar este problema, los servidores de tiempo en Google Cloud “extienden” el segundo adicional durante 24 horas (12 antes y 12 después del evento), para que las computadoras no vean el segundo adicional como una marca de tiempo repetida. Esto reduce el riesgo en los sistemas que dependen de una marca de tiempo coherente. Te recomendamos que configures todas tus instancias de procesamiento para que usen los servicios NTP internos de Google.
Configura el protocolo NTP en las instancias
Google Cloud no puede predecir cómo los servicios NTP externos, como pool.ntp.org, manejan los segundos bisiestos. Te recomendamos que no uses fuentes NTP externas con tus instancias de procesamiento. Si usas el servicio NTP de Google y un servicio externo, puedes provocar cambios impredecibles en la hora del sistema. Es preferible usar una sola fuente externa de NTP que una mezcla, pero los servicios NTP externos, como pool.ntp.org, suelen usar pasos para controlar los segundos intercalares. Como resultado, es posible que tus instancias vean marcas de tiempo repetidas.
El método más seguro es configurar tus instancias de procesamiento para que usen un solo servidor NTP: el servidor NTP interno que proporciona Google. Para obtener más información sobre el servidor NTP interno que proporciona Google, consulta las Preguntas frecuentes sobre NTP públicos de Google.
Para asegurarte de que tus instancias de procesamiento estén configuradas correctamente, sigue estas instrucciones.
Linux (chrony)
De forma predeterminada, la mayoría de las versiones nuevas de Linux usan chrony para administrar la configuración de NTP y la sincronización de tiempo. Para asegurarte de que chrony use solo el servicio NTP interno, verifica la configuración de chrony y quita los servidores NTP externos.
Usa
sshpara conectarte a tu instancia de procesamiento.Console
Para usar la consola y conectarte a la instancia de procesamiento con SSH, sigue estos pasos:
Ve a la página Instancias de VM en la Google Cloud consola.
Haz clic en el botón SSH de la instancia que deseas configurar.
gcloud
Si deseas usar Google Cloud CLI para conectarte a la instancia de procesamiento con SSH, ejecuta el siguiente comando:
gcloud compute instances ssh INSTANCE_NAME
Reemplaza
INSTANCE_NAMEpor el nombre de la instancia a la que te conectarás.En tu instancia, ejecuta
chronyc sourcespara verificar el estado actual de la configuración NTP:$ chronyc sourcesEl 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 ves un solo registro que apunta a
metadata.googleometadata.google.internal, no es necesario que realices ningún cambio. Si ves varias fuentes mezcladas entremetadata.googley una fuente pública comopool.ntp.org, actualiza las fuentes para quitar cualquier servidor NTP externo.En el resultado de ejemplo, hay dos registros, uno que apunta a
metadata.google.internaly otro que apunta a una dirección externa. Debido a que hay varias fuentes, debes actualizar los servidores NTP para quitar la dirección38.229.53.9, como se describe en el siguiente paso.Configura los servidores NTP para quitar servidores NTP externos.
Para quitar el servidor NTP adicional de la lista, edita el archivo
/etc/chrony/chrony.confcon tu editor de texto favorito. Busca todas las líneas que comienzan conserver external_source_ip_or_namey quítalas.Después de editar el archivo
/etc/chrony/chrony.conf, reinicia el serviciochrony. El comando de reinicio puede variar según la distribución de Linux, como se muestra en los siguientes ejemplos:sudo service chrony restart
sudo systemctl restart chrony
Para verificar tu configuración, vuelve a ejecutar el comando
chronyc sources:$ chronyc sourcesEl 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 usan ntpd para administrar su configuración de NTP y sincronización de tiempo. Para asegurarte de que ntpd use solo el servicio NTP interno, verifica la configuración de ntpd y quita los servidores NTP externos.
Usa
sshpara conectarte a tu instancia de procesamiento.Console
Para usar la consola y conectarte a la instancia de procesamiento con SSH, sigue estos pasos:
Ve a la página Instancias de VM en la Google Cloud consola.
Haz clic en el botón SSH de la instancia que deseas configurar.
gcloud
Si deseas usar Google Cloud CLI para conectarte a la instancia de procesamiento con SSH, ejecuta el siguiente comando:
gcloud compute instances ssh INSTANCE_NAME
Reemplaza
INSTANCE_NAMEpor el nombre de la instancia a la que te conectarás.En tu instancia, ejecuta
ntpq -ppara verificar el estado actual de la configuración NTP:$ ntpq -pEl 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 ves un solo registro que apunta a
metadata.googleometadata.google.internal, no es necesario que realices ningún cambio. Si ves varias fuentes mezcladas entremetadata.googley una fuente pública comopool.ntp.org, debes actualizar las fuentes para quitar cualquier servidor NTP externo.En el resultado de ejemplo, hay dos registros, uno que apunta a
metadata.googley otro que apunta a una dirección externa. Debido a que hay varias fuentes, deberás actualizar los servidores NTP para quitar la dirección*217.162.232.173, como se describe en el siguiente paso.Configura los servidores NTP para quitar fuentes externas.
Para configurar los servidores NTP, edita el archivo
/etc/ntp.confen tu editor de texto favorito. Busca la secciónserversde la configuración y quita 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 iburstDespués de editar el archivo
/etc/ntp.conf, reinicia el servicio NTP. El comando de reinicio puede variar según la distribución de Linux:sudo service ntp reloadPara verificar tu configuración, vuelve a ejecutar el comando
ntpq -p:ntpq -premote 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
Windows
Ve a la página Instancias de VM en la Google Cloud consola.
Haz clic en el botón RDP junto a la instancia de Windows a la que deseas conectarte.
Después de acceder, haz clic derecho en el ícono de PowerShell y selecciona Ejecutar como administrador.
Cuando se cargue el símbolo del sistema, ejecuta el comando siguiente para ver la configuración actual de NTP:
w32tm /query /configuration[Configuration] ... Type: NTP (Local) NtpServer: metadata.google.internal, ...
Si ves un solo registro que apunta a
metadata.googleometadata.google.internal, no es necesario que realices ningún cambio. Si ves varias fuentes mezcladas entremetadata.googley una fuente pública, debes quitar el servidor externo. Sigue la guía de Windows para configurar el servidor NTP.Para garantizar la compatibilidad de software más generalizada en las VMs de Windows, Google recomienda que uses el controlador de gVNIC a fin de garantizar la precisión de NTP inferior a un milisegundo con
metadata.google.Si debes usar VirtIO con tu VM de Windows para obtener una precisión inferior a milisegundos con los servidores NTP, Google recomienda que no uses Windows Time Service (detén y cancela el registro de
w32tm).Detén Windows Time Service:
net stop w32timeQuita Windows Time Service del registro:
w32tm /unregisterDespués de detener Windows Time Service y quitarlo del registro, instala el cliente NTP de Meinberg.
Sigue las instrucciones de configuración como se proporcionan en la documentación de Meinberg.
Configura el servidor NTP para el cliente NTP de Meinberg como
metadata.google.internal.Después de configurar NTP, espera entre cinco y quince minutos para que el reloj del sistema en la VM se estabilice con el servidor NTP.
Para obtener información sobre por qué no recomendamos usar
w32tm, consulta la documentación de problemas conocidos.
Usa la extensión del tiempo con sistemas externos a Google Cloud
La función repartición de bisiesto de los servidores NTP de Google es un método conveniente para administrar el riesgo en la reproducción de un segundo en sistemas sensibles al tiempo. Otros servicios NTP pueden proporcionar una solución aceptable para la mayoría de los sistemas de software. Sin embargo, es importante que no mezcles los servicios NTP de extensión del tiempo de Google con los servicios NTP públicos de pasos.
Para sincronizar dispositivos fuera de Google Cloud con el tiempo extendido, puedes usar Google Public NTP para esos dispositivos. El NTP público de Google usa la misma extensión de segundos intercalares que se proporciona a las VMs de Compute Engine.
¿Qué sigue?
- Obtén más información sobre el cumplimiento de los estándares de seguridad de los datos de PCI.
- Revisa las Preguntas frecuentes sobre NTP públicos de Google.