Warum scheitert die Rollover-Index-Aktion in meiner ISM-Richtlinie in Amazon OpenSearch Service immer wieder?

Lesedauer: 7 Minute
0

Ich möchte Index State Management (ISM) verwenden, um für meine Indizes auf meinem Cluster von Amazon OpenSearch Service einen Rollover durchzuführen. Für meinen Index konnte jedoch kein Rollover durchgeführt werden und ich erhalte einen Fehler. Was ist der Grund dafür und wie löse ich das Problem?

Kurzbeschreibung

Wenn Sie einen Fehler „Rollover-Index nicht möglich“ erhalten haben, ist Ihre Rollover-Aktion möglicherweise aus einem der folgenden Gründe fehlgeschlagen:

  • Das Rollover-Ziel existiert nicht.
  • Der Rollover-Alias fehlt.
  • Der Indexname entspricht dem Indexmuster nicht.
  • Der Rollover-Alias verweist auf einen duplizierten Alias in einer Indexvorlage.
  • Sie haben die maximale Ressourcenauslastung in Ihrem Cluster erreicht.

Um dieses Problem zu beheben, verwenden Sie die Erklärung-API, um die Ursache Ihres Fehlers zu ermitteln. Prüfen Sie dann Ihre ISM-Richtlinie. Weitere Informationen zum Einrichten der Rollover-Aktion in Ihrer ISM-Richtlinie finden Sie unter Wie verwende ich ISM, um geringen Speicherplatz in OpenSearch Service zu verwalten?

Hinweis: Die folgende Lösung gilt nur für die OpenSearch-API. Informationen zur älteren Open Distro API finden Sie unter ISM-API-Operationen von Open Distro.

Auflösung

Verwenden der Erklärungs-API

Verwenden Sie die Erklärung-API, um die Ursache für Ihren Fehler „Rollover-Index fehlgeschlagen“ zu ermitteln:

GET _plugins/_ism/explain/logs-000001?pretty

Hier ist eine Beispielausgabe der Erklärungs-API:

{
     "logs-000001": {
          "index.plugins.index_state_management.policy_id": "rollover-workflow",
          "index": "logs-000001",
          "index_uuid": "JUWl2CSES2mWYXqpJJ8qlA",
          "policy_id": "rollover-workflow",
          "policy_seq_no": 2,
          "policy_primary_term": 1,
          "rolled_over": false,
          "state": {
               "name": "open",
               "start_time": 1614738037066
          },
          "action": {
               "name": "rollover",
               "start_time": 1614739372091,
               "index": 0,
               "failed": true,
               "consumed_retries": 0,
               "last_retry_time": 0
          },
          "retry_info": {
               "failed": false,
               "consumed_retries": 0
          },
          "info": {
               "cause": "rollover target [rolling-indices] does not exist",
               "message": "Failed to rollover index [index=logs-000001]"
          }
     }
}

Diese Beispielausgabe zeigt an, dass für die Indizes kein Rollover durchgeführt wurde, weil der Ziel-Rollover-Alias (rolling-indices) nicht existierte.

Das Rollover-Ziel existiert nicht

Wenn die Erklärung-API die Ursache als „Rollover-Ziel [rolling-indices] existiert nicht“ zurückgibt, prüfen Sie, ob der Index mit dem Rollover-Alias gebootet wurde:

GET _cat/aliases

Die Ausgabe listet alle aktuellen Aliase im Cluster und die zugehörigen Indizes auf. Wenn ISM angibt, dass Ihr Rollover-Ziel nicht existiert, fehlen ein Rollover-Aliasname und eine fehlgeschlagene Indexzuordnung.

Um die fehlgeschlagene Indexzuordnung zu beheben, fügen Sie den Rollover-Alias an den Index an:

POST /_aliases
{
     "actions": [{
          "add": {
               "index": "logs-000001",
               "alias": "my-data"
          }
     }]
}

Nachdem Sie den Rollover-Alias angefügt haben, wiederholen Sie die Rollover-Aktion für den verwalteten Index in OpenSearch Service:

POST _plugins/_ism/retry/logs-000001

Weitere Informationen finden Sie auf der OpenSearch-Website unter Wiederholungsfehler.

Wenn Sie den fehlgeschlagenen Index erneut versuchen, erhalten Sie möglicherweise eine Statusmeldung „Versuch den Vorgang zu wiederholen“. Wenn OpenSearch Service versucht, den Vorgang zu wiederholen, warten Sie, bis der nächste ISM-Zyklus ausgeführt wird. ISM-Zyklen laufen alle 30 bis 48 Minuten. Wenn die Rollover-Aktion erfolgreich ist, erhalten Sie dann die folgende Meldung: „Index-Rollover erfolgreich durchgeführt“.

Der Rollover-Alias fehlt

Wenn die Erklärung-API-Ausgabe einen fehlenden Rollover-Alias als Ursache für Ihren Rollover-Fehler identifiziert, überprüfen Sie die Einstellungen des fehlgeschlagenen Index:

GET <failed-index-name>/_settings

Wenn Sie feststellen, dass die Einstellung index.opendistro.index_state_management.rollover_alias fehlt, fügen Sie die Einstellung manuell zu Ihrem Index hinzu:

PUT /<failed-index-name>/_settings
{
     "index.plugins.index_state_management.rollover_alias" : "<rollover-alias>"
}

Verwenden Sie die Wiederholungs-API für den fehlgeschlagenen Index, um den Rollover-Vorgang für den fehlergeschlagenen Index zu wiederholen. Aktualisieren Sie Ihre Richtlinienvorlage, während die Rollover-Aktion wiederholt wird:

PUT _index_template/<template-name>

Stellen Sie sicher, dass Sie dieselben Einstellungen wie Ihre vorhandene Richtlinienvorlage verwenden, damit Ihr Rollover-Alias auf die neu erstellten Indizes angewendet wird. Beispiel:

PUT _index_template/<existing-template> 
{
     "index_patterns": [
          "<index-pattern*>"
     ],
     "template": {
          "settings": {
               "plugins.index_state_management.rollover_alias": "<rollover-alias>"
          }
     }
}

Der Indexname entspricht nicht dem Indexmuster

Wenn Ihre ISM-Richtlinie angibt, dass Ihr Rollover-Vorgang fehlgeschlagen ist, weil Ihr Indexname und Ihr Indexmuster nicht übereinstimmen, überprüfen Sie den Namen des fehlgeschlagenen Index. Für erfolgreiche Rollover müssen die Indexnamen dem folgenden Regex-Muster entsprechen:

`^.*-\d+$`

Dieses Regex-Muster gibt vor, dass Indexnamen Text gefolgt von einem Bindestrich (-) und einer oder mehreren Ziffern enthalten müssen. Wenn der Indexname diesem Muster nicht folgt und in Ihrem ersten Index Daten geschrieben sind, sollten Sie die Daten neu indexieren. Wenn Sie die Daten neu indizieren, verwenden Sie den richtigen Namen für Ihren neuen Index. Beispiel:

POST _reindex
{
     "source": {
          "index": "<failed-index>"
     },
     "dest": {
          "index": "my-new-index-000001"
     }
}

Während die Reindexdaten-API ausgeführt wird, trennen Sie den Rollover-Alias vom fehlgeschlagenen Index. Fügen Sie dann den Rollover-Alias zum neuen Index hinzu, damit die Datenquelle die eingehenden Daten in einem neuen Index weiterschreiben kann.

Beispiel:

POST /_aliases
{
     "actions": [{
          "remove": {
               "index": "<failed-index>",
               "alias": "<rollover-alias>"
          }
     },
     {
          "add": {
               "index": "my-new-index-000001",
               "alias": "<rollover-alias>"
          }
     }]
}

Fügen Sie die ISM-Richtlinie mithilfe des folgenden API-Aufrufs manuell an den neuen Index an:

POST _plugins/_ism/add/my-new-index-*
{
     "policy_id": "<policy_id>"
}

Aktualisieren Sie die vorhandene Vorlage, um den neuen Namen des Indexmusters wiederzugeben: Beispiel:

PUT _index_template/<existing-template> 
{
     "index_patterns": ["<my-new-index-pattern*>"],
}

Hinweis: Ihre ISM-Richtlinie und Ihr Rollover-Alias müssen die aufeinanderfolgenden Indizes widerspiegeln, die mit demselben Indexmuster erstellt wurden.

Der Rollover-Alias verweist auf einen duplizierten Alias in einer Indexvorlage

Wenn die Erklärung-API anzeigt, dass Ihr Index-Rollover fehlgeschlagen ist, weil ein Rollover-Alias auf einen duplizierten Alias verweist, überprüfen Sie Ihre Einstellungen für die Indexvorlage:

GET _index_template/<template-name>

Prüfen Sie, ob Ihre Vorlage einen zusätzlichen Aliasabschnitt enthält (mit einem anderen Alias, der auf denselben Index verweist):

{
     "index_patterns": ["my-index*"],
     "settings": {
          "index.plugins.index_state_management.rollover_alias": "<rollover-alias>"
     },
     "aliases": {
          "another_alias": {
               "is_write_index": true
          }
     }
}

Das Vorhandensein eines zusätzlichen Alias bestätigt den Grund für den Fehler bei Ihrem Rollover-Vorgang, da mehrere Aliase zum Fehlschlagen des Rollover-Vorgangs führen. Aktualisieren Sie die Vorlageneinstellungen, ohne Aliase anzugeben, um diesen Fehler zu beheben:

PUT _index_template/<template-name>

Führen Sie dann die Wiederholungs-API für den fehlgeschlagenen Index durch:

POST _plugins/_ism/retry/logs-000001

Wichtig: Wenn ein Alias auf mehrere Indizes verweist, stellen Sie sicher, dass nur ein Index Schreibzugriff aktiviert hat. Die Rollover-API ermöglicht automatisch den Schreibzugriff auf den Index, auf den der Rollover-Alias verweist. Das bedeutet, dass Sie keine Aliase für die Einstellung „is_write_index“ angeben müssen, wenn Sie den Rollover-Vorgang in ISM ausführen.

Sie haben die maximale Ressourcenauslastung in Ihrem Cluster erreicht

Die maximale Ressourcenauslastung in Ihrem Cluster kann entweder durch eine Schutzschalter-Ausnahme oder durch mangelnden Speicherplatz verursacht werden.

Ausnahme des Schutzschalters

Wenn die Erklärung-API eine Schutzschalter-Ausnahme zurückgibt, Ihr Cluster wahrscheinlich hohem JVM-Speicherdruck ausgesetzt, als die Rollover-API aufgerufen wurde. Informationen zur Behebung von Problemen mit dem JVM-Speicherdruck finden Sie unter Wie behebe ich einen hohen JVM-Speicherdruck auf meinem OpenSearch-Service-Cluster?

Nachdem der JVM-Speicherdruck unter 75 % gefallen ist, können Sie die Aktivität auf dem fehlgeschlagenen Index mit dem folgenden API-Aufruf wiederholen:

POST _plugins/_ism/retry/<failed-index-name>

Hinweis: Sie können Indexmuster (*) verwenden, um die Aktivitäten auf mehreren fehlgeschlagenen Indizes erneut zu versuchen.

Wenn in Ihrem Cluster seltene JVM-Spitzen auftreten, können Sie auch mit dem folgenden Wiederholungsblock für die Rollover-Aktion die ISM-Richtlinie aktualisieren:

{
     "actions": {
          "retry": {
               "count": 3,
               "backoff": "exponential",
               "delay": "10m"
          }
     }
}

In Ihrer ISM-Richtlinie hat jede Aktion einen automatisierten Wiederholungsversuch basierend auf dem Zählparameter. Wenn Ihr vorheriger Vorgang fehlschlägt, überprüfen Sie den Parameter „Verzögerung“, um zu sehen, wie lange Sie warten müssen, bis ISM die Aktion wiederholt.

Mangel an Speicherplatz

Wenn Ihrem Cluster der Speicherplatz ausgeht, löst dann OpenSearch Service einen Schreibblock auf dem Cluster aus, sodass alle Schreibvorgänge eine ClusterBlockException zurückgeben. Ihre ClusterIndexWritesBlocked-Metrikwerte zeigen einen Wert von „1“ an, was darauf hinweist, dass der Cluster Anfragen blockiert. Daher scheitern alle Versuche, einen neuen Index zu erstellen. Der API-Aufruf Erklären gibt auch eine 403 IndexCreateBlockException zurück, was darauf hinweist, dass der Cluster keinen Speicherplatz mehr hat. Informationen zur Behebung der Clusterblock-Ausnahme finden Sie unter Wie behebe ich den 403-Fehler „index_create_block_exception“ in OpenSearch Service?

Nachdem die ClusterIndexWritesBlocked-Metrik auf „0“ zurückgeht, wiederholen Sie die ISM-Aktion für den fehlgeschlagenen Index. Wenn Ihr JVM-Speicherdruck länger als 30 Minuten 92% überschreitet, könnte ein Schreibblock ausgelöst werden. Wenn Sie auf einen Schreibblock stoßen, müssen Sie stattdessen den JVM-Speicherdruck beheben. Weitere Informationen zur Behebung des JVM-Speicherdrucks finden Sie unter Wie behebe ich einen hohen JVM-Speicherdruck auf meinem OpenSearch-Service-Cluster?


AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr