Täiustatud vastupidavus Amazon OpenSearch Service'i vasturõhu ja sissepääsukontrolliga | Amazoni veebiteenused

Täiustatud vastupidavus Amazon OpenSearch Service'i vasturõhu ja sissepääsukontrolliga | Amazoni veebiteenused

Allikasõlm: 2723961

Amazon OpenSearchi teenus on hallatav teenus, mis muudab OpenSearchi klastrite turvalisuse, juurutamise ja haldamise lihtsaks AWS-i pilves. Eelmisel aastal tutvustasime Killu indekseerimise vasturõhk ja sissepääsu kontroll, mis jälgib klastri ressursse ja sissetulevat liiklust, et valikuliselt tagasi lükata päringud, mis muidu kujutaksid endast stabiilsusriske, nagu mälu tühjenemine ja klastri jõudluse mõjutamine mäluvaidluste, protsessori küllastumise ja GC ülekoormuse ja muu tõttu.

Meil on nüüd hea meel tutvustada OpenSearch Service'i otsingu vasturõhku ja protsessoripõhist juurdepääsukontrolli, mis suurendab veelgi klastrite vastupidavust. Need täiustused on saadaval kõigi OpenSearchi versioonide 1.3 või uuemate versioonide jaoks.

Otsige vasturõhku

Vasturõhk ei lase süsteemil tööga üle koormata. See teeb seda liiklussagedust kontrollides või liigset koormust eemaldades, et vältida kokkujooksmisi ja andmete kadu, parandada jõudlust ja vältida süsteemi täielikku riket.

Search Backpressure on mehhanism, mis tuvastab ja tühistab lennu ajal ressursimahukad otsingupäringud, kui sõlm on sunnitud. See on tõhus ebatavaliselt suure ressursikasutusega otsingukoormuste vastu (nt keerulised päringud, aeglased päringud, paljud tabamused või rasked koondamised), mis muidu võivad põhjustada sõlmede kokkujooksmisi ja mõjutada klastri tervist.

Search Backpressure on üles ehitatud ülesande ressursi jälgimise raamistikule, mis pakub hõlpsasti kasutatavat API-d iga ülesande ressursikasutuse jälgimiseks. Search Backpressure kasutab taustalõime, mis mõõdab perioodiliselt sõlme ressursikasutust ja määrab igale lennu ajal toimuvale otsinguülesandele tühistamisskoori, lähtudes sellistest teguritest nagu protsessori aeg, hunniku eraldamine ja kulunud aeg. Kõrgem tühistamisskoor vastab ressursimahukamale otsingupäringule. Otsingupäringud tühistatakse nende tühistamisskoori kahanevas järjekorras, et sõlmed kiiresti taastada, kuid tühistamiste arv on raiskamise vältimiseks piiratud.

Järgmine diagramm illustreerib otsingu vasturõhu töövoogu.

Otsingupäringud tagastavad tühistamisel HTTP 429 "Liiga palju taotlusi" olekukoodi. OpenSearch tagastab osalised tulemused, kui ainult mõned killud ebaõnnestuvad ja osalised tulemused on lubatud. Vaadake järgmist koodi:

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

Otsingu vasturõhu jälgimine

Otsingu vasturõhu üksikasjalikku olekut saate jälgida node stats API abil:

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

Saate vaadata ka kogu klastrit hõlmavat tühistamiste kokkuvõtet kasutades Amazon CloudWatch. Järgmised mõõdikud on nüüd saadaval ES/OpenSearchService nimeruum:

  • SearchTaskCanced – Koordinaatorisõlmede tühistamiste arv
  • SearchShardTaskCancelled – Andmesõlmede tühistamiste arv

Järgmisel ekraanipildil on näide nende mõõdikute jälgimisest CloudWatchi konsoolil.

CPU-põhine sissepääsu kontroll

Sissepääsukontroll on väravahoidmise mehhanism, mis piirab ennetavalt sõlme päringute arvu selle praeguse võimsuse alusel nii liikluse orgaanilise suurenemise kui ka hüppeliste hüpete korral.

Lisaks JVM-i mälusurvele ja päringu suuruse lävedele jälgib see nüüd ka iga sõlme jooksvat keskmist CPU kasutust, et sissetulevad andmed tagasi lükata. _search ja _bulk taotlusi. See hoiab ära sõlmede ülekoormamise liiga paljude päringutega, mis viivad levialade, jõudlusprobleemide, päringute ajalõppude ja muude kaskaadtõrgeteni. Ülemäärased päringud tagastavad tagasilükkamisel HTTP 429 "Liiga palju taotlusi" olekukoodi.

HTTP 429 vigade käsitlemine

Kui saadate sõlmele liigse liikluse, kuvatakse HTTP 429 veateade. See näitab kas ebapiisavaid klastri ressursse, ressursimahukaid otsingupäringuid või töökoormuse tahtmatut tõusu.

Search Backpressure pakub tagasilükkamise põhjust, mis võib aidata ressursimahukaid otsingupäringuid täpsustada. Liikluse hüpete korral soovitame kliendipoolseid katseid eksponentsiaalse tagasilöögi ja värinaga.

Liigsete tagasilükkamiste silumiseks võite järgida ka neid veaotsingu juhendeid.

Järeldus

Otsingu vasturõhk on reaktiivne mehhanism liigse koormuse eemaldamiseks, samas kui juurdepääsukontroll on ennetav mehhanism, mis piirab sõlme taotluste arvu üle selle võimsuse. Mõlemad töötavad koos, et parandada OpenSearchi klastri üldist vastupidavust.

Otsi Vasturõhk on saadaval OpenSearch, ja me otsime alati välised panused. Võite viidata RFC alustada.


Autoritest

Ketan Verma on vanem SDE, kes töötab Amazon OpenSearch Service'is. Ta on kirglik suuremahuliste hajutatud süsteemide ehitamise, jõudluse parandamise ja keerukate ideede lihtsustamise vastu lihtsate abstraktsioonidega. Töövälisel ajal meeldib talle lugeda ja oma kodubarista oskusi täiendada.

Suresh NS on vanem SDE, kes töötab Amazon OpenSearch Service'is. Ta on kirglik probleemide lahendamise vastu suuremahulistes hajutatud süsteemides.

Pritkumar Ladani on SDE-2, mis töötab Amazon OpenSearch Service'is. Talle meeldib panustada avatud lähtekoodiga tarkvara arendamisse ja ta on kirglik hajutatud süsteemide vastu. Ta on amatöör sulgpallur ja naudib matkamist.

Bukhtawar Khan on peainsener, kes töötab Amazon OpenSearch Service'is. Ta on huvitatud hajutatud ja autonoomsete süsteemide ehitamisest. Ta on OpenSearchi hooldaja ja aktiivne kaastööline.

Ajatempel:

Veel alates AWSi suured andmed