DBAtlas · Atlas für Datenbankbetrieb

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
Schritt-für-Schritt-Plan für Ihre Umgebung öffnen →