Muchos sistemas de software que dependen de una secuenciación cuidadosa de los eventos se basan en un reloj del sistema estable y coherente. Estos sistemas suelen usar registros del sistema con marcas de tiempo para asegurar la sincronización de la hora y depurar los problemas a medida que se producen. Para mantener sincronizados los relojes del sistema, las instancias de Compute Engine están preconfiguradas para usar el protocolo de hora de red (NTP), una solución combinada de hardware y software de sincronización de hora.
El protocolo NTP también es útil en el caso poco frecuente de un segundo intercalar, un ajuste de un segundo que se hace a la hora UTC para tener en cuenta los cambios en la rotación de la Tierra. Los segundos intercalares no se producen a intervalos rutinarios, ya que la velocidad de rotación de la Tierra varía de forma irregular en respuesta a eventos climáticos y geológicos. Los segundos bisiestos anteriores han afectado notablemente a varios servicios y aplicaciones de la Web. Los servidores NTP ayudan a que todos los servidores indiquen la misma hora durante el evento de un segundo bisiesto.
En este documento se describe cómo configurar servidores NTP en tus instancias de computación, incluido el tratamiento adecuado de los segundos bisiestos.
Servidores NTP de Google y desfase de segundos intercalares
Los segundos bisiestos de un sistema operativo Unix se suelen implementar repitiendo el último segundo del día. Esto puede causar problemas con el software que espera que las marcas de tiempo solo aumenten. Para evitar este problema, los servidores de tiempo Google Cloud "difuminan"; el segundo adicional a lo largo de 24 horas (12 antes y 12 después del evento del segundo bisiesto) para que los ordenadores no vean el segundo adicional de golpe como una marca de tiempo repetida. De este modo, se reduce el riesgo en los sistemas que dependen de una marca de tiempo coherente. Te recomendamos que configures todas tus instancias de computación para que usen los servicios NTP internos de Google.
Configurar NTP para las instancias
Google Cloud no puede predecir cómo gestionan los segundos bisiestos los servicios NTP externos, como
pool.ntp.org. Te recomendamos que no uses fuentes NTP externas con tus instancias de proceso. Si usas tanto el servicio NTP de Google como un servicio externo, puedes provocar cambios impredecibles en la hora del sistema. Es preferible usar una sola fuente NTP externa que una combinación, pero los servicios NTP externos, como pool.ntp.org, suelen usar el incremento para gestionar los segundos bisiestos. Como resultado, es posible que tus instancias tengan marcas de tiempo repetidas.
La opción más segura es configurar las instancias de proceso para que usen un único servidor NTP: el servidor NTP interno proporcionado por Google. Para obtener más información sobre el servidor NTP interno proporcionado por Google, consulta las preguntas frecuentes sobre el NTP público de Google.
Para asegurarte de que tus instancias de computación estén configuradas correctamente, sigue estas instrucciones.
Linux (chrony)
De forma predeterminada, la mayoría de las nuevas versiones de Linux usan chrony para gestionar sus ajustes de NTP y la sincronización de la hora. Para asegurarte de que chrony solo usa el servicio NTP interno, comprueba la configuración de chrony y elimina los servidores NTP externos.
Usa
sshpara conectarte a tu instancia de proceso.Consola
Para usar la consola y conectarte a la instancia de proceso mediante SSH, sigue estos pasos:
Ve a la página Instancias de VM de la Google Cloud consola.
Haz clic en el botón SSH de la instancia que quieras configurar.
gcloud
Para usar la CLI de Google Cloud y conectarte a la instancia de Compute mediante SSH, ejecuta el siguiente comando:
gcloud compute instances ssh INSTANCE_NAME
Sustituye
INSTANCE_NAMEpor el nombre de la instancia a la que te vas a conectar.En tu instancia, ejecuta
chronyc sourcespara comprobar el estado actual de tu configuración de 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 único registro que apunta a
metadata.googleometadata.google.internal, no tienes que hacer ningún cambio. Si ves varias fuentes, entre las que se incluyenmetadata.googley una fuente pública, comopool.ntp.org, actualiza tus fuentes para quitar cualquier servidor NTP externo.En el ejemplo de salida, hay dos registros: uno que apunta a
metadata.google.internaly otro que apunta a una dirección externa. Como hay varias fuentes, deberías actualizar tus servidores NTP para quitar la dirección38.229.53.9, tal como se describe en el paso siguiente.Configura tus servidores NTP para eliminar los 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 empiecen porserver external_source_ip_or_namey elimínalas.Después de editar el archivo
/etc/chrony/chrony.conf, reinicia el serviciochrony. El comando para reiniciar puede variar en función de la distribución de Linux, como se muestra en los siguientes ejemplos:sudo service chrony restart
sudo systemctl restart chrony
Para verificar la configuración, vuelve a ejecutar el comando
chronyc sources:$ chronyc sourcesLa salida debería ser similar a la 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 gestionar su configuración de NTP y la sincronización de la hora. Para asegurarte de que ntpd solo usa el servicio NTP interno, comprueba la configuración de ntpd y elimina los servidores NTP externos.
Usa
sshpara conectarte a tu instancia de proceso.Consola
Para usar la consola y conectarte a la instancia de proceso mediante SSH, sigue estos pasos:
Ve a la página Instancias de VM de la Google Cloud consola.
Haz clic en el botón SSH de la instancia que quieras configurar.
gcloud
Para usar la CLI de Google Cloud y conectarte a la instancia de Compute mediante SSH, ejecuta el siguiente comando:
gcloud compute instances ssh INSTANCE_NAME
Sustituye
INSTANCE_NAMEpor el nombre de la instancia a la que te vas a conectar.En tu instancia, ejecuta
ntpq -ppara comprobar el estado actual de tu configuración de NTP:$ ntpq -pLa salida tiene un aspecto 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 único registro que apunta a
metadata.googleometadata.google.internal, no tienes que hacer ningún cambio. Si ves varias fuentes, entre las que se incluyenmetadata.googley una fuente pública, comopool.ntp.org, debes actualizar tus fuentes para quitar los servidores NTP externos.En el ejemplo de salida, hay dos registros: uno que apunta a
metadata.googley otro que apunta a una dirección externa. Como hay varias fuentes, tendrás que actualizar tus servidores NTP para quitar la dirección*217.162.232.173, tal como se describe en el paso siguiente.Configura tus servidores NTP para eliminar las fuentes externas.
Para configurar los servidores NTP, edita el archivo
/etc/ntp.confcon tu editor de texto favorito. Busca la secciónserversde la configuración y elimina 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 para reiniciar puede variar en función de la distribución de Linux:sudo service ntp reloadVerifica tu configuración ejecutando de nuevo 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 de la Google Cloud consola.
Haga clic en el botón RDP situado junto a la instancia de Windows a la que quiera conectarse.
Una vez que hayas iniciado sesión, haz clic con el botón derecho en el icono de PowerShell y selecciona Ejecutar como administrador.
Cuando se cargue el símbolo del sistema, ejecuta el siguiente comando para ver la configuración NTP actual:
w32tm /query /configuration[Configuration] ... Type: NTP (Local) NtpServer: metadata.google.internal, ...
Si ves un único registro que apunta a
metadata.googleometadata.google.internal, no tienes que hacer ningún cambio. Si ves varias fuentes, entre las que se incluyenmetadata.googley una fuente pública, debes eliminar el servidor externo. Sigue la guía de Windows para configurar tu servidor NTP.Para garantizar la compatibilidad de software más amplia en las VMs de Windows, Google recomienda usar el controlador gVNIC para asegurar una precisión NTP inferior a un milisegundo con
metadata.google.Si debes usar VirtIO con tu VM de Windows para obtener una precisión inferior a un milisegundo con los servidores NTP, Google te recomienda que no uses el servicio de hora de Windows (detén y anula el registro de
w32tm).Detén el servicio de hora de Windows:
net stop w32timeElimina el servicio de hora de Windows del registro:
w32tm /unregisterUna vez que el servicio de hora de Windows se haya detenido y eliminado del registro, instala el cliente NTP de Meinberg.
Sigue las instrucciones de configuración que se indican en la documentación de Meinberg.
Configura el servidor NTP para el cliente NTP de Meinberg como
metadata.google.internal.Cuando hayas terminado de configurar NTP, espera entre 5 y 15 minutos para que el reloj del sistema de 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.
Usar la difusión de saltos con sistemas externos a Google Cloud
La función de desfase de salto de los servidores NTP de Google es una forma cómoda de gestionar el riesgo que conlleva repetir 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 mezcles los servicios NTP de Google con los servicios NTP públicos.
Para sincronizar dispositivos fuera del tiempo desfasado, puedes usar NTP público de Google en esos dispositivos. Google Cloud El NTP público de Google usa el mismo desfase de segundos bisiestos que se proporciona a las VMs de Compute Engine.
Siguientes pasos
- Más información sobre el cumplimiento del estándar de seguridad de datos PCI
- Consulta las preguntas frecuentes sobre el NTP público de Google.