Wpływ awarii infrastruktury na fragment usługi Amazon OpenSearch

Wpływ awarii infrastruktury na fragment usługi Amazon OpenSearch

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

Usługa Amazon OpenSearch to zarządzana usługa, która ułatwia zabezpieczanie, wdrażanie i obsługę OpenSearch i starszych klastrów Elasticsearch na dużą skalę w chmurze AWS. Usługa Amazon OpenSearch udostępnia wszystkie zasoby dla Twojego klastra, uruchamia go oraz automatycznie wykrywa i zastępuje uszkodzone węzły, zmniejszając obciążenie samozarządzającej się infrastruktury. Usługa ułatwia interaktywną analizę dzienników, monitorowanie aplikacji w czasie rzeczywistym, przeszukiwanie witryn internetowych i nie tylko, oferując najnowsze wersje OpenSearch, obsługę 19 wersji Elasticsearch (wersje od 1.5 do 7.10) oraz możliwości wizualizacji obsługiwane przez Pulpity nawigacyjne OpenSearch i Kibana (wersje od 1.5 do 7.10).

W najnowszej wersji oprogramowania usługi zaktualizowaliśmy logikę alokacji fragmentów, aby uwzględniała obciążenie, dzięki czemu podczas redystrybucji fragmentów w przypadku jakichkolwiek awarii węzłów usługa nie zezwala na przeciążenie pozostałych węzłów przez fragmenty hostowane wcześniej w uszkodzonym węźle. Jest to szczególnie ważne w przypadku domen Multi-AZ, aby zapewnić spójną i przewidywalną wydajność klastra.

Jeśli chcesz uzyskać więcej ogólnych informacji na temat logiki alokacji fragmentu, zobacz Demistyfikująca alokacja fragmentów Elasticsearch.

Wyzwanie

O domenie Amazon OpenSearch Service mówi się, że jest „zrównoważona”, gdy liczba węzłów jest równomiernie rozłożona w skonfigurowanych strefach dostępności, a całkowita liczba fragmentów jest równomiernie rozłożona we wszystkich dostępnych węzłach bez koncentracji fragmentów dowolnego indeksu na jednym węzeł. Ponadto OpenSearch ma właściwość o nazwie „Świadomość stref”, która po włączeniu zapewnia, że ​​główny fragment i odpowiadająca mu replika są przydzielane w różnych strefach dostępności. Jeśli masz więcej niż jedną kopię danych, posiadanie wielu stref dostępności zapewnia lepszą odporność na błędy i dostępność. W przypadku, gdy domena jest skalowana w poziomie lub w trakcie awarii węzła (węzłów), OpenSearch automatycznie redystrybuuje fragmenty między dostępnymi węzłami, przestrzegając zasad alokacji opartych na świadomości stref.

Podczas gdy proces równoważenia fragmentów zapewnia równomierne rozmieszczenie fragmentów w strefach dostępności, w niektórych przypadkach w przypadku nieoczekiwanej awarii w pojedynczej strefie fragmenty zostaną ponownie przydzielone do pozostałych węzłów. Może to spowodować przeciążenie pozostałych węzłów, co wpłynie na stabilność klastra.

Na przykład, jeśli jeden węzeł w trzywęzłowym klastrze ulegnie awarii, OpenSearch redystrybuuje nieprzypisane fragmenty, jak pokazano na poniższym diagramie. Tutaj „P” reprezentuje podstawową kopię fragmentu, podczas gdy „R” reprezentuje kopię fragmentu repliki.

Takie zachowanie domeny można wyjaśnić w dwóch częściach – podczas awarii i podczas odzyskiwania.

Podczas awarii

Domena wdrożona w wielu strefach dostępności może napotkać wiele typów awarii podczas swojego cyklu życia.

Całkowita awaria strefy

Klaster może utracić pojedynczą strefę dostępności z różnych powodów, a także wszystkie węzły w tej strefie. Dzisiaj usługa próbuje umieścić utracone węzły w pozostałych strefach dostępności w dobrej kondycji. Usługa próbuje również odtworzyć utracone fragmenty w pozostałych węzłach, nadal przestrzegając reguł alokacji. Może to spowodować pewne niezamierzone konsekwencje.

  • Kiedy fragmenty strefy, której dotyczy problem, są ponownie przydzielane do zdrowych stref, uruchamiają odzyskiwanie fragmentów, które może zwiększyć opóźnienia, ponieważ zużywa dodatkowe cykle procesora i przepustowość sieci.
  • W przypadku konfiguracji n-AZ, n-kopii (n>1), pozostałe strefy dostępności n-1 są przydzielane z n-tą kopią fragmentu, co może być niepożądane, ponieważ może powodować skośność dystrybucji fragmentu, co może również skutkować niezrównoważony ruch między węzłami. Te węzły mogą zostać przeciążone, co prowadzi do dalszych awarii.

Awaria strefy częściowej

W przypadku awarii częściowej strefy lub gdy domena utraci tylko niektóre węzły w Strefie Dostępności, Amazon OpenSearch Service stara się jak najszybciej zastąpić uszkodzone węzły. Jednak w przypadku, gdy zastąpienie węzłów trwa zbyt długo, OpenSearch próbuje przydzielić nieprzypisane fragmenty tej strefy do pozostałych węzłów w strefie dostępności. Jeśli usługa nie może zastąpić węzłów w strefie dostępności, której dotyczy problem, może przydzielić je w innej skonfigurowanej strefie dostępności, co może dodatkowo zniekształcić dystrybucję fragmentów zarówno w obrębie strefy, jak i w jej obrębie. To znowu ma niezamierzone konsekwencje.

  • Jeśli węzły w domenie nie mają wystarczającej ilości miejsca do przechowywania dodatkowych fragmentów, domena może zostać zablokowana przed zapisem, co wpłynie na operację indeksowania.
  • Ze względu na przekrzywiony rozkład fragmentów w domenie może również wystąpić przekrzywiony ruch między węzłami, co może dodatkowo zwiększyć opóźnienia lub przekroczenia limitu czasu dla operacji odczytu i zapisu.

regeneracja

Obecnie, aby utrzymać pożądaną liczbę węzłów w domenie, Amazon OpenSearch Service uruchamia węzły danych w pozostałych zdrowych Strefach Dostępności, podobnie do scenariuszy opisanych w powyższej sekcji dotyczącej awarii. Aby po takim incydencie zapewnić odpowiednią dystrybucję węzłów we wszystkich Strefach Dostępności, konieczna była ręczna interwencja AWS.

Co się zmienia

Aby poprawić ogólną obsługę awarii i zminimalizować wpływ awarii na kondycję i wydajność domeny, Amazon OpenSearch Service wprowadza następujące zmiany:

  • Świadomość strefy wymuszonej: OpenSearch ma istniejącą wcześniej konfigurację równoważenia fragmentów zwaną wymuszoną świadomością, która służy do ustawiania stref dostępności, do których należy przydzielać fragmenty. Na przykład, jeśli masz atrybut świadomości o nazwie strefa i konfigurujesz węzły w zone1 i zone2, możesz użyć wymuszonej świadomości, aby uniemożliwić OpenSearch przydzielanie replik, jeśli dostępna jest tylko jedna strefa:
cluster.routing.allocation.awareness.attributes: zone
cluster.routing.allocation.awareness.force.zone.values: zone1,zone2

W tej przykładowej konfiguracji, jeśli uruchomisz dwa węzły z node.attr.zone Ustawić zone1 i utworzyć indeks z pięcioma fragmentami i jedną repliką, OpenSearch tworzy indeks i przydziela pięć podstawowych fragmentów, ale bez replik. Repliki są przydzielane tylko wtedy, gdy węzły z node.attr.zone Ustawić zone2 są dostępne.

Usługa Amazon OpenSearch użyje wymuszonej konfiguracji świadomości w domenach Multi-AZ, aby zapewnić, że fragmenty są przydzielane tylko zgodnie z zasadami świadomości stref. Zapobiegłoby to nagłemu wzrostowi obciążenia węzłów zdrowych stref dostępności.

  • Alokacja fragmentów z uwzględnieniem obciążenia: Usługa Amazon OpenSearch weźmie pod uwagę takie czynniki, jak udostępniona pojemność, rzeczywista pojemność i łączna liczba fragmentów kopii, aby obliczyć, czy jakikolwiek węzeł jest przeciążony większą liczbą fragmentów na podstawie oczekiwanej średniej liczby fragmentów na węzeł. Uniemożliwiłoby to przypisanie fragmentu, gdy jakikolwiek węzeł przydzieliłby liczbę fragmentów, która przekracza ten limit.

Note że każdy nieprzypisany pierwotny kopiowanie byłoby nadal dozwolone w przeciążonym węźle, aby zapobiec nieuchronnej utracie danych w klastrze.

Podobnie, aby rozwiązać problem z ręcznym odzyskiwaniem (jak opisano w sekcji Odzyskiwanie powyżej), Amazon OpenSearch Service wprowadza również zmiany w swoim wewnętrznym komponencie skalowania. Dzięki nowszym zmianom usługa Amazon OpenSearch Service nie uruchomi węzłów w pozostałych Strefach Dostępności, nawet jeśli przejdzie przez wcześniej opisany scenariusz awarii.

Wizualizacja obecnego i nowego zachowania

Na przykład domena Amazon OpenSearch Service jest skonfigurowana z 3-AZ, 6 węzłami danych, 12 fragmentami podstawowymi i 24 fragmentami replik. Domena jest obsługiwana przez AZ-1, AZ-2 i AZ-3, z dwoma węzłami w każdej ze stref.

Bieżąca alokacja fragmentu:
Całkowita liczba odłamków: 12 podstawowych + 24 repliki = 36 odłamków
Liczba Stref Dostępności: 3
Liczba odłamków na strefę (świadomość stref jest prawdziwa): 36/3 = 12
Liczba węzłów na strefę dostępności: 2
Liczba fragmentów na węzeł: 12/2 = 6

Poniższy diagram przedstawia wizualną reprezentację konfiguracji domeny. Okręgi oznaczają liczbę fragmentów przydzielonych do węzła. Amazon OpenSearch Service przydzieli sześć fragmentów na węzeł.

Podczas częściowej awarii strefy, gdy jeden węzeł w AZ-3 ulegnie awarii, uszkodzony węzeł jest przypisywany do pozostałej strefy, a fragmenty w strefie są redystrybuowane na podstawie dostępnych węzłów. Po zmianach opisanych powyżej klaster nie utworzy nowego węzła ani nie będzie redystrybuował shardów po awarii węzła.


Na powyższym diagramie, przy utracie jednego węzła w AZ-3, Amazon OpenSearch Service próbowałby uruchomić pojemność zastępczą w tej samej strefie. Jednak z powodu awarii strefa może być osłabiona i nie uruchomi wymiany. W takim przypadku usługa próbuje uruchomić deficyt przepustowości w innej zdrowej strefie, co może prowadzić do nierównowagi stref między Strefami Dostępności. Odłamki w strefie dotkniętej atakiem zostaną upchnięte w ocalałym węźle w tej samej strefie. Jednak przy nowym zachowaniu usługa próbowałaby uruchomić przepustowość w tej samej strefie, ale unikałaby uruchamiania przepustowości deficytowej w innych strefach, aby uniknąć nierównowagi. Alokator fragmentów zapewniłby również, że ocalałe węzły nie zostaną przeciążone.


Podobnie, w przypadku utraty wszystkich węzłów w AZ-3 lub uszkodzenia AZ-3, usługa Amazon OpenSearch przywołuje utracone węzły w pozostałej strefie dostępności, a także redystrybuuje odłamki w węzłach. Jednak po nowych zmianach usługa Amazon OpenSearch Service nie będzie przydzielać węzłów do pozostałej strefy lub będzie próbowała ponownie przydzielić utracone shardy do pozostałej strefy. Usługa Amazon OpenSearch będzie czekać na odzyskiwanie i powrót domeny do pierwotnej konfiguracji po odzyskaniu.

Jeśli Twoja domena nie ma wystarczającej pojemności, aby wytrzymać utratę strefy dostępności, może wystąpić spadek przepustowości dla Twojej domeny. W związku z tym zdecydowanie zaleca się przestrzeganie najlepszych praktyk podczas określania rozmiaru domeny, co oznacza posiadanie wystarczających zasobów, aby wytrzymać utratę pojedynczej awarii strefy dostępności.


Obecnie po przywróceniu domeny usługa wymaga ręcznej interwencji w celu zrównoważenia pojemności w strefach dostępności, co obejmuje również przenoszenie części. Jednak nowe zachowanie nie wymaga interwencji podczas procesu odzyskiwania, ponieważ pojemność powraca w strefie, na którą ma to wpływ, a fragmenty są również automatycznie przydzielane do odzyskanych węzłów. Gwarantuje to, że w przypadku pozostałych zasobów nie ma konkurencyjnych priorytetów.

Czego można się spodziewać

Po zaktualizowaniu domeny usługi Amazon OpenSearch Service do najnowszej wersji oprogramowania usługi, domeny, które były skonfigurowane zgodnie z najlepszymi praktykami będzie miał bardziej przewidywalną wydajność nawet po utracie jednego lub wielu węzłów danych w strefie dostępności. Zmniejszy się liczba przypadków nadmiernej alokacji fragmentu w węźle. Dobrą praktyką jest zapewnienie wystarczającej przepustowości, aby móc tolerować awarię pojedynczej linii

Czasami możesz zobaczyć, jak domena zmienia kolor na żółty podczas takich nieoczekiwanych awarii, ponieważ nie będziemy przypisywać fragmentów replik do przeciążonych węzłów. Nie oznacza to jednak, że w dobrze skonfigurowanej domenie nastąpi utrata danych. Nadal będziemy upewniać się, że wszystkie prawybory są przydzielone podczas przestojów. Istnieje automatyczne odzyskiwanie, które zajmie się zrównoważeniem węzłów w domenie i zapewnieniem przypisania replik po usunięciu awarii.

Zaktualizuj oprogramowanie usługi swojej domeny Amazon OpenSearch Service, aby zastosować te nowe zmiany w swojej domenie. Więcej informacji na temat procesu aktualizacji oprogramowania serwisowego znajduje się w Dokumentacja usługi Amazon OpenSearch.

Wnioski

W tym poście widzieliśmy, jak Amazon OpenSearch Service ostatnio poprawił logikę dystrybucji węzłów i fragmentów w strefach dostępności podczas strefowych przestojów.

Ta zmiana pomoże usłudze zapewnić bardziej spójną i przewidywalną wydajność podczas awarii węzłów lub stref. Domeny nie odnotują żadnych zwiększonych opóźnień ani blokad zapisu podczas przetwarzania zapisów i odczytów, które czasami pojawiały się wcześniej z powodu nadmiernej alokacji fragmentów na węzłach.


O autorach

Bukhtawar Chan jest starszym inżynierem oprogramowania pracującym nad usługą Amazon OpenSearch. Interesuje się systemami rozproszonymi i autonomicznymi. Jest aktywnym współpracownikiem OpenSearch.

Anshu Agarwala jest starszym inżynierem oprogramowania pracującym nad AWS OpenSearch w Amazon Web Services. Pasjonuje się rozwiązywaniem problemów związanych z budowaniem skalowalnych i wysoce niezawodnych systemów.

Shourya Dutta Biswas jest inżynierem oprogramowania pracującym nad AWS OpenSearch w Amazon Web Services. Pasjonuje się budowaniem wysoce odpornych systemów rozproszonych.

Rishab Nahata jest inżynierem oprogramowania pracującym nad OpenSearch w Amazon Web Services. Fascynuje go rozwiązywanie problemów w systemach rozproszonych. Jest aktywnym współpracownikiem OpenSearch.

Ranjitha Ramachandry jest inżynierem pracującym nad usługą Amazon OpenSearch w Amazon Web Services.

Jona Handlera jest starszym głównym architektem rozwiązań, specjalizującym się w technologiach wyszukiwania AWS – Amazon CloudSearch i Amazon OpenSearch Service. Z siedzibą w Palo Alto pomaga szerokiemu gronu klientów we właściwym wdrożeniu i sprawnym działaniu obciążeń związanych z wyszukiwaniem i analizą dzienników.

Znak czasu:

Więcej z Duże zbiory danych AWS!