Forbedret modstandsdygtighed med modtryk og adgangskontrol til Amazon OpenSearch Service | Amazon Web Services

Forbedret modstandsdygtighed med modtryk og adgangskontrol til Amazon OpenSearch Service | Amazon Web Services

Kildeknude: 2723961

Amazon OpenSearch Service er en administreret tjeneste, der gør det nemt at sikre, implementere og betjene OpenSearch-klynger i stor skala i AWS Cloud. Sidste år introducerede vi Shard Indexing Modtryk , adgangskontrol, som overvåger klyngressourcer og indgående trafik for selektivt at afvise anmodninger, der ellers ville udgøre stabilitetsrisici som manglende hukommelse og påvirke klyngens ydeevne på grund af hukommelsesstridigheder, CPU-mætning og GC-overhead og mere.

Vi er nu glade for at introducere Search Backpressure og CPU-baseret adgangskontrol til OpenSearch Service, som yderligere forbedrer klyngernes modstandsdygtighed. Disse forbedringer er tilgængelige for alle OpenSearch versioner 1.3 eller nyere.

Søg modtryk

Modtryk forhindrer et system i at blive overvældet af arbejde. Det gør det ved at kontrollere trafikhastigheden eller ved at fjerne overdreven belastning for at forhindre nedbrud og datatab, forbedre ydeevnen og undgå totalfejl i systemet.

Søgemodtryk er en mekanisme til at identificere og annullere ressourcekrævende søgeanmodninger under flyvningen, når en node er under tvang. Det er effektivt mod søgearbejdsbelastninger med unormalt højt ressourceforbrug (såsom komplekse forespørgsler, langsomme forespørgsler, mange hits eller tunge aggregeringer), som ellers kan forårsage knudenedbrud og påvirke klyngens helbred.

Search Backpressure er bygget oven på opgaveressourcesporingsrammerne, som giver en brugervenlig API til at overvåge hver opgaves ressourceforbrug. Søg modtryk bruger en baggrundstråd, der med jævne mellemrum måler nodens ressourceforbrug og tildeler en annulleringsscore til hver søgeopgave under flyvning baseret på faktorer som CPU-tid, heap-allokeringer og forløbet tid. En højere annulleringsscore svarer til en mere ressourcekrævende søgeanmodning. Søgeanmodninger annulleres i faldende rækkefølge efter deres annulleringsscore for hurtigt at gendanne noder, men antallet af annulleringer er hastighedsbegrænset for at undgå spildarbejde.

Følgende diagram illustrerer arbejdsgangen for søgemodtryk.

Søgeanmodninger returnerer en HTTP 429 "Too Many Requests"-statuskode ved annullering. OpenSearch returnerer delvise resultater, hvis kun nogle shards fejler, og delvise resultater er tilladt. Se følgende kode:

{ "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
}

Overvågning af søgemodtryk

Du kan overvåge den detaljerede søgemodtrykstilstand ved hjælp af node stats API:

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

Du kan også se den klyngedækkende oversigt over aflysninger vha amazoncloudwatch. Følgende metrics er nu tilgængelige i ES/OpenSearchService navneområde:

  • Søgeopgave annulleret – Antallet af aflysninger af koordinatorknudepunkter
  • SearchShardTaskCancelled – Antallet af dataknudeannulleringer

Følgende skærmbillede viser et eksempel på sporing af disse metrics på CloudWatch-konsollen.

CPU-baseret adgangskontrol

Adgangskontrol er en gatekeeping-mekanisme, der proaktivt begrænser antallet af anmodninger til en node baseret på dens aktuelle kapacitet, både for organiske stigninger og stigninger i trafikken.

Ud over JVM-hukommelsestryk og tærskler for anmodningsstørrelse, overvåger den nu også hver nodes rullende gennemsnitlige CPU-brug for at afvise indgående _search , _bulk anmodninger. Det forhindrer noder i at blive overvældet med for mange anmodninger, der fører til hot spots, ydeevneproblemer, anmodningstimeouts og andre kaskadefejl. For mange anmodninger returnerer en HTTP 429 "Too Many Requests"-statuskode ved afvisning.

Håndtering af HTTP 429-fejl

Du vil modtage HTTP 429-fejl, hvis du sender overdreven trafik til en node. Det indikerer enten utilstrækkelige klyngresourcer, ressourcekrævende søgeanmodninger eller en utilsigtet stigning i arbejdsbyrden.

Søgemodtryk giver årsagen til afvisningen, hvilket kan hjælpe med at finjustere ressourcekrævende søgeanmodninger. For trafikstigninger anbefaler vi genforsøg på klientsiden med eksponentiel backoff og jitter.

Du kan også følge disse fejlfindingsvejledninger for at fejlsøge overdrevne afvisninger:

Konklusion

Søg modtryk er en reaktiv mekanisme til at fjerne overdreven belastning, mens adgangskontrol er en proaktiv mekanisme til at begrænse antallet af anmodninger til en node ud over dens kapacitet. Begge arbejder sammen for at forbedre den overordnede modstandsdygtighed i en OpenSearch-klynge.

Søg modtryk er tilgængelig i OpenSearch, og vi leder altid efter eksterne bidrag. Du kan henvise til RFC at komme i gang.


Om forfatterne

Ketan Verma er en senior SDE, der arbejder på Amazon OpenSearch Service. Han brænder for at bygge distribuerede systemer i stor skala, forbedre ydeevnen og forenkle komplekse ideer med simple abstraktioner. Uden for arbejdet kan han lide at læse og forbedre sine hjemmebaristafærdigheder.

Suresh NS er en senior SDE, der arbejder på Amazon OpenSearch Service. Han brænder for at løse problemer i store distribuerede systemer.

Pritkumar Ladani er en SDE-2, der arbejder på Amazon OpenSearch Service. Han bidrager gerne til udvikling af open source software og brænder for distribuerede systemer. Han er amatørbadmintonspiller og nyder at vandre.

Bukhtawar Khan er en Principal Engineer, der arbejder på Amazon OpenSearch Service. Han er interesseret i at bygge distribuerede og autonome systemer. Han er en vedligeholder og en aktiv bidragyder til OpenSearch.

Tidsstempel:

Mere fra AWS Big Data