Verbesserte Ausfallsicherheit mit Gegendruck und Zugangskontrolle für Amazon OpenSearch Service | Amazon Web Services

Verbesserte Ausfallsicherheit mit Gegendruck und Zugangskontrolle für Amazon OpenSearch Service | Amazon Web Services

Quellknoten: 2723961

Amazon OpenSearch-Dienst ist ein verwalteter Dienst, der es einfach macht, OpenSearch-Cluster im großen Maßstab in der AWS Cloud zu sichern, bereitzustellen und zu betreiben. Letztes Jahr haben wir vorgestellt Gegendruck bei der Shard-Indizierung und Zugangskontrolle, das Cluster-Ressourcen und eingehenden Datenverkehr überwacht, um selektiv Anfragen abzulehnen, die andernfalls Stabilitätsrisiken wie nicht genügend Arbeitsspeicher bergen und die Cluster-Leistung aufgrund von Speicherkonflikten, CPU-Sättigung und GC-Overhead usw. beeinträchtigen würden.

Wir freuen uns nun, Search BackPressure und CPU-basierte Zugangskontrolle für OpenSearch Service einzuführen, was die Ausfallsicherheit von Clustern weiter verbessert. Diese Verbesserungen sind für alle OpenSearch-Versionen 1.3 oder höher verfügbar.

Suche Gegendruck

Gegendruck verhindert, dass ein System mit Arbeit überlastet wird. Dies geschieht durch die Steuerung der Datenverkehrsrate oder durch die Reduzierung übermäßiger Last, um Abstürze und Datenverluste zu verhindern, die Leistung zu verbessern und einen Totalausfall des Systems zu vermeiden.

Search BackPressure ist ein Mechanismus zum Identifizieren und Abbrechen ressourcenintensiver Suchanfragen während der Übertragung, wenn ein Knoten unter Druck steht. Es ist wirksam gegen Sucharbeitslasten mit ungewöhnlich hoher Ressourcennutzung (z. B. komplexe Abfragen, langsame Abfragen, viele Treffer oder starke Aggregationen), die andernfalls zu Knotenabstürzen führen und den Zustand des Clusters beeinträchtigen könnten.

Search BackPressure basiert auf dem Task-Ressourcen-Tracking-Framework, das eine benutzerfreundliche API zur Überwachung der Ressourcennutzung jeder Aufgabe bereitstellt. Search Back Pressure verwendet einen Hintergrundthread, der regelmäßig die Ressourcennutzung des Knotens misst und jeder laufenden Suchaufgabe basierend auf Faktoren wie CPU-Zeit, Heap-Zuweisungen und verstrichener Zeit eine Abbruchbewertung zuweist. Ein höherer Abbruchwert entspricht einer ressourcenintensiveren Suchanfrage. Suchanfragen werden in absteigender Reihenfolge ihrer Abbruchbewertung abgebrochen, um Knoten schnell wiederherzustellen. Die Anzahl der Abbrüche ist jedoch ratenbegrenzt, um verschwenderische Arbeit zu vermeiden.

Das folgende Diagramm veranschaulicht den Such-Gegendruck-Workflow.

Suchanfragen geben beim Abbruch den HTTP-Statuscode 429 „Too Many Requests“ zurück. OpenSearch gibt Teilergebnisse zurück, wenn nur einige Shards fehlschlagen und Teilergebnisse zulässig sind. Siehe den folgenden Code:

{ "error": { "root_cause": [ { "type": "task_cancelled_exception", "reason": "cancelled task with reason: heap usage exceeded [403mb >= 77.6mb], elapsed time exceeded [1.7m >= 45s]" } ], "type": "search_phase_execution_exception", "reason": "SearchTask was cancelled", "phase": "fetch", "grouped": true, "failed_shards": [ { "shard": 0, "index": "nyc_taxis", "node": "9gB3PDp6Speu61KvOheDXA", "reason": { "type": "task_cancelled_exception", "reason": "cancelled task with reason: heap usage exceeded [403mb >= 77.6mb], elapsed time exceeded [1.7m >= 45s]" } } ], "caused_by": { "type": "task_cancelled_exception", "reason": "cancelled task with reason: heap usage exceeded [403mb >= 77.6mb], elapsed time exceeded [1.7m >= 45s]" } }, "status": 429
}

Überwachung des Suchgegendrucks

Sie können den detaillierten Status des Such-Gegendrucks mithilfe der Knotenstatistik-API überwachen:

curl -X GET "https://{endpoint}/_nodes/stats/search_backpressure"

Sie können auch die Cluster-weite Zusammenfassung der Stornierungen anzeigen Amazon CloudWatch. Die folgenden Metriken sind jetzt im verfügbar ES/OpenSearchService Namensraum:

  • SearchTaskCancelled – Die Anzahl der Stornierungen des Koordinatorknotens
  • SearchShardTaskCancelled – Die Anzahl der Datenknotenabbrüche

Der folgende Screenshot zeigt ein Beispiel für die Verfolgung dieser Metriken auf der CloudWatch-Konsole.

CPU-basierte Zugangskontrolle

Bei der Zugangskontrolle handelt es sich um einen Gatekeeping-Mechanismus, der proaktiv die Anzahl der Anfragen an einen Knoten basierend auf seiner aktuellen Kapazität begrenzt, sowohl bei organischem Anstieg als auch bei Verkehrsspitzen.

Zusätzlich zum JVM-Speicherdruck und den Schwellenwerten für die Anforderungsgröße überwacht es jetzt auch die gleitende durchschnittliche CPU-Auslastung jedes Knotens, um eingehende Daten abzulehnen _search und _bulk Anfragen. Es verhindert, dass Knoten mit zu vielen Anfragen überlastet werden, was zu Hotspots, Leistungsproblemen, Zeitüberschreitungen bei Anfragen und anderen kaskadierenden Fehlern führt. Übermäßige Anfragen geben bei Ablehnung den HTTP-429-Statuscode „Too Many Requests“ zurück.

Behandlung von HTTP 429-Fehlern

Sie erhalten HTTP 429-Fehler, wenn Sie übermäßig viel Datenverkehr an einen Knoten senden. Dies weist entweder auf unzureichende Clusterressourcen, ressourcenintensive Suchanfragen oder einen unbeabsichtigten Anstieg der Arbeitslast hin.

Der Such-Gegendruck liefert den Grund für die Ablehnung, was bei der Feinabstimmung ressourcenintensiver Suchanfragen hilfreich sein kann. Bei Verkehrsspitzen empfehlen wir clientseitige Wiederholungsversuche mit exponentiellem Backoff und Jitter.

Sie können auch diese Anleitungen zur Fehlerbehebung befolgen, um übermäßige Ablehnungen zu beheben:

Zusammenfassung

Der Such-Gegendruck ist ein reaktiver Mechanismus, um übermäßige Last abzubauen, während die Zugangskontrolle ein proaktiver Mechanismus ist, um die Anzahl der Anfragen an einen Knoten über seine Kapazität hinaus zu begrenzen. Beide arbeiten zusammen, um die allgemeine Ausfallsicherheit eines OpenSearch-Clusters zu verbessern.

Suche Gegendruck ist verfügbar in Öffnet die Suche, und wir sind immer auf der Suche externe Beiträge. Sie können sich auf die beziehen RFC um zu starten.


Über die Autoren

Ketan Verma ist ein Senior SDE, der am Amazon OpenSearch Service arbeitet. Seine Leidenschaft gilt dem Aufbau groß angelegter verteilter Systeme, der Verbesserung der Leistung und der Vereinfachung komplexer Ideen durch einfache Abstraktionen. Außerhalb der Arbeit liest er gerne und verbessert seine Home-Barista-Fähigkeiten.

Suresh NS ist ein Senior SDE, der am Amazon OpenSearch Service arbeitet. Seine Leidenschaft gilt der Lösung von Problemen in großen verteilten Systemen.

Pritkumar Ladani ist ein SDE-2, das auf dem Amazon OpenSearch Service arbeitet. Er trägt gerne zur Open-Source-Softwareentwicklung bei und ist begeistert von verteilten Systemen. Er ist ein Amateur-Badmintonspieler und wandert gerne.

Buchtawar Khan ist leitender Ingenieur und arbeitet am Amazon OpenSearch Service. Sein Interesse gilt dem Aufbau verteilter und autonomer Systeme. Er ist Betreuer und aktiver Mitarbeiter von OpenSearch.

Zeitstempel:

Mehr von AWS Big Data