ntp

Introducción

El control del tiempo preciso se ha convertido en un componente crítico de las implementaciones modernas de software. Ya sea que se esté asegurando de que los registros se registren en el orden correcto o que las actualizaciones de la base de datos se apliquen correctamente, el uso en los clústeres, etc. un tiempo fuera de sincronización puede causar errores, corrupción de datos y otros problemas de difícil depuración.

Debian 10 tiene sincronización de tiempo incorporada y activada por defecto usando el servidor de tiempo ntpd estándar, provisto por el paquete ntp. En este artículo veremos algunos comandos básicos relacionados con el tiempo, verificaremos que el servicio ntpd esté activo y conectado a sus pares, y aprenderemos cómo activar el servicio de tiempo de red alternativo systemd-timesyncd.

Prerrequisitos

Antes de comenzar este tutorial, necesitará un servidor Debian 10 con un acceso no root, sudousuario habilitado.

Paso 1: navegar por los comandos de tiempo básicos

El comando más básico para averiguar la hora en su servidor es date. Cualquier usuario puede escribir este comando para imprimir la fecha y la hora:

Output

Wed 31 Jul 2019 06:03:19 PM UTC

La mayoría de las veces, su servidor tendrá el valor predeterminado UTC zona horaria, como se resalta en la salida anterior. UTC es Tiempo universal coordinado, el tiempo a cero grados de longitud. El uso constante de Universal Time reduce la confusión cuando su infraestructura abarca varias zonas horarias.

Si tiene diferentes requisitos y necesita cambiar la zona horaria, puede usar el timedatectl comando para hacerlo.

Primero, enumere las zonas horarias disponibles:

  • timedatectl list-timezones

Se imprimirá una lista de zonas horarias en su pantalla. Puedes presionar SPACE para avanzar y b para subir de página. Una vez que encuentre la zona horaria correcta, anótela y escriba q para salir de la lista

Ahora configure la zona horaria con timedatectl set-timezone, asegurándose de reemplazar la parte resaltada a continuación con la zona horaria que encontró en la lista. Necesitarás usar sudo con timedatectl para hacer este cambio:

  • sudo timedatectl set-timezone Europe/Madrid

Puede verificar sus cambios ejecutando date de nuevo:

Output

Wed 31 Jul 2019 02:08:43 PM EDT

La abreviatura de la zona horaria debe reflejar el nuevo valor elegido.

Ahora que sabemos cómo verificar el reloj y establecer zonas horarias, asegurémonos de que nuestra hora se sincronice correctamente.

Paso 2 – Verificando el estado de ntpd

De forma predeterminada, Debian 10 ejecuta el servidor ntpd estándar para mantener sincronizada la hora de su sistema con un grupo de servidores de hora externos. Podemos comprobar que se está ejecutando con el systemctl mando:

  • sudo systemctl status ntp

Output

● ntp.service - Network Time Service
   Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-07-31 13:57:08 EDT; 17min ago
     Docs: man:ntpd(8)
 Main PID: 429 (ntpd)
    Tasks: 2 (limit: 1168)
   Memory: 2.1M
   CGroup: /system.slice/ntp.service
           └─429 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 106:112
. . .

los active (running) El estado indica que ntpd se inició correctamente. Para obtener más información sobre el estado de ntpd podemos usar el ntpq mando:

Output

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
+208.67.72.50    152.2.133.55     2 u   12   64  377   39.381    1.696   0.674
+198.46.223.227  204.9.54.119     2 u    6   64  377   22.671    3.536   1.818
-zinc.frizzen.ne 108.61.56.35     3 u   43   64  377   12.012    1.268   2.553
-pyramid.latt.ne 204.123.2.72     2 u   11   64  377   69.922    2.858   0.604
+nu.binary.net   128.252.19.1     2 u   10   64  377   35.362    3.148   0.587
#107.155.79.108  129.7.1.66       2 u   65   64  377   42.380    1.638   1.014
+t1.time.bf1.yah 98.139.133.62    2 u    6   64  377   11.233    3.305   1.118
*sombrero.spider 129.6.15.30      2 u   47   64  377    1.304    2.941   0.889
+hydrogen.consta 209.51.161.238   2 u   45   64  377    1.830    2.280   1.026
-4.53.160.75     142.66.101.13    2 u   42   64  377   29.077    2.997   0.789
#horp-bsd01.horp 146.186.222.14   2 u   39   64  377   16.165    4.189   0.717
-ntpool1.603.new 204.9.54.119     2 u   46   64  377   27.914    3.717   0.939

ntpq es una herramienta de consulta para ntpd. los -p flag solicita información sobre los servidores NTP (o pagseers) ntpd está conectado a. Su salida será ligeramente diferente, pero debería enumerar los servidores de grupo de Debian predeterminados más algunos otros. Tenga en cuenta que ntpd puede tardar unos minutos en establecer conexiones.

Paso 3 – Cambiar a systemd-timesyncd

Es posible usar el sistema incorporado timesyncd componente para reemplazar ntpd. timesyncd es una alternativa más liviana a ntpd que está más integrada con systemd. Sin embargo, tenga en cuenta que no admite la ejecución como un servidor horario, y es un poco menos sofisticado en las técnicas que utiliza para mantener sincronizada la hora de su sistema. Si está ejecutando sistemas distribuidos complejos en tiempo real, es posible que desee seguir con ntpd.

Para usar timesyncd, primero debemos desinstalar ntpd:

 

Luego, inicie el servicio timesyncd:

 
  • sudo systemctl start systemd-timesyncd

Finalmente, verifique el estado del servicio para asegurarse de que se esté ejecutando:

  • sudo systemctl status systemd-timesyncd

Output

● systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
  Drop-In: /usr/lib/systemd/system/systemd-timesyncd.service.d
           └─disable-with-time-daemon.conf
   Active: active (running) since Wed 2019-07-31 14:21:37 EDT; 6s ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 1681 (systemd-timesyn)
   Status: "Synchronized to time server for the first time 96.245.170.99:123 (0.debian.pool.ntp.org)."
    Tasks: 2 (limit: 1168)
   Memory: 1.3M
   CGroup: /system.slice/systemd-timesyncd.service
           └─1681 /lib/systemd/systemd-timesyncd

Nosotros podemos usar timedatectl para imprimir la comprensión actual del sistema de la hora:

 

Output

               Local time: Wed 2019-07-31 14:22:15 EDT
           Universal time: Wed 2019-07-31 18:22:15 UTC
                 RTC time: n/a
                Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

 

Esto imprime la hora local, la hora universal (que puede ser la misma que la hora local, si no cambiaste de la zona horaria UTC) y alguna información sobre el estado de la hora de la red. System clock synchronized: yes significa que el tiempo se ha sincronizado correctamente y NTP service: active significa que timesyncd está habilitado y ejecutándose.

 

Conclusión

 

En este artículo, hemos mostrado cómo ver la hora del sistema, cambiar las zonas horarias, trabajar con ntpd y cambiar al servicio timesyncd del sistema. Si tiene necesidades de cronometraje más sofisticadas que las que hemos cubierto aquí, puede consultar la documentación oficial de NTPy también eche un vistazo a el proyecto de agrupación NTP, un grupo global de voluntarios que proporcionan gran parte de la infraestructura NTP del mundo.

 

Por itencore