Einstellen der Zeit einer Linux-Instance - Amazon Elastic Compute Cloud

Einstellen der Zeit einer Linux-Instance

Eine gleichbleibende und genaue Zeitreferenz ist für viele Serveraufgaben und -prozesse unerlässlich. Die meisten Systemprotokolle enthalten einen Zeitstempel, mit dem ermittelt wird, wann Probleme aufgetreten sind und in welcher Reihenfolge die Ereignisse stattgefunden haben. Wenn Sie eine AWS CLI oder AWS SDK verwenden, um Anfragen an Ihre Instance zu stellen, signieren diese Tools die Anfragen in Ihrem Auftrag. Stellen Sie sicher, dass das Datum und die Uhrzeit der Instance korrekt sind. Andernfalls entspricht das Datum in der Signatur möglicherweise nicht dem Datum der Anfrage und AWS lehnt daraufhin die Anfrage ab.

Amazon bietet den Amazon Time Sync Service an, auf den Sie über alle EC2-Instances zugreifen können. Er wird auch von anderen AWS-Services-Services verwendet. Dieser Service nutzt eine Flotte an mit Satelliten verbundenen und atomaren Referenzuhren in jeder AWS-Region für die Bereitstellung von aktuellen Zeitangaben des globalen Standards der koordinierten Weltzeit (UTC) über das Network Time Protocol (NTP). Der Amazon Time Sync Service mildert automatisch alle Schaltsekunden, die der UTC hinzugefügt werden.

Der Amazon Time Sync Service ist durch NTP unter der 169.254.169.123-IPv4-Adresse oder der fd00:ec2::123-IPv6-Adresse einer beliebigen Instance verfügbar, die in einer VPC ausgeführt wird. Die IPv6-Adresse ist nur auf Instances, die auf dem Nitro-System basieren zugänglich. Ihre Instance erfordert keinen Internetzugang. Sie müssen daher keine Sicherheitsgruppenregeln oder Netzwerk-ACL-Regeln konfigurieren, um Zugang zu gewähren. Die neuesten Versionen von Amazon Linux 2 und Amazon Linux-AMIs werden standardmäßig mit dem Amazon Time Sync Service synchronisiert.

Gehen Sie folgendermaßen vor, um den Amazon Time Sync Service mithilfe des chrony-Clients auf Ihrer Instance zu konfigurieren. Alternativ können Sie externe NTP-Quellen verwenden. Weitere Informationen zu NTP und öffentlichen Zeitquellen finden Sie unter http://www.ntp.org/. Eine Instance benötigt Zugang zum Internet, damit externe NTP-Zeitquellen funktionieren.

Informationen für Windows-Instances finden Sie unter Die Zeit für eine Windows-Instance erstellen.

Für ein Backup für den Amazon-Time-Sync-link-local-Service und um Ressourcen außerhalb von Amazon EC2 mit dem Amazon Time Sync Service zu verbinden, können Sie den öffentlichen NTP-Pool von Amazon Time Sync verwenden, der sich unter time.aws.com befindet. Amazon Time Sync Public NTP, wie der Amazon Time Sync Service, mildert automatisch alle Schaltsekunden, die der UTC hinzugefügt werden. Amazon Time Sync Service Public NTP wird weltweit von unserer Flotte an mit Satelliten verbundenen und atomaren Referenzuhren in jeder AWS-Region unterstützt. Anweisungen für eine Konfiguration finden Sie unter Konfigurieren der Uhrzeit für Clients mit Amazon Time Sync Public NTP .

Konfigurieren der Uhrzeit für Clients mit Amazon Time Sync Public NTP

Sie können Ihren Client-Computer für die Verwendung von Amazon Time Sync konfigurieren.

So konfigurieren Sie Amazon Time Sync Public NTP für Apple macOS
  1. Öffnen Sie auf Ihrem Client-Computer die System Preferences (Systemeinstellungen).

  2. Wählen Sie Date & Time (Datum und Uhrzeit) und dann die Registerkarte Date & Time (Datum und Uhrzeit).

  3. Um Änderungen vorzunehmen, wählen Sie das Schlosssymbol und geben Sie Ihr Passwort ein, wenn Sie dazu aufgefordert werden.

  4. Geben Sie für Set date and time automatically (Datum und Uhrzeit automatisch festlegen) den Wert time.aws.com ein.

So konfigurieren Sie Amazon Time Sync Public NTP für Linux:chrony oder ntpd
  1. Bearbeiten Sie /etc/chrony/chrony.conf (wenn Sie chrony verwenden) oder /etc/ntp.conf (wenn Sie ntpd verwenden) mit Ihrem bevorzugten Texteditor.

    Bearbeiten Sie die Zeile server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4 nicht, um sicherzustellen, dass Ihre EC2-Instance mit dem lokalen Amazon Time Sync Service verbunden bleibt.

    Entfernen oder kommentieren Sie andere Zeilen aus die mit server beginnen, um zu verhindern, dass Ihr Computer versucht, smeared und non-smeared Server zu vermischen.

    Fügen Sie die Zeile pool time.aws.com iburst hinzu.

  2. Wählen Sie NAME.

  3. Neustarten des daemon mithilfe von sudo service chrony force-reload (für chrony) oder sudo service ntp reload (für ntpd)

    systemd-timesyncd

    Stellen Sie in derselben Konfigurationsdatei den Inhalt des [Time]-Blocks auf [Time] NTP=FallbackNTP=time.aws.com.

    Dadurch wird verhindert, dass versehentlich zwischen smeared und un-smeared Zeitservern gewechselt wird. Wenn Sie den Amazon Time Sync Service Public NTP als Fallback-Server konfigurieren, wird er als einziger NTP-Server ausgewählt.

    1. Starten Sie systemd-timesyncd neu, indem Sie den systemctl restart systemd-timesyncd.service-Befehl als Benutzer mit den entsprechenden Berechtigungen verwenden

    Stellen Sie sicher, dass Ihr System den öffentlichen NTP-Pool von Amazon Time Sync mit timedatectl show-timesync | grep ServerName verwendet. Bei erfolgreicher Konfiguration wird die Ausgabe ServerName=time.aws.com angezeigt.

Konfigurieren der Zeit für EC2-Instances mit IPv4-Adressen

In diesem Abschnitt wird beschrieben, wie die Zeit für EC2-Instances mit IPv4-Adressen abhängig vom Typ der Linux-Verteilung festgelegt wird.

Konfigurieren des Amazon-Time-Sync-Service in Amazon Linux AMI

Anmerkung

Auf Amazon Linux 2 ist ein chrony bereits installiert und für die Verwendung der IP-Adresse des Amazon Time Sync Service konfiguriert.

Im Amazon Linux AMI müssen Sie die chrony-Konfigurationsdatei so bearbeiten, dass ein Servereintrag für den Amazon Time Sync-Service hinzugefügt wird.

So konfigurieren Sie Ihre Instance für die Nutzung des Amazon Time Sync-Service
  1. Stellen Sie eine Verbindung mit Ihrer Instance her und deinstallieren Sie den NTP-Service.

    [ec2-user ~]$ sudo yum erase 'ntp*'
  2. Installieren Sie das Paket chrony.

    [ec2-user ~]$ sudo yum install chrony
  3. Öffnen Sie die Datei /etc/chrony.conf mit einem Texteditor Ihrer Wahl, z. B. vim oder nano. Überprüfen Sie, ob die Datei die folgende Zeile enthält:

    server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4

    Wenn die Zeile vorhanden ist, ist der Amazon Time Sync Service bereits konfiguriert. Sie können mit dem nächsten Schritt fortfahren. Fügen Sie andernfalls die Zeile nach beliebigen anderen server- oder pool-Anweisungen ein, die bereits in der Datei vorhanden sind. Speichern Sie Ihre Änderungen.

  4. Starten Sie den chrony-Daemon (chronyd) neu.

    [ec2-user ~]$ sudo service chronyd restart
    Starting chronyd: [ OK ]
    Anmerkung

    Auf RHEL und CentOS (bis zu Version 6) lautet der Servicename chrony anstatt chronyd.

  5. Konfigurieren Sie den chkconfig mit dem Befehl chronyd so, dass er bei jedem Systemstart startet.

    [ec2-user ~]$ sudo chkconfig chronyd on
  6. Überprüfen Sie, ob chrony zum Synchronisieren der Zeit die 169.254.169.123-IP-Adresse verwendet.

    [ec2-user ~]$ chronyc sources -v
    210 Number of sources = 7 .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current synced, '+' = combined , '-' = not combined, | / '?' = unreachable, 'x' = time may be in error, '~' = time too variable. || .- xxxx [ yyyy ] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* 169.254.169.123 3 6 17 43 -30us[ -226us] +/- 287us ^- ec2-12-34-231-12.eu-west> 2 6 17 43 -388us[ -388us] +/- 11ms ^- tshirt.heanet.ie 1 6 17 44 +178us[ +25us] +/- 1959us ^? tbag.heanet.ie 0 6 0 - +0ns[ +0ns] +/- 0ns ^? bray.walcz.net 0 6 0 - +0ns[ +0ns] +/- 0ns ^? 2a05:d018:c43:e312:ce77:> 0 6 0 - +0ns[ +0ns] +/- 0ns ^? 2a05:d018:dab:2701:b70:b> 0 6 0 - +0ns[ +0ns] +/- 0ns

    In der zurückgegebenen Ausgabe gibt ^* die bevorzugte Zeitquelle an.

  7. Überprüfen Sie die von chrony gemeldeten Zeitsynchronisierungsmetriken.

    [ec2-user ~]$ chronyc tracking
    Reference ID : A9FEA97B (169.254.169.123) Stratum : 4 Ref time (UTC) : Wed Nov 22 13:18:34 2017 System time : 0.000000626 seconds slow of NTP time Last offset : +0.002852759 seconds RMS offset : 0.002852759 seconds Frequency : 1.187 ppm fast Residual freq : +0.020 ppm Skew : 24.388 ppm Root delay : 0.000504752 seconds Root dispersion : 0.001112565 seconds Update interval : 64.4 seconds Leap status : Normal

Konfigurieren des Amazon-Time-Sync-Service auf Ubuntu

Sie müssen die chrony-Konfigurationsdatei so bearbeiten, dass ein Servereintrag für den Amazon Time Sync-Service hinzugefügt wird.

So konfigurieren Sie Ihre Instance für die Nutzung des Amazon Time Sync-Service
  1. Stellen Sie eine Verbindung mit Ihrer Instance her und installieren Sie mit apt das chrony-Paket.

    ubuntu:~$ sudo apt install chrony
    Anmerkung

    Sofern erforderlich, aktualisieren Sie Ihre Instance, indem Sie zuerst sudo apt update ausführen.

  2. Öffnen Sie die Datei /etc/chrony/chrony.conf mit einem Texteditor Ihrer Wahl, z. B. vim oder nano. Fügen Sie die folgende Zeile vor beliebigen anderen server- oder pool-Anweisungen ein, die bereits in der Datei vorhanden sind. Speichern Sie dann Ihre Änderungen:

    server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
  3. Den Service chrony neu starten.

    ubuntu:~$ sudo /etc/init.d/chrony restart
    Restarting chrony (via systemctl): chrony.service.
  4. Überprüfen Sie, ob chrony zum Synchronisieren der Zeit die 169.254.169.123-IP-Adresse verwendet.

    ubuntu:~$ chronyc sources -v
    210 Number of sources = 7 .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current synced, '+' = combined , '-' = not combined, | / '?' = unreachable, 'x' = time may be in error, '~' = time too variable. || .- xxxx [ yyyy ] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* 169.254.169.123 3 6 17 12 +15us[ +57us] +/- 320us ^- tbag.heanet.ie 1 6 17 13 -3488us[-3446us] +/- 1779us ^- ec2-12-34-231-12.eu-west- 2 6 17 13 +893us[ +935us] +/- 7710us ^? 2a05:d018:c43:e312:ce77:6 0 6 0 10y +0ns[ +0ns] +/- 0ns ^? 2a05:d018:d34:9000:d8c6:5 0 6 0 10y +0ns[ +0ns] +/- 0ns ^? tshirt.heanet.ie 0 6 0 10y +0ns[ +0ns] +/- 0ns ^? bray.walcz.net 0 6 0 10y +0ns[ +0ns] +/- 0ns

    In der Ausgabe, die zurückgegeben wird, steht in der Zeile, die mit ^* beginnt, die bevorzugte Zeitquelle.

  5. Überprüfen Sie die von chrony gemeldeten Zeitsynchronisierungsmetriken.

    ubuntu:~$ chronyc tracking
    Reference ID : 169.254.169.123 (169.254.169.123) Stratum : 4 Ref time (UTC) : Wed Nov 29 07:41:57 2017 System time : 0.000000011 seconds slow of NTP time Last offset : +0.000041659 seconds RMS offset : 0.000041659 seconds Frequency : 10.141 ppm slow Residual freq : +7.557 ppm Skew : 2.329 ppm Root delay : 0.000544 seconds Root dispersion : 0.000631 seconds Update interval : 2.0 seconds Leap status : Normal

Konfigurieren des Amazon-Time-Sync-Service auf SUSE Linux

Installieren Sie chrony von der Website https://software.opensuse.org/package/chrony.

Öffnen Sie die Datei /etc/chrony.conf mit einem Texteditor Ihrer Wahl, z. B. vim oder nano. Überprüfen Sie, ob die Datei die folgende Zeile enthält:

server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4

Wenn diese Zeile nicht vorhanden ist, fügen Sie sie hinzu. Kommentieren Sie alle anderen Server- oder Pool-Zeilen aus. Öffnen Sie yaST und aktivieren Sie den chrony-Service.

Konfigurieren der Zeit für EC2-Instances mit IPv6-Adressen

In diesem Abschnitt wird erläutert, wie der unter Konfigurieren der Zeit für EC2-Instances mit IPv4-Adressen beschriebene Prozess sich unterscheidet, wenn Sie Amazon Time Sync Service für EC2-Instances konfigurieren, die eine IPv6-Adresse verwenden. Es wird nicht der gesamte Konfigurationsprozess des Amazon Time Sync Service erklärt. Die IPv6-Adresse ist nur auf Instances, die auf dem Nitro-System basieren zugänglich.

Anmerkung

Es wird nicht empfohlen, sowohl die IPv4-Adresse als auch die IPv6-Adresseinträge zusammen in der Datei chrony.conf zu verwenden. Die IPv4- und IPv6-NTP-Pakete stammen von demselben lokalen Server für Ihre Instance. Sie erhalten wahrscheinlich gemischte Ergebnisse mit einigen Paketen, die vom IPv4-Endpunkt stammen, und einige vom IPv6-Endpunkt, wenn Sie beide gleichzeitig verwenden.

Je nach verwendeter Linux-Verteilung verwenden Sie, wenn Sie den Schritt zum Bearbeiten der Datei chrony.conf erreichen, den IPv6-Endpunkt des Amazon Time Sync Service (fd00:ec2::123) anstelle des IPv4-Endpunkts (169.254.169.123):

server fd00:ec2::123 prefer iburst minpoll 4 maxpoll 4

Speichern Sie die Datei und überprüfen Sie, ob chrony zum Synchronisieren der Zeit die fd00:ec2::123-IPv6-Adresse verwendet:

[ec2-user ~]$ chronyc sources -v

Wenn Sie in der Ausgabe die fd00:ec2::123-IPv6-Adresse sehen, ist die Konfiguration abgeschlossen.

Ändern der Zeitzone in Amazon Linux

Amazon Linux-Instances werden standardmäßig auf die Zeitzone UTC (Coordinated Universal Time) festgelegt. Sie können die Zeit auf einer Instance auf die lokale Zeit oder auf eine andere Zeitzone in Ihrem Netzwerk umstellen.

Wichtig

Diese Informationen gelten für Amazon Linux. Weitere Informationen zu anderen Verteilungen finden Sie in der jeweiligen Dokumentation.

So ändern Sie die Zeitzone in einer Amazon-Linux-2-Instance
  1. Zeigen Sie die aktuelle Zeitzoneneinstellung des Systems an.

    [ec2-user ~]$ timedatectl
  2. Listen Sie die verfügbaren Zeitzonen auf.

    [ec2-user ~]$ timedatectl list-timezones
  3. Legen Sie die ausgewählte Zeitzone fest.

    [ec2-user ~]$ sudo timedatectl set-timezone America/Vancouver
  4. (Optional) Bestätigen Sie durch erneutes Ausführen des Befehls timedatectl, dass die aktuelle Zeitzone auf die neue Zeitzone geändert wird.

    [ec2-user ~]$ timedatectl
So ändern Sie die Zeitzone in einer Amazon-Linux-Instance
  1. Ermitteln Sie die Zeitzone, die in Ihrer Instance verwendet wird. Das Verzeichnis /usr/share/zoneinfo enthält eine Hierarchie von Zeitzonendateien. Durchsuchen Sie die Verzeichnisstruktur an dieser Stelle, um eine Datei für Ihre Zeitzone zu finden.

    [ec2-user ~]$ ls /usr/share/zoneinfo Africa Chile GB Indian Mideast posixrules US America CST6CDT GB-Eire Iran MST PRC UTC Antarctica Cuba GMT iso3166.tab MST7MDT PST8PDT WET Arctic EET GMT0 Israel Navajo right W-SU ...

    Einige Einträge an dieser Stelle sind Verzeichnisse (z. B. America). Diese enthalten Zeitzonendateien für einzelne Städte. Suchen Sie nach der Stadt, in der Sie sich befinden (oder einer Stadt in Ihrer Zeitzone), um die Instance auf die entsprechende Zeitzone einzustellen.

  2. Aktualisieren Sie die Datei /etc/sysconfig/clock mit der neuen Zeitzone. In diesem Beispiel verwenden wir die Zeitzonendatendatei für Los Angeles, /usr/share/zoneinfo/America/Los_Angeles.

    1. Öffnen Sie die Datei /etc/sysconfig/clock mit einem Texteditor Ihrer Wahl (z. B. vim oder nano). Sie müssen sudo mit dem Editor verwenden, da die Datei /etc/sysconfig/clock Eigentum von root ist.

      [ec2-user ~]$ sudo nano /etc/sysconfig/clock
    2. Suchen Sie den Eintrag ZONE und geben Sie die Zeitzonendatei an (ohne den folgenden Teil des Pfads: /usr/share/zoneinfo). Ändern Sie den Eintrag ZONE beispielsweise wie folgt, um die Zeitzone „Los Angeles“ einzustellen:

      ZONE="America/Los_Angeles"
      Anmerkung

      Ändern Sie den Eintrag UTC=true NICHT. Dieser Eintrag gehört zur Hardware-Uhr und muss nicht geändert werden, um für eine Instance eine andere Zeitzone einzustellen.

    3. Speichern Sie die Datei und schließen Sie den Texteditor.

  3. Erstellen Sie eine symbolische Verknüpfung zwischen /etc/localtime und der Zeitzonendatei, damit die Instance die Zeitzonendatei beim Abrufen der Ortszeit findet.

    [ec2-user ~]$ sudo ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
  4. Starten Sie das System neu, damit alle Services und Anwendungen die neuen Zeitzoneninformationen erhalten.

    [ec2-user ~]$ sudo reboot
  5. (Optional) Bestätigen Sie mit dem Befehl date, dass die aktuelle Zeitzone auf die neue Zeitzone aktualisiert wird. Die aktuelle Zeitzone wird in der Ausgabe angezeigt. Im folgenden Beispiel ist die aktuelle Zeitzone PDT, die sich auf die Zeitzone Los Angeles bezieht.

    [ec2-user ~]$ date Sun Aug 16 05:45:16 PDT 2020

Vergleichen von Zeitstempeln

Wenn Sie den Amazon Time Sync Service verwenden, können Sie die Zeitstempel Ihrer Amazon-EC2-Instances mit ClockBound vergleichen, um den tatsächlichen Zeitpunkt eines Ereignisses zu ermitteln. ClockBound misst die Taktgenauigkeit Ihrer EC2-Instance und ermöglicht es Ihnen zu überprüfen, ob sich ein bestimmter Zeitstempel in Bezug auf die aktuelle Uhr Ihrer Instance in der Vergangenheit oder Zukunft befindet. Diese Informationen sind wertvoll, um die Reihenfolge und Konsistenz von Ereignissen und Transaktionen über EC2-Instances hinweg unabhängig vom geografischen Standort jeder Instance zu bestimmen.

ClockBound ist ein Daemon und eine Bibliothek auf Open-Source-Basis. Weitere Informationen über ClockBound, einschließlich Installationsanweisungen, finden Sie unter ClockBound auf GitHub.