Direkt zum Inhalt

Warum befindet sich mein OpenSearch-Service-Cluster im roten oder gelben Status?

Lesedauer: 7 Minute
0

Mein Amazon-OpenSearch-Service-Cluster hat einen roten oder gelben Clusterstatus.

Kurzbeschreibung

Die Registerkarte Überwachung in der OpenSearch-Service-Konsole zeigt den Status des Index mit der geringsten Fehlerrate im Cluster an. Ein roter Status tritt auf, wenn OpenSearch Service einen oder mehrere primäre Shards und deren Replikate nicht zugewiesen hat. Der gelbe Status tritt auf, wenn OpenSearch Service alle primären Shards zugewiesen hat, aber ein oder mehrere Replikat-Shards nicht zugewiesen hat.

Wichtig: Ein roter Cluster-Status weist auf eine teilweise Nichtverfügbarkeit der Daten hin. Ein gelber Status bedeutet zwar keinen Datenverlust, aber der gelbe Status bedeutet, dass es dem Cluster an vollständiger Redundanz mangelt. Wenn ein Knoten ausfällt, kann es zu Datenverlust kommen.

Lösung

Wichtig: Um eine Domain neu zu konfigurieren, musst du zuerst den roten Cluster-Status lösen. Wenn du versuchst, eine Domain mit rotem Status neu zu konfigurieren, bleibt sie möglicherweise im Status „Wird geändert“ stecken.

Die Ursache für nicht zugewiesene Shards identifizieren

Verwende das AWSSupport-TroubleshootOpenSearchRedYellowCluster-Runbook, um die Grundursache der nicht zugewiesenen Shards zu identifizieren und zu beheben. Eine Anleitung findest du unter Instructions (Anweisungen) auf AWSSupport-TroubleshootOpenSearchRedYellowCluster.

Oder führe den folgenden Befehl aus, um die nicht zugewiesenen Shards manuell zu identifizieren:

curl -XGET 'domain-endpoint/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | grep UNASSIGNED

Hinweis: Ersetze domain-endpoint durch deinen Domain-Endpunkt. Notiere dir in der Ausgabe die Shard-ID.

Führe dann den folgenden Befehl aus, um Details darüber zu erhalten, warum der Shard nicht zugewiesen wurde:

curl -XGET 'domain-endpoint/_cluster/allocation/explain?pretty' -H 'Content-Type:application/json' -d'{
    "index": "index-name",
    "shard": shardID,
    "primary": false
}'

Hinweis: Ersetze domain-endpoint durch deinen Domain-Endpunkt, index-name durch deinen Indexnamen und shardID durch die ID des nicht zugewiesenen Shards. Wenn der Shard ein primärer Shard ist, ersetze falsch durch wahr.

Einen roten oder gelben Status beheben

Gehe wie folgt vor, um zu ermitteln, warum der Cluster-Status gelb oder rot ist:

  • Überprüfe die Amazon-CloudWatch-Metriken ClusterStatus.yellow, ClusterStatus.red, Shards.unassigned, CPUUtilization, JVMMemoryPressure und FreeStorageSpace.

  • Führe die folgende Abfrage aus, um die betroffenen Indizes zu identifizieren:

    GET /_cat/indices?v&health=yellow
    GET /_cat/indices?v&health=red
  • Führe die folgende Abfrage aus, um zu verstehen, warum die Shards für alle Indizes nicht zugewiesen sind:

    GET /_cluster/allocation/explain

    Hinweis: Die Ausgabe dieses Befehls zeigt dir einen umfassenden Überblick über nicht zugewiesene Shards und deren Zuweisungsstatus im gesamten Cluster. Du kannst diese Informationen verwenden, um dir einen allgemeinen Überblick über Zuweisungsprobleme zu verschaffen.

Um einen roten Cluster-Status zu lösen, führe den folgenden Befehl aus, um die roten Indizes zu löschen:

curl -XDELETE 'domain-endpoint/index-names'

Hinweis: Ersetze domain-endpoint durch deinen Domain-Endpunkt und index-names durch deinen Indexnamen.

Stelle dann die Indizes aus einem Snapshot wieder her.

Wenn sich der gelbe Cluster-Status nicht von selbst löst, verwende die Informationen darüber, warum der Shard nicht zugewiesen wurde, um die Grundursache zu beheben.

Nicht genügend Knoten, um sie den Shards zuzuweisen

Primär- und Replikat-Shards müssen sich auf unterschiedlichen Knoten befinden. Daher werden Einzelknoten-Cluster mit Replikat-Shards immer mit einem gelben Status initialisiert, da OpenSearch Service keine Replikat-Shards zuweisen kann.

OpenSearch Service Versionen 7.x und höher haben ein Standardkontingent von 1000 für cluster.max_shards_per_node. Es hat sich bewährt, den Standardwert für cluster.max_shards_per_node zu verwenden. Weitere Informationen findest du unter Cluster-level shard, block, and task settings (Shard-, Block- und Aufgabeneinstellungen auf Clusterebene) auf der OpenSearch-Website.

Wenn du Filter für die Shard-Zuweisung festlegst, kann die Zuweisung des Shards aufgehoben werden, da er nicht über genügend gefilterte Knoten verfügt. Weitere Informationen zu Shard-Zuweisungsfiltern findest du unter Index-level index settings (Indexeinstellungen auf Indexebene) auf der OpenSearch-Website.

Gehe wie folgt vor, um dieses Problem zu vermeiden:

Weitere Informationen findest du unter Größe von OpenSearch-Service-Domains anpassen und OpenSearch-Service-Shard-Zuweisung verständlich erklärt.

Probleme mit dem Speicherplatz

Wenn nicht genügend Festplattenspeicher zur Verfügung steht, kann der Cluster einen roten oder gelben Integritätsstatus annehmen. Der Knoten muss über ausreichend Speicherplatz für Shards verfügen, bevor OpenSearch Service die Shards verteilt.

Führe den folgenden Befehl aus, um zu überprüfen, wie viel Speicherplatz für jeden Knoten im Cluster verfügbar ist:

curl domain-endpoint/_cat/allocation?v

Hinweis: Ersetze domain-endpoint durch deinen Domain-Endpunkt.

Wenn du Shards ungleichmäßig verteilst, geht einigen Knoten möglicherweise der Speicherplatz aus, während andere über Kapazität verfügen. Dies kann zu Problemen bei der Neuzuweisung von Shards führen, da OpenSearch Service während des Ausgleichsprozesses keine neuen Shards zuweisen kann.

Führe den folgenden Befehl aus, um die Shard-Verteilungseinstellungen zu überprüfen:

curl -XGET domain-endpoint/_cluster/settings?include_defaults=true&flat_settings=true

Hinweis: Ersetze domain-endpoint durch deinen Domain-Endpunkt.

Es hat sich bewährt, den Festplattenspeicher regelmäßig zu überwachen und Probleme mit der Festplattenverzerrung proaktiv anzugehen, um den Cluster-Zustand zu beheben.

Weitere Informationen findest du unter Wie behebe ich Probleme mit geringem Speicherplatz in meiner OpenSearch-Service-Domain?und Wie gleiche ich die ungleichmäßige Shard-Verteilung in meinem OpenSearch-Service-Cluster aus?

Hoher JVM-Speicherdruck

Die Shard-Zuweisung ist ein ressourcenintensiver Prozess, der CPU-, Heap-Speicher-, Festplatten- und Netzwerkressourcen nutzt. Ein konstant hoher Java Virtual Machine (JVM)-Speicherdruck kann die erfolgreiche Shard-Zuweisung beeinträchtigen. Um dieses Problem zu lösen, behebe den hohen JVM-Speicherdruck. Nachdem du den JVM-Speicherdruck reduziert hast, ergreife die folgenden Maßnahmen, um den Cluster wieder in einen grünen Status zu versetzen:

  • Führe den folgenden Befehl aus, um den standardmäßigen Shard-Wiederholungswert zu erhöhen:
    PUT /index-name/_settings
    {
      "index.allocation.max_retries": 10
    }
    
    Hinweis: Ersetze index-name durch deinen Indexnamen und 10 durch deinen Wiederholungswert.
  • Ändere den Shard-Wiederholungswert auf 0, um die Replikat-Shards zu deaktivieren. Ändere ihn dann auf einen positiven Wert, um die Shards wieder zu aktivieren.

Knotenausfälle

Knotenausfälle führen dazu, dass die ihnen zugewiesenen Shards wieder freigegeben werden. Ohne Replikat-Shards kann selbst der Ausfall eines einzelnen Knotens zu einem roten Zustandsstatus führen. Wenn du jedoch Indizes mit Replikat-Shards konfigurierst, führt ein Knotenausfall in der Regel zu einem vorübergehenden gelben Status. Dieser gelbe Status tritt auf, wenn OpenSearch Service automatisch wiederhergestellt wird. Der gelbe Status endet, wenn der ausgefallene Knoten wieder fehlerfrei ist oder wenn OpenSearch Service anderen Knoten Shards neu zuweist.

Gehe wie folgt vor, um dich vor Hardwareausfällen zu schützen:

Weitere Informationen zur Identifizierung eines Knotenausfalls findest du unter Ausgefallene Clusterknoten.

Wiederkehrender gelber Cluster-Zustand

Die Cluster können aus den folgenden Gründen häufig den gelben Zustand aufweisen:

  • Vorübergehende Knotenausfälle oder Neustarts, die auftreten, wenn Knoten vorübergehend ausfallen und die Zuweisung von Replikat-Shards aufgehoben wird
    Hinweis: Der Cluster könnte sich von selbst wiederherstellen, wenn dieser Knoten wieder verfügbar ist oder wenn OpenSearch Service die Shards erneut ausgleicht.
  • Du überschreitest aufgrund von Ressourcenbeschränkungen oder Konfigurationsproblemen das Kontingent für die Shard-Zuweisung oder das Kontingent für Wiederholungsversuche.
  • Bei Clustern mit hoher Ressourcennutzung können planmäßige Wartungen, Sicherungsaufträge oder starke Lastspitzen auftreten, sodass Knoten schwanken oder Shard-Zuweisungen ablehnen.
  • Durch ein wiederkehrendes Upgrade oder einen automatisch erstellten Index wurden neue Replikate erstellt, welche die Kapazität des Clusters überschreiten.

Gehe wie folgt vor, um den wiederkehrenden gelben Zustand zu verhindern und zu beheben:

  • Stelle bei Einzelknoten-Clustern sicher, dass alle Indizes 0 Replikate haben.
    Hinweis: Bei Einzelknoten-Clustern verwaltet und konfiguriert OpenSearch Service automatisch Systemindizes als opendistro_security. Du kannst die Einstellungen für Systemindizes nicht ändern.
  • Behalte bei Clustern mit mehreren Knoten mindestens einen Replikatknoten bei. Erhöhe die Anzahl der Knoten und Replikate, um eine höhere Redundanz zu erzielen.
  • Konfiguriere eine Multi-AZ-Domain für eine hohe Verfügbarkeit und Fehlertoleranz.
    Hinweis: Wenn die Shard-Zuweisung fehlschlägt, stelle sicher, dass die Anzahl der Knoten im Cluster, in Availability Zones und in Standby-Konfiguration deinen Cluster-Anforderungen entspricht.
  • Wenn es dem Shard nicht gelungen ist, eine speicherinterne Sperre zu erreichen, erhöhe den Wert index.allocation.max_retries.
  • Um eine Erschöpfung der Ressourcen zu vermeiden, skaliere die Domain bei hoher Auslastung hoch.
  • Um Änderungen des Ressourcenbedarfs proaktiv zu überwachen, erstelle einen CloudWatch-Alarm für die Metriken ClusterStatus.yellow, ClusterStatus.red, JVMMemoryPressure, AutomatedSnapshotFailure und FreeStorageSpace.

Weitere Informationen findest du unter Bewährte Methoden für den Betrieb von OpenSearch Service.