Poprawiona odporność dzięki przeciwciśnieniu i kontroli wstępu dla usługi Amazon OpenSearch | Usługi sieciowe Amazona

Poprawiona odporność dzięki przeciwciśnieniu i kontroli wstępu dla usługi Amazon OpenSearch | Usługi sieciowe Amazona

Węzeł źródłowy: 2723961

Usługa Amazon OpenSearch to zarządzana usługa, która ułatwia zabezpieczanie, wdrażanie i obsługę klastrów OpenSearch na dużą skalę w chmurze AWS. W zeszłym roku wprowadziliśmy Przeciwciśnienie indeksowania odłamków i kontrola dostępu, która monitoruje zasoby klastra i ruch przychodzący w celu selektywnego odrzucania żądań, które w przeciwnym razie stanowiłyby zagrożenie dla stabilności, takie jak brak pamięci i wpływ na wydajność klastra z powodu rywalizacji o pamięć, nasycenia procesora i obciążenia GC i innych.

Cieszymy się, że możemy teraz wprowadzić funkcję Search Backpressure i kontrolę dostępu opartą na procesorze dla usługi OpenSearch, która jeszcze bardziej zwiększa odporność klastrów. Te ulepszenia są dostępne dla wszystkich wersji OpenSearch 1.3 lub nowszych.

Wyszukaj przeciwciśnienie

Przeciwciśnienie zapobiega przeciążeniu systemu pracą. Robi to, kontrolując natężenie ruchu lub zmniejszając nadmierne obciążenie, aby zapobiec awariom i utracie danych, poprawić wydajność i uniknąć całkowitej awarii systemu.

Search Backpressure to mechanizm służący do identyfikowania i anulowania żądań wyszukiwania w locie, które wymagają dużej ilości zasobów, gdy węzeł znajduje się pod przymusem. Jest skuteczny w przypadku obciążeń związanych z wyszukiwaniem o wyjątkowo wysokim zużyciu zasobów (takich jak złożone zapytania, powolne zapytania, wiele trafień lub duże agregacje), które w przeciwnym razie mogłyby spowodować awarie węzłów i wpłynąć na kondycję klastra.

Search Backpressure opiera się na strukturze śledzenia zasobów zadań, która zapewnia łatwy w użyciu interfejs API do monitorowania wykorzystania zasobów każdego zadania. Search Backpressure wykorzystuje wątek w tle, który okresowo mierzy wykorzystanie zasobów węzła i przypisuje ocenę anulowania do każdego zadania wyszukiwania w locie na podstawie takich czynników, jak czas procesora, alokacje sterty i czas, który upłynął. Wyższy wynik anulowania odpowiada żądaniu wyszukiwania wymagającemu większej ilości zasobów. Żądania wyszukiwania są anulowane w kolejności malejącej ich wyniku anulowania, aby szybko odzyskać węzły, ale liczba anulowań jest ograniczona, aby uniknąć marnotrawstwa pracy.

Poniższy diagram ilustruje przepływ pracy Wyszukiwanie przeciwciśnienia.

Żądania wyszukiwania zwracają kod stanu HTTP 429 „Zbyt wiele żądań” po anulowaniu. OpenSearch zwraca częściowe wyniki, jeśli tylko niektóre fragmenty zawiodą i częściowe wyniki są dozwolone. Zobacz następujący kod:

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

Monitorowanie ciśnienia wstecznego wyszukiwania

Możesz monitorować szczegółowy stan Search Backpressure za pomocą interfejsu API statystyk węzła:

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

Możesz także wyświetlić podsumowanie odwołań w całym klastrze za pomocą Amazon Cloud Watch. Następujące dane są teraz dostępne w ES/OpenSearchService przestrzeń nazw:

  • Anulowano zadanie wyszukiwania – Liczba odwołań węzła koordynatora
  • Anulowano zadanie SearchShard – Liczba odwołań węzłów danych

Poniższy zrzut ekranu przedstawia przykład śledzenia tych metryk w konsoli CloudWatch.

Kontrola dostępu oparta na procesorze

Kontrola dostępu to mechanizm kontroli dostępu, który proaktywnie ogranicza liczbę żądań do węzła na podstawie jego aktualnej przepustowości, zarówno w przypadku wzrostów organicznych, jak i skoków ruchu.

Oprócz presji na pamięć JVM i progów wielkości żądań, teraz monitoruje również średnie kroczące użycie procesora przez każdy węzeł, aby odrzucić przychodzące _search i _bulk upraszanie. Zapobiega przeciążeniu węzłów zbyt dużą liczbą żądań, co prowadzi do powstawania gorących punktów, problemów z wydajnością, przekroczenia limitu czasu żądań i innych kaskadowych awarii. Nadmierne żądania zwracają kod stanu HTTP 429 „Zbyt wiele żądań” po odrzuceniu.

Obsługa błędów HTTP 429

Otrzymasz błędy HTTP 429, jeśli wyślesz nadmierny ruch do węzła. Wskazuje to na niewystarczające zasoby klastra, żądania wyszukiwania wymagające dużej ilości zasobów lub niezamierzony wzrost obciążenia.

Search Backpressure zapewnia powód odrzucenia, co może pomóc w dostrojeniu żądań wyszukiwania wymagających dużej ilości zasobów. W przypadku skoków ruchu zalecamy ponawianie prób po stronie klienta z wykładniczym wycofywaniem i jitterem.

Możesz również postępować zgodnie z tymi przewodnikami rozwiązywania problemów, aby debugować nadmierne odrzucenia:

Wnioski

Search Backpressure to reaktywny mechanizm zmniejszający nadmierne obciążenie, podczas gdy kontrola dostępu to proaktywny mechanizm ograniczający liczbę żądań do węzła poza jego możliwości. Oba działają w tandemie, aby poprawić ogólną odporność klastra OpenSearch.

Szukaj Przeciwciśnienie jest dostępne w Otwórz wyszukiwanie, i zawsze szukamy wkłady zewnętrzne. Możesz odnieść się do RFC zacząć.


O autorach

Ketan Verma jest starszym SDE pracującym nad usługą Amazon OpenSearch. Pasjonuje go budowanie systemów rozproszonych na dużą skalę, poprawianie wydajności i upraszczanie złożonych pomysłów za pomocą prostych abstrakcji. Poza pracą lubi czytać i doskonalić swoje umiejętności domowego baristy.

Suresh NS jest starszym SDE pracującym nad usługą Amazon OpenSearch. Pasjonuje się rozwiązywaniem problemów w systemach rozproszonych dużej skali.

Pritkumar Ladani jest SDE-2 działającym na Amazon OpenSearch Service. Lubi przyczyniać się do rozwoju oprogramowania open source i jest pasjonatem systemów rozproszonych. Jest amatorskim badmintonistą i lubi trekking.

Bukhtawar Chan jest głównym inżynierem pracującym nad usługą Amazon OpenSearch. Interesuje się budową systemów rozproszonych i autonomicznych. Jest opiekunem i aktywnym współpracownikiem OpenSearch.

Znak czasu:

Więcej z Duże zbiory danych AWS!