Warum kann ich einen Index nicht löschen oder ein Upgrade für meinen Amazon-OpenSearch-Service-Cluster durchführen?

Letzte Aktualisierung am 05.08.2021

Ich kann keinen Index löschen oder ein Upgrade für meinen Amazon OpenSearch Service (Nachfolger von Amazon Elasticsearch Service)-Cluster durchführen. Woran liegt das?

Kurzbeschreibung

Wenn Sie versuchen, einen Index zu löschen oder ein Upgrade für Ihr OpenSearch-Service-Cluster durchzuführen, kann die Änderung aus folgenden Gründen fehlschlagen:

  • Der Snapshot wird bereits ausgeführt.
  • Der laufende Snapshot ist festgefahren.
  • Der laufende Snapshot hat einen Cluster mit rotem Status.
  • Snapshot-Zeitüberschreitung oder -Fehler.

Weitere Informationen zu Upgradefehlern des OpenSearch Service finden Sie unter Fehlerbehebung bei einem Upgrade. Weitere Informationen zum roten Health-Status eines OpenSearch-Service-Clusters finden Sie unter Roter Cluster-Status.

Auflösung

Der Snapshot ist bereits in Bearbeitung

Während ein Snapshot ausgeführt wird, kann eine der folgenden Fehlermeldungen auftreten:

  • „Der vorherige Snapshot-Vorgang ist noch nicht abgeschlossen“ (während eines Cluster-Upgrades)
  • „Indizes, die gerade aufgenommen werden, können nicht gelöscht werden“ (beim Löschen eines Index)

Wenn Sie eine Fehlermeldung erhalten haben, versuchen Sie Folgendes:

1.    Verwenden Sie für verschlüsselte Domänen die folgende Syntax, um zu überprüfen, ob ein automatisierter Snapshot ausgeführt wird:

curl -X GET  'https://domain-endpoint/_snapshot/cs-automated-enc/_status

2.    Verwenden Sie für unverschlüsselte Domänen die folgende Syntax, um zu überprüfen, ob ein automatisierter Snapshot ausgeführt wird:

curl -X GET 'https://domain-endpoint/_snapshot/cs-automated/_status'

Wenn keine laufenden Snapshots vorhanden sind, dann wird die folgende Ausgabe angezeigt:

{  "snapshots" : [ ]}

Die leeren Klammern geben an, ob Sie dann den Index sicher löschen oder ein Upgrade durchführen können. Wenn OpenSearch Service nicht überprüfen kann, ob ein Snapshot ausgeführt wird, kann der Vorgang fehlschlagen.

Der laufende Snapshot ist festgefahren

1.    Verwenden Sie die folgende Befehlssyntax, um die Start- und Endzeiten Ihrer stündlichen Snapshots zu überprüfen:

curl -X GET  'https://domain-endpoint/_cat/snapshots/cs-automated?v&s=id'

2.    Drucken Sie die Startzeiten mithilfe einer cURL-Ausgabe, die an den awk-Befehl weitergeleitet wird:

curl -X GET  'https://domain-endpoint/_cat/snapshots/cs-automated?v&s=id' |awk -F" " ' { print $4  } '

Die Ausgabe gibt die Zeit an, zu der die stündlichen Snapshots auftraten. Zum Beispiel zeigt diese Ausgabe an, dass die Ausgabe um die 52. Minute jeder Stunde läuft:

22:51:11
23:51:18
00:51:19
01:51:14
02:51:16
03:51:18
04:51:16
05:51:11

3.    Prüfen Sie Ihre Upgrade-Berechtigung für OpenSearch Service.

Wichtig: Führen Sie die Berechtigungsprüfung für das Upgrade erst durch, wenn der Snapshot abgeschlossen ist.

Verwenden Sie die Snapshot-Status-API, um zu überprüfen, ob der Snapshot abgeschlossen ist. Die Snapshot-Status-API gibt eine leere Menge zurück, wenn Ihr Snapshot aufgenommen wird. Wenn der aktuelle Status in Bearbeitung ist und sich eine Weile nicht ändert, ist Ihr Snapshot möglicherweise festgefahren. Gleiches gilt für gestoppte Snapshots, die verhindern können, dass andere Snapshots aufgenommen werden. Wenn sich der Cluster im roten Status befindet oder ein Schreibblock vorliegt, löschen Sie den Status oder Block, um den Fehler zu beheben.

Hinweis: Die Daten aus Ihrem Snapshot können sich ändern, nachdem Konfigurationsänderungen vorgenommen wurden. Verwenden Sie daher den Snapshot nicht für geplante Aufträge.

Der laufende Snapshot hat einen Cluster im roten Status

1.    Verwenden Sie die folgende Syntax, um nur die Repository-Namen aufzulisten, die auf Ihrer Domäne registriert sind:

curl -XGET "http://domain-endpoint/_cat/repositories?v&h=id"

2.    Verwenden Sie die folgende Syntax, um die Repository-Namen, -Typen und andere Einstellungen aufzulisten, die für Ihre Domäne registriert sind:

curl -XGET "http://domain-endpoint/_snapshot?pretty"
curl -XGET "https://domain-endpoint/_cluster/state/metadata"

3.    Prüfen Sie, ob Sie Snapshots in jedem der Repositorys auflisten können, mit Ausnahme der cs-automated oder cs-automated enc-Repositorys. Wenn Sie mehrere Repositorys haben, verwenden Sie ein Bash-Skript wie dieses:

#!/bin/bash
repos=$(curl -s https://domain-endpoint/_cat/repositories 2>&1 |grep  -v "cs-automated" | awk '{print $1}')

for i in $repos; do
echo "Snapshots in ... :" $i >>/tmp/snapshot
`curl -s -XGET https://domain-endpoint/_cat/snapshots/$i >> /tmp/snapshot`
\echo "done..."
done

Wichtig: Festgefahrene Snapshots können im cs-automated oder cs-automated- enc-Repository nicht manuell gelöscht werden.

4.    Verwenden Sie die folgende Syntax, um die Ausgabe im Ordner /tmp/snapshot anzuzeigen:

cat /tmp/snapshot

Der Befehl gibt eine ähnliche Antwort zurück wie die folgende:

Snapshots in ... : snapshot-manual-repo
axa_snapshot-1557497454881 SUCCESS 1557639400 05:36:40 1557639405 05:36:45  4.6s  7 31 0 31
2019-05-15                 SUCCESS 1560503610 09:13:30 1560503622 09:13:42 11.8s  4 16 0 16
epoch_test                 SUCCESS 1569151317 11:21:57 1569151335 11:22:15 18.1s 15 56 0 56

Die zurückgegebene Fehlermeldung zeigt an, dass der Amazon Simple Storage (Amazon S3)-Bucket bereits gelöscht und als Snapshot-Repository registriert wurde:

Snapshots in ... : snapshot-manual-repo
{"error":{"root_cause":[{"type":n","reason":"[snapshot-manual-repo] could not read repository data from index blob"}],"type":"repository_exception","reason":"[snapshot-manual-repo] could not read repository data from index blob","caused_by":{"type":"i_o_exception","reason":"Exception when listing blobs by prefix [index-]","caused_by":{"type":"a_w_s_security_token_service_exception","reason":"a_w_s_security_token_service_exception: User: arn:aws:sts::999999999999:assumed-role/cp-sts-grant-role/swift-us-east-1-prod-666666666666 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::666666666666:policy/my-manual-es-snapshot-creator-policy (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID: 6b9374fx-11xy-11yz-ff66-918z9bb08193)"}}},"status":500}

5.    Stellen Sie sicher, dass das manuelle Snapshot-Repository aus dem Amazon S3 Bucket gelöscht wurde:

aws s3 ls | grep -i "snapshot-manual-repo"

Hinweis: Ersetzen Sie snapshot-manual-repo durch Ihren Bucket-Namen.

6.    Löschen Sie das Repository aus Ihrem Cluster:

curl -XDELETE "https://domain-endpoint/_snapshot/snapshot-example-manual-repo"

Snapshot-Zeitüberschreitung oder -Fehler

Wenn eine Snapshot-Zeitüberschreitung oder ein -Fehler aufgetreten ist, führen Sie die folgenden Schritte aus:

1.    Prüfen Sie, ob Sie einen manuellen Snapshot machen können. Wenn Sie eine Fehlermeldung Manueller Snapshot nicht möglich erhalten, rufen Sie die _cat/snapshots-API auf:

curl -XGET/_cat/snapshots/s3_repository

2.    Ersetzen Sie s3_repository durch den Namen Ihres Amazon S3 Buckets. Diese Syntax prüft, wie lange der aktuelle Snapshot schon ausgeführt wird.. Wenn die Dauer angemessen erscheint, warten Sie, bis der Snapshot abgeschlossen ist, und versuchen Sie dann erneut, den Snapshot aufzunehmen.

Hinweis: Ihre Snapshot-Dauer kann je nach Größe Ihrer Indizes oder dem Ressourcenverbrauch Ihres Clusters länger dauern.

3.    Prüfen Sie den Health-Status Ihres Clusters:

curl -XGET "https://domain-endpoint/_cluster/health?pretty"

Wenn der Health-Status Ihres Clusters rot ist, identifizieren und beheben Sie zuerst die Grundursache für den roten Cluster-Status. Wenn OpenSearch Service Shards verlagert oder initialisiert, warten Sie, bis der Prozess abgeschlossen ist, bevor Sie Zugriffsrichtlinien konfigurieren. Beachten Sie, dass die Neuzuweisung von Shards die Rechenressourcen Ihres Clusters erheblich belasten kann. Weitere Informationen zur Fehlerbehebung bei einem roten Cluster finden Sie unter Roter Cluster-Status.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?