So richten Sie die Zeitsynchronisation unter Debian ein 9

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 schwerwiegenden Problemen beim Debuggen führen.

Debian 9 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 9-Server mit einem Benutzer ohne Rootberechtigung, der sudo-fähig ist (siehe https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-). 9 [dieses Debian 9 Server Setup Tutorial].

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
OutputTue Sep  4 17:51:49  2018

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
OutputTue Sep  4 13:52:57  2018

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.

Überprüfen des Status von ntpd

Standardmäßig führt Debian 9 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 - LSB: Start NTP daemon
  Loaded: loaded (/etc/init.d/ntp; generated; vendor preset: enabled)
  Active:  since Tue 2018-09-04 15:07:03 EDT; 30min ago
    Docs: man:systemd-sysv-generator(8)
 Process: 876 ExecStart=/etc/init.d/ntp start (code=exited, status=0/SUCCESS)
   Tasks: 2 (limit: 4915)
  CGroup: /system.slice/ntp.service
          └─904 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 105:109
. . .

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
-eterna.binary.n 204.9.54.119     2 u  240  256  377   35.392    0.142   0.211
-static-96-244-9 192.168.10.254   2 u   60  256  377   10.242    1.297   2.412
+minime.fdf.net  83.157.230.212   3 u   99  256  377   24.042    0.128   0.250
*t1.time.bf1.yah 98.139.133.62    2 u   31  256  377   11.112    0.621   0.186
+x.ns.gin.ntt.ne 249.224.99.213   2 u  108  256  377    1.290   -0.073   0.132
-ord1.m-d.net    142.66.101.13    2 u  473  512  377   19.930   -1.764   0.293

+ 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.

Wechseln zu 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 synchron gehalten 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: /lib/systemd/system/systemd-timesyncd.service.d
          └─disable-with-time-daemon.conf
  Active:  since Tue 2018-09-04 16:14:23 EDT; 1s ago
    Docs: man:systemd-timesyncd.service(8)
Main PID: 3399 (systemd-timesyn)
  Status: "Synchronized to time server 198.60.22.240:123 (0.debian.pool.ntp.org)."
   Tasks: 2 (limit: 4915)
  CGroup: /system.slice/systemd-timesyncd.service
          └─3399 /lib/systemd/systemd-timesyncd

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

timedatectl
Output      Local time: Tue 2018-09-04 16:15:34 EDT
 Universal time: Tue 2018-09-04 20:15:34 UTC
       RTC time: Tue 2018-09-04 20:15:33
      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. + Network time on: yes + bedeutet, dass timesyncd aktiviert ist und + NTP synchronisiert: yes + zeigt an, dass die Zeit erfolgreich synchronisiert wurde.

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.