So richten Sie die Zeitsynchronisation unter Debian 10 ein

Einführung

Eine genaue Zeitmessung ist zu einer entscheidenden Komponente moderner Softwarebereitstellungen geworden. Unabhängig davon, ob sichergestellt wird, dass die Protokolle in der richtigen Reihenfolge aufgezeichnet werden oder die Datenbankaktualisierungen korrekt angewendet werden, kann eine nicht synchronisierte Zeit zu Fehlern, Datenbeschädigungen und anderen schwierigen Problemen beim Debuggen führen.

Debian 10 verfügt über eine eingebaute und standardmäßig aktivierte Zeitsynchronisation unter Verwendung des Standard-Zeitservers ntpd, der im Paket + ntp + enthalten ist. In diesem Artikel werden einige grundlegende zeitbezogene Befehle behandelt, überprüft, ob ntpd aktiv und mit Peers verbunden ist, und wie der alternative Netzwerkzeitdienst systemd-timesyncd aktiviert wird.

Voraussetzungen

Bevor Sie mit diesem Tutorial beginnen, benötigen Sie einen Debian 10-Server mit einem Benutzer ohne Rootberechtigung (+ sudo +), wie unter https://www.digitalocean.com/community/tutorials/initial-server-setup-with beschrieben -debian-10 [dieses Debian 10-Server-Setup-Tutorial].

Schritt 1 - Durch grundlegende Zeitbefehle navigieren

Der grundlegendste Befehl zum Ermitteln der Uhrzeit auf Ihrem Server lautet "+ Datum +". Jeder Benutzer kann diesen Befehl eingeben, um Datum und Uhrzeit auszudrucken:

date
OutputWed 31 Jul 2019 06:03:19 PM

Am häufigsten verwendet Ihr Server standardmäßig die UTC-Zeitzone, wie in der obigen Ausgabe hervorgehoben. UTC ist die koordinierte Weltzeit, die Zeit bei null Grad Länge. Durch die konsequente Verwendung der Weltzeit können Sie Verwirrung stiften, wenn sich Ihre Infrastruktur über mehrere Zeitzonen erstreckt.

Wenn Sie andere Anforderungen haben und die Zeitzone ändern müssen, können Sie den Befehl + timedatectl + verwenden.

Listen Sie zunächst die verfügbaren Zeitzonen auf:

timedatectl list-timezones

Eine Liste der Zeitzonen wird auf Ihrem Bildschirm gedruckt. Sie können + LEERTASTE drücken, um nach unten zu blättern, und` + b + `, um nach oben zu blättern. Wenn Sie die richtige Zeitzone gefunden haben, notieren Sie sich diese und geben Sie "+ q +" ein, um die Liste zu verlassen.

Stellen Sie nun die Zeitzone mit + timedatectl set-timezone + ein und achten Sie darauf, den hervorgehobenen Teil unten durch die Zeitzone zu ersetzen, die Sie in der Liste gefunden haben. Sie müssen "+ sudo " mit " timedatectl +" verwenden, um diese Änderung vorzunehmen:

sudo timedatectl set-timezone

Sie können Ihre Änderungen überprüfen, indem Sie + date + erneut ausführen:

date
OutputWed 31 Jul 2019 02:08:43 PM

Die Abkürzung für die Zeitzone sollte den neu gewählten Wert widerspiegeln.

Nachdem wir nun wissen, wie man die Uhr überprüft und die Zeitzonen einstellt, stellen wir sicher, dass unsere Zeit korrekt synchronisiert wird.

Schritt 2 - Überprüfen des Status von ntpd

Standardmäßig führt Debian 10 den Standard-NTPD-Server aus, um die Systemzeit mit einem Pool externer Zeitserver zu synchronisieren. Wir können überprüfen, ob es läuft mit dem Befehl "+ systemctl +":

sudo systemctl status ntp
Output● ntp.service - Network Time Service
  Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: enabled)
  Active:  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
. . .

Der Status "+ aktiv (aktiv) " zeigt an, dass ntpd ordnungsgemäß gestartet wurde. Um mehr Informationen über den Status von ntpd zu erhalten, können wir den Befehl ` ntpq +` verwenden:

ntpq -p
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 + ist ein Abfragetool für ntpd. Das + -p + Flag fragt nach Informationen zu den NTP-Servern (oder p eern), mit denen ntpd verbunden ist. Ihre Ausgabe wird sich geringfügig unterscheiden, sollte jedoch die Standard-Debian-Pool-Server und einige andere auflisten. Bedenken Sie, dass es einige Minuten dauern kann, bis ntpd Verbindungen herstellt.

Schritt 3 - Umschalten auf systemd-timesyncd

Es ist möglich, die eingebaute * timesyncd * -Komponente von systemd zu verwenden, um ntpd zu ersetzen. timesyncd ist eine leichtere Alternative zu ntpd, die stärker in systemd integriert ist. Beachten Sie jedoch, dass die Ausführung als Zeitserver nicht unterstützt wird und die Techniken, mit denen die Systemzeit synchronisiert wird, etwas weniger ausgefeilt sind. Wenn Sie komplexe verteilte Echtzeitsysteme ausführen, sollten Sie sich an ntpd halten.

Um timesyncd zu verwenden, müssen wir zuerst ntpd deinstallieren:

sudo apt purge ntp

Starten Sie dann den timesyncd-Dienst:

sudo systemctl start systemd-timesyncd

Überprüfen Sie abschließend den Status des Dienstes, um sicherzustellen, dass er ausgeführt wird:

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:  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

Wir können + timedatectl + verwenden, um das aktuelle Zeitverständnis von systemd auszudrucken:

timedatectl
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)


         RTC in local TZ: no

Hiermit werden die Ortszeit, die Weltzeit (die möglicherweise mit der Ortszeit übereinstimmt, wenn Sie nicht von der UTC-Zeitzone umgeschaltet haben) und einige Informationen zum Netzwerkzeitstatus ausgedruckt. + Systemuhr synchronisiert: ja + bedeutet, dass die Zeit erfolgreich synchronisiert wurde, und + NTP-Dienst: aktiv + bedeutet, dass timesyncd aktiviert ist und ausgeführt wird.

Fazit

In diesem Artikel wird gezeigt, wie Sie die Systemzeit anzeigen, Zeitzonen ändern, mit ntpd arbeiten und zum Zeitsynchronisierungsdienst von systemd wechseln. Wenn Sie anspruchsvollere Anforderungen an die Zeitmessung haben als hier beschrieben, lesen Sie möglicherweise die offizielle NTP-Dokumentation Besuchen Sie the NTP Pool Project, eine globale Gruppe von Freiwilligen, die einen Großteil der weltweiten NTP-Infrastruktur bereitstellen.