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

.Letzte Aktualisierung: 30.07.2021.

Einer der Knoten in meinem Amazon-OpenSearch-Service-Cluster (Nachfolger von Amazon Elasticsearch Service) ist ausgefallen. Warum ist der Knoten ausgefallen und wie kann ich verhindern, dass dies erneut 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.

Hier sind häufige Ursachen für ausgefallene Cluster-Knoten:

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

Auflösung

Suchen nach ausgefallenen Knoten

1.    Öffnen Sie die OpenSearch-Service-Konsole.

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

3.    Wählen Sie die Registerkarte Cluster health (Cluster-Zustand) und dann die Metrik Nodes (Knoten). Wenn die Anzahl der Knoten geringer ist als die Anzahl, die Sie für Ihren Cluster konfiguriert haben, deutet dies darauf hin, dass ein Knoten ausgefallen ist.

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

Identifizieren und beheben Sie hohen JVM-Speicherdruck

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

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

Folgendes passiert, wenn der JVM-Speicherdruck steigt:

  • Bei 75 %: OpenSearch-Service löst den Speicherbereiniger Concurrent Mark Sweep (CMS) aus. Der CMS-Speicherbereiniger läuft zusammen 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 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 unter fielddata auf der Elasticsearch-Website.
  • Wenn Sie Textfelder aggregieren müssen, ändern Sie den Mapping-Typ in keyword (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. Überprüfen Sie Folgendes, 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 Amazon OpenSearch Service. Beachten Sie, dass Sie keine Daten wiederherstellen können, 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. Ein Cluster mit mehreren Knoten kann weiterhin Datenverlust erleiden, wenn keine Replikat-Shards vorhanden sind.
  • Aktivieren des Zonenbewusstseins 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 Zonen zu verteilen. Wenn in einem Knoten oder einer Availability Zone ein Fehler auftritt, bleiben Ihre Daten weiterhin verfügbar. Weitere Informationen finden Sie unter Konfigurieren einer Multi-AZ-Domäne.