Továbbfejlesztett ellenálló képesség az Amazon OpenSearch Service ellennyomásával és beléptetés-szabályozásával Amazon webszolgáltatások

Továbbfejlesztett ellenálló képesség az Amazon OpenSearch Service ellennyomásával és beléptetés-szabályozásával Amazon webszolgáltatások

Forrás csomópont: 2723961

Amazon OpenSearch szolgáltatás egy felügyelt szolgáltatás, amely egyszerűvé teszi az OpenSearch-fürtök biztonságossá tételét, üzembe helyezését és nagyszabású működtetését az AWS felhőben. Tavaly bemutattuk Szilánk indexelési ellennyomás és a felvételi ellenőrzés, amely figyeli a fürt erőforrásait és a bejövő forgalmat, hogy szelektíven utasítsa el azokat a kéréseket, amelyek egyébként olyan stabilitási kockázatokat jelentenének, mint például a memória elfogyása és a fürt teljesítményének befolyásolása a memóriazavarok, a CPU telítettsége és a GC többletterhelése miatt.

Izgatottan várjuk, hogy bemutassuk a Search Backpressure-t és a CPU-alapú hozzáférés-vezérlést az OpenSearch szolgáltatáshoz, amely tovább növeli a fürtök rugalmasságát. Ezek a fejlesztések az OpenSearch 1.3-as vagy újabb verzióihoz elérhetők.

Keresés Ellennyomás

Az ellennyomás megakadályozza, hogy a rendszer túlterhelje a munkát. Ezt a forgalmi sebesség szabályozásával vagy a túlzott terhelés levezetésével teszi, hogy megelőzze az összeomlásokat és az adatvesztést, javítsa a teljesítményt és elkerülje a rendszer teljes meghibásodását.

A Search Backpressure egy olyan mechanizmus, amely azonosítja és törölheti a fedélzeti erőforrás-igényes keresési kéréseket, amikor egy csomópont kényszer alatt áll. Hatékony a rendellenesen magas erőforrás-felhasználással járó keresési terhelések ellen (például összetett lekérdezések, lassú lekérdezések, sok találat vagy súlyos összesítés), amelyek egyébként csomópont-összeomlást okozhatnak, és befolyásolhatják a fürt állapotát.

A Search Backpressure a feladat-erőforrás-követési keretrendszerre épül, amely egy könnyen használható API-t biztosít az egyes feladatok erőforrás-használatának figyeléséhez. A Search Backpressure egy háttérszálat használ, amely időszakonként méri a csomópont erőforrás-használatát, és törlési pontszámot rendel minden egyes járat közbeni keresési feladathoz olyan tényezők alapján, mint a CPU-idő, a kupackiosztás és az eltelt idő. A magasabb lemondási pontszám nagyobb erőforrás-igényes keresési kérésnek felel meg. A keresési kérelmek törlése a megszakítási pontszámuk szerint csökkenő sorrendben történik a csomópontok gyors helyreállítása érdekében, de a törlések száma korlátozott a pazarló munka elkerülése érdekében.

A következő diagram a Keresési ellennyomás munkafolyamatát mutatja be.

A keresési kérések lemondáskor HTTP 429 „Túl sok kérés” állapotkódot adnak vissza. Az OpenSearch részeredményeket ad vissza, ha csak néhány szilánk hibásodik meg, és a részleges eredmények megengedettek. Lásd a következő kódot:

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

A keresési ellennyomás figyelése

A csomópontstatisztika API segítségével nyomon követheti a részletes Search Backpressure állapotot:

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

A lemondások fürtszintű összefoglalóját is megtekintheti a segítségével amazonfelhőóra. A következő mutatók most elérhetők a ES/OpenSearchService névtér:

  • SearchTaskCanced – A koordinátori csomópontok törlésének száma
  • SearchShardTaskCancelled – Az adatcsomópont-lemondások száma

A következő képernyőkép példát mutat ezen mutatók követésére a CloudWatch konzolon.

CPU-alapú beléptetés-vezérlés

A beléptetés-ellenőrzés egy kapuőrző mechanizmus, amely proaktívan korlátozza egy csomóponthoz intézett kérések számát a jelenlegi kapacitása alapján, mind az organikus növekedés, mind a forgalom kiugrása esetén.

A JVM-memórianyomás és a kérésméret küszöbértékein kívül mostantól az egyes csomópontok gördülő átlagos CPU-használatát is figyeli, hogy elutasítsa a bejövő bejövőket. _search és a _bulk kéréseket. Megakadályozza, hogy a csomópontokat túl sok kérelem túlterhelje, ami hot spotokhoz, teljesítményproblémákhoz, kérések időtúllépéséhez és egyéb lépcsőzetes hibákhoz vezet. A túl sok kérés visszautasításkor HTTP 429 „Túl sok kérés” állapotkódot ad vissza.

HTTP 429 hibák kezelése

HTTP 429-es hibákat kap, ha túlzott forgalmat küld egy csomópontnak. Vagy elégtelen fürterőforrást, erőforrásigényes keresési kérelmeket vagy nem szándékos megugrást jelez a munkaterhelésben.

A Search Backpressure biztosítja az elutasítás okát, ami segíthet az erőforrás-igényes keresési kérelmek finomhangolásában. Forgalmi kiugrások esetén javasoljuk az ügyféloldali újrapróbálkozásokat exponenciális hátrálással és rezgésekkel.

Az alábbi hibaelhárítási útmutatókat is követheti a túlzott elutasítások hibaelhárításához:

Következtetés

A Search Backpressure egy reaktív mechanizmus a túlzott terhelés levezetésére, míg a beléptetés-ellenőrzés egy proaktív mechanizmus, amely korlátozza a csomópont kapacitását meghaladó kérések számát. Mindkettő párhuzamosan javítja az OpenSearch-fürt általános rugalmasságát.

Az ellennyomás keresése itt érhető el OpenSearch, és mindig keresünk külső hozzájárulások. Hivatkozhat a RFC az induláshoz.


A szerzőkről

Ketan Verma egy Senior SDE, aki az Amazon OpenSearch szolgáltatáson dolgozik. Szenvedélye a nagyméretű elosztott rendszerek építése, a teljesítmény javítása és az összetett ötletek egyszerű absztrakciókkal történő leegyszerűsítése. Munkán kívül szeret olvasni, és fejleszti otthoni barista készségeit.

Suresh NS egy Senior SDE, aki az Amazon OpenSearch szolgáltatáson dolgozik. Szenvedélyesen foglalkozik a nagyméretű elosztott rendszerek problémáinak megoldásával.

Pritkumar Ladani egy SDE-2, amely az Amazon OpenSearch szolgáltatáson dolgozik. Szeret részt venni a nyílt forráskódú szoftverfejlesztésben, és szenvedélyesen rajong az elosztott rendszerekért. Amatőr tollaslabdázó, és szeret túrázni.

Bukhtavar kán vezető mérnök, aki az Amazon OpenSearch szolgáltatáson dolgozik. Elosztott és autonóm rendszerek építése érdekli. Az OpenSearch karbantartója és aktív közreműködője.

Időbélyeg:

Még több AWS Big Data