Elasticsearch: täglicher Betrieb und Störungsszenarien (8.x / 9.x)
ElasticsearchStufe: FortgeschrittenDauer: 5 Min. (Prüfung) – Stunden (Reindex, Node leeren)Keine Installation: ein szenariobasiertes Runbook, um einen installierten Elasticsearch-8.x-/9.x-Cluster im Alltag zu betreiben und ihn wiederherzustellen, wenn er ausfällt. Zustand und Allocation Explain, Lösung nicht zugewiesener Shards (Disk, Filtering, retry_failed, Replicas, als letztes Mittel Stale/Empty Primary), Disk Watermarks, der Block read_only_allow_delete, Nodes hinzufügen und sicher entfernen, Reindex ohne Ausfallzeit mit einem Alias, ILM und Rollover, _shrink / _split, Wiederherstellen eines einzelnen Index aus einem Snapshot unter neuem Namen. Wenn du nicht weißt, was zu tun ist, beginne mit der Zustandsprüfung. Einrichtung von Snapshot-Repositorys und SLM, Security-Härtung und Versions-Upgrades stehen in eigenen Elasticsearch-Guides.
Topologie: Elasticsearch-8.x-/9.x-Cluster (1–N Nodes), TLS und Authentifizierung aktiviert
Szenarien
- Cluster-Zustand: Status, Nodes, nicht zugewiesene Shards, Disk — Nur lesend: green/yellow/red, Node-Liste, nicht zugewiesene (UNASSIGNED) Shards und ihre Ursache (Allocation Explain), Plattenbelegung und Watermarks, ausstehende Tasks. Beginne hier, wenn du nicht sicher bist, was zu tun ist.
- Nicht zugewiesenen (UNASSIGNED) Shard beheben (nach Explain) — Der Cluster ist yellow oder red und Shards werden nicht zugewiesen: je nach Ursache aus Allocation Explain Disk, Allocation Filtering, Wiederholungslimit (retry_failed), Replica-Anzahl oder als letztes Mittel ein Primary aus einer alten Kopie.
- Disk-Watermark-Einstellungen anzeigen / ändern — Shards werden wegen der Plattenbelegung verschoben oder nicht zugewiesen; die Watermark-Schwellen (low / high / flood_stage) sollen vorübergehend oder dauerhaft geändert oder auf den Standard zurückgesetzt werden.
- Index ist schreibgeschützt: Block read_only_allow_delete entfernen — Schreibzugriffe werden mit 'FORBIDDEN/12/index read-only / allow delete (api)' oder 'TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark' abgewiesen: Zuerst wird Plattenplatz freigegeben, dann der Block entfernt.
- Node zum Cluster hinzufügen (Enrollment Token) — Mehr Kapazität wird gebraucht: Auf einem neuen Server ist Elasticsearch installiert; er tritt dem Cluster mit einem Enrollment Token bei, die Shards verteilen sich automatisch neu. Keine Ausfallzeit.
- Node sicher entfernen (Exclude, leeren, herunterfahren) — Ein Node wird außer Betrieb genommen oder seine Hardware ersetzt: Seine Shards werden per Allocation Exclude auf die anderen Nodes verschoben, es wird geprüft, ob er leer ist, ist er master-eligible, erhält er eine Voting Exclusion, danach wird er heruntergefahren.
- Reindex: Umstellung ohne Ausfallzeit auf einen neuen Index mit Alias bei Mapping-/Einstellungsänderung — Der Typ eines Mapping-Felds, der Analyzer oder die Shard-Anzahl muss sich ändern: Ein neuer Index wird angelegt, die Daten werden mit _reindex kopiert und der Alias wird atomar auf den neuen Index umgestellt.
- Index Lifecycle (ILM) und Rollover einrichten / Fehler beheben — Log-/Zeitreihen-Indizes wachsen weiter oder werden nicht gelöscht: Eine ILM-Policy (Rollover + Delete), ein Index-Template und der erste Index (Write Alias) werden eingerichtet; Explain zeigt, warum eine bestehende Policy nicht weiterkommt.
- Shard-Anzahl korrigieren: _shrink (verringern) / _split (erhöhen) — Die Shard-Anzahl des Index wurde ungünstig gewählt: Sehr kleine Shards (Oversharding) werden mit _shrink zusammengeführt, sehr große Shards mit _split geteilt; die Umstellung erfolgt über einen Alias.
- Einzelnen Index aus einem Snapshot unter neuem Namen wiederherstellen — Ein Index wurde gelöscht oder ist beschädigt: Nur dieser Index wird aus dem Snapshot-Repository unter neuem Namen (Rename) wiederhergestellt, ohne den Live-Index anzufassen; nach der Prüfung wird er über einen Alias in Betrieb genommen.
Vor dem Start
- Auf … (…) hast du root-Rechte, curl und das HTTP-CA-Zertifikat des Clusters (…); dir liegt das Passwort des Benutzers elastic (oder eines Benutzers mit manage- und Index-Rechten) vor. Die API-Aufrufe gehen per HTTPS an diesen Node.
- Ein Change-Eintrag ist angelegt, das Anwendungsteam ist informiert. Shard-Verschiebungen, Reindex und Resize erzeugen Last auf Platte, Netz und CPU; führe sie außerhalb der Spitzenzeiten aus. Vor nicht umkehrbaren Schritten (Löschen, Stale/Empty Primary) muss ein aktueller Snapshot vorliegen: Snapshot.
- Der neue Server ist mit den Phasen Betriebssystemvorbereitung und Software-Installation des Cluster-Installationsguides vorbereitet: dieselbe Elasticsearch-Version, vm.max_map_count, Heap, Swap deaktiviert, 9200/9300 in der Firewall offen; der Dienst wurde noch nie gestartet (Enrollment ist nur vor dem ersten Start möglich).
Phasen der Anleitung
- API-Zugriff — Temporäre Zugangsdatendatei für die API
- Status: Zustand, Nodes, Shards, Disk (nur lesend) — Cluster-Zustand, Nodes und nicht zugewiesene Shards · Ursache für den nicht zugewiesenen Shard abfragen (Allocation Explain) · Plattenbelegung und Watermarks · Ausstehende Tasks und Auswertung des Ergebnisses
- 1. Diagnose: Warum wird der Shard nicht zugewiesen? — Die Shards des Index und die Explain-Entscheidung
- 2. Anwenden — Fehlgeschlagene Zuweisungen wiederholen (retry_failed) · Replica-Anzahl an die Node-Anzahl anpassen · Allocation Filtering entfernen · Zur Plattenblockade wechseln · Primary aus einer alten Kopie zuweisen (allocate_stale_primary) · Leeren Primary zuweisen (allocate_empty_primary)
- 3. Verifizierung — Start der Shards verfolgen
- 1. Diagnose — Plattenbelegung und aktuelle Schwellen
- 2. Anwenden — …Schwellen ändern…Schwellen auf Standard zurücksetzen…
- 1. Diagnose: Block und Disk — Blockierte Indizes und Plattenbelegung anzeigen · Möglichkeiten, Plattenplatz freizugeben
- 2. Anwenden — Block entfernen
- 3. Verifizierung — Testen, ob Schreiben funktioniert
- 1. Diagnose — Cluster-Status anzeigen
- 2. Anwenden: Enrollment und Beitritt — Node-Enrollment-Token erstellen · Neuen Node mit dem Token konfigurieren · node.name und Netzwerkeinstellungen prüfen · Dienst starten
- 3. Verifizierung — Prüfen, ob der Node beigetreten ist und Shards erhält
- 1. Diagnose — Shards und Rolle des Nodes anzeigen
- 2. Anwenden: leeren und herunterfahren — Shards vom Node verschieben (Allocation Exclude) · Warten, bis der Node leer ist · Master-eligible Node aus der Abstimmung nehmen · Node stoppen · Exclude und Voting Exclusion entfernen
- 3. Verifizierung — Cluster-Zustand prüfen
- 1. Diagnose und Vorbereitung — Quell-Index und Alias anzeigen · Neuen Index mit neuem Mapping/neuen Einstellungen anlegen
- 2. Anwenden: kopieren und Alias umstellen — Daten kopieren (_reindex, im Hintergrund) · Task überwachen · Neuen Index vorbereiten und Anzahlen vergleichen · Alias atomar auf den neuen Index umstellen
- 3. Danach — Alten Index schließen (später löschen)
- 1. ILM-Policy, Template und erster Index — ILM-Policy anlegen · Index-Template anlegen · Ersten Index mit Write Alias anlegen
- Diagnose: Warum kommt ILM nicht weiter? — ILM-Status und fehlerhafte Indizes anzeigen · Fehlgeschlagenen Schritt wiederholen
- Manueller Rollover — Rollover des Alias sofort auslösen
- 1. Diagnose — Shard-Anzahl und Größe des Index
- 3. Anwenden — …Shrink…Split…: … → … (… Shards) · Alias auf den neuen Index umstellen
- 4. Danach — Quell-Index schließen (später löschen)
- 1. Diagnose: Ist der Index im Snapshot enthalten? — Snapshots und enthaltenen Index anzeigen
- 2. Anwenden: unter neuem Namen wiederherstellen — Index als …… wiederherstellen · Prüfen und in Betrieb nehmen
- Aufräumen — Zugangsdatendatei löschen