Warum ist mein OpenSearch-Service-Knoten abgestürzt?

Letzte Aktualisierung: 21.12.2022

Einer der Knoten in meinem Amazon-OpenSearch-Service-Cluster ist ausgefallen, und ich möchte verhindern, dass dies passiert.

Kurzbeschreibung

Jeder OpenSearch-Service-Knoten wird auf einer separaten Amazon Elastic Compute Cloud (Amazon EC2)-Instance ausgeführt. Ein ausgefallener Knoten ist eine Instance, die nicht auf Heartbeat-Signale von den anderen Knoten reagiert. Heartbeat-Signale sind periodische Signale, die die Verfügbarkeit der Datenknoten im Cluster überwachen.

Zu den häufigsten Ursachen für ausgefallene Clusterknoten gehören:

  • Hoher Speicherdruck für Java Virtual Machine (JVM)
  • Hardwarefehler

Auflösung

Suchen nach ausgefallenen Knoten

1.    Melden Sie sich bei der OpenSearch-Service-Konsole an.

2.    Wählen Sie im Navigationsbereich unter Verwaltete Cluster die Option Domänen aus.

3.    Wählen Sie den Namen Ihrer OpenSearch-Service-Domäne.

4.    Wählen Sie die Registerkarte Cluster-Zustand und dann die Metrik Knoten. Wenn die Anzahl der Knoten geringer ist als die Anzahl, die Sie für Ihren Cluster konfiguriert haben, dann ist ein Knoten ausgefallen.

Hinweis: Die Knoten-Metrik kann bei Änderungen an Ihrer Clusterkonfiguration oder während routinemäßigen Wartungsarbeiten für den Service ungenau sein. Dieses Verhalten wird erwartet.

Hohen JVM-Speicherdruck identifizieren und beheben

Der JVM-Speicherdruck bezieht sich auf den Prozentsatz des Java-Heaps, der für alle Datenknoten in einem OpenSearch-Service-Cluster verwendet wird. Ein hoher JVM-Speicherdruck kann zu einer hohen CPU-Auslastung und anderen Cluster-Leistungsproblemen führen.

Der JVM-Speicherdruck wird durch folgende Bedingungen bestimmt:

  • Die Menge der Daten auf dem Cluster im Verhältnis zur Anzahl der Ressourcen.
  • Die Abfragenlast auf dem Cluster.

Wenn der JVM-Speicherdruck steigt, passiert Folgendes:

  • Bei 75 %: OpenSearch-Service initiiert den Speicherbereiniger Concurrent Mark Sweep (CMS). Der CMS-Speicherbereiniger läuft mit anderen Prozessen, um Pausen und Störungen auf ein Minimum zu beschränken.
    Hinweis: OpenSearch-Service veröffentlicht mehrere Metriken zur Garbage Collection auf Amazon CloudWatch. Diese Metriken können Ihnen helfen, die JVM-Speichernutzung zu überwachen. Weitere Informationen finden Sie unter Überwachen von OpenSearch-Cluster-Metriken mit Amazon CloudWatch.
  • Über 75 %: Wenn der CMS-Speicherbereiniger nicht genügend Speicher zurückgewinnt und die Auslastung über 75 % bleibt, versucht OpenSearch-Service-JVM, Speicher freizugeben. OpenSearch-Service-JVM versucht auch, eine JVM OutOfMemoryError (OOM)-Ausnahme zu verhindern, indem Prozesse verlangsamt oder gestoppt werden.
  • Wenn die JVM weiter wächst und der Speicherplatz nicht zurückgewonnen wird, stoppt OpenSearch-Service-JVM die Prozesse, die versuchen, Speicher zuzuweisen. Wenn ein kritischer Prozess gestoppt wird, können ein oder mehrere Cluster-Knoten ausfallen. Es ist eine bewährte Methode, die CPU-Auslastung unter 80 % zu halten.

Befolgen Sie diese bewährten Methoden, um einen hohen JVM-Speicherdruck zu vermeiden:

  • Vermeiden Sie Abfragen in weiten Bereichen, wie Platzhalter-Abfragen.
  • Vermeiden Sie es, eine große Anzahl von Anfragen gleichzeitig zu senden.
  • Stellen Sie sicher, dass Sie über die entsprechende Anzahl an Shards verfügen. Weitere Informationen zur Indexierungsstrategie finden Sie unter Auswahl der Anzahl von Shards.
  • Stellen Sie sicher, dass Ihre Shards gleichmäßig auf Knoten verteilt sind.
  • Vermeiden Sie die Aggregation von Textfeldern. Dies hilft, einen Anstieg der Felddaten zu verhindern. Je mehr Felddaten Sie haben, desto mehr Heap-Speicherplatz wird verbraucht. Verwenden Sie die API-Operation GET _cluster/stats, um Felddaten zu überprüfen. Weitere Informationen finden Sie in der Elasticsearch-Dokumentation für Felddaten.
  • Wenn Sie Textfelder aggregieren müssen, ändern Sie den Mapping-Typ in Schlüsselwort. Wenn der JVM-Speicherdruck zu hoch wird, verwenden Sie die folgenden API-Operationen, um den Felddaten-Cache zu löschen: POST /index_name/_cache/clear (Cache auf Indexebene) und POST */_cache/clear (Cache auf Clusterebene).
    Hinweis: Das Löschen des Cache kann laufende Abfragen stören.

Identifizieren und Beheben von Hardwarefehlern

Manchmal können Hardwarefehler die Verfügbarkeit von Cluster-Knoten beeinträchtigen. Berücksichtigen Sie diese Faktoren, um die Auswirkungen potenzieller Hardwarefehler zu begrenzen:

  • Stellen Sie sicher, dass Sie mehr als einen Knoten in Ihrem Cluster haben. Ein Cluster mit nur einem Knoten ist ein einzelner Fehlerpunkt. Sie können keine Replikat-Shards verwenden, um Ihre Daten zu sichern, da Primär- und Replikat-Shards nicht demselben Knoten zugewiesen werden können. Wenn der Knoten ausfällt, können Sie Daten aus einem Snapshot wiederherstellen. Weitere Informationen zu Snapshots finden Sie unter Erstellen von Index-Snapshots in OpenSearch Service. Sie können außerdem keine Daten wiederherstellen, die im letzten Snapshot noch nicht erfasst wurden. Weitere Informationen finden Sie unter Dimensionierung von OpenSeach-Service-Domänen und Erstellen und Verwalten von OpenSearch-Service-Domänen.
  • Stellen Sie sicher, dass Sie mindestens ein Replikat haben. Bei einem Cluster mit mehreren Knoten kann es auch dann zu Datenverlusten kommen, wenn es keine Replikat-Shards gibt.
  • Schalten Sie das Zonenbewusstsein ein. Wenn Zonenbewusstsein aktiviert ist, startet OpenSearch Service Datenknoten in mehreren Availability Zones. OpenSearch Service versucht primäre Shards und ihre entsprechenden Replikat-Shards an verschiedene Availability Zones zu verteilen. Wenn in einem Knoten oder einer Zone ein Fehler auftritt, bleiben Ihre Daten weiterhin verfügbar. Weitere Informationen finden Sie unter Konfigurieren einer Multi-AZ-Domäne in OpenSearch Service.