Jak zrobić zbędne moduły równoważące obciążenie?


27

Rozumiem, że celem równoważenia obciążenia jest równoważenie obciążenia między serwerami i monitorowanie stanu instancji itp. Ale co się stanie, jeśli sam moduł równoważenia obciążenia ulegnie awarii? Jak skonfigurować zbędne moduły równoważące obciążenie? (równoważenie obciążenia równoważące obciążenie?)

Widziałem, jak sprawdzanie kondycji DNS może być przydatne, ale są oczywiście poważne problemy z opóźnieniami, prawda?

Zakłada się, że nie korzystasz z usług stron trzecich, takich jak AWS ELB lub coś podobnego. Co zrobić, jeśli używasz powiedz Nginx?


Na samym szczycie architektury nie ma „równoważenia obciążenia równoważenia obciążenia” , po prostu czynisz LB redundantnymi i konfigurujesz rozwiązanie wysokiej dostępności do obsługi awarii, jak robi to większość typologii klastrowania.
Xavier Lucas

Odpowiedzi:


32

Istnieje kilka sposobów na osiągnięcie HA (wysokiej dostępności) modułu równoważenia obciążenia - lub pod tym względem dowolnej usługi. Załóżmy, że masz dwie maszyny z adresami IP:

  • 192.168.100.101
  • 192.168.100.102

Użytkownicy łączą się z adresem IP, więc co chcesz zrobić, to oddzielić adres IP od konkretnego pola - np. Utworzyć wirtualny adres IP. Tym adresem IP będzie 192.168.100.100.

Teraz możesz wybrać usługę HA, która zajmie się automatycznym przełączaniem awaryjnym / zwrotnym adresu IP. Niektóre z najprostszych usług dla systemu Unix to (u) karp i utrzymywanie aktywności, niektóre z bardziej złożonych to na przykład RedHat Cluster Suite lub Pacemaker.

Weźmy na przykład keepalived - dwie usługi keepalived - każda działająca na swoim własnym urządzeniu - i komunikują się razem. Ta komunikacja jest często nazywana biciem serca.

|   VIP   |                           |         |
|  Box A  | ------v^-----------v^---- |  Box B  |
|   IP1   |                           |   IP2   |

Jeśli jeden z utrzymywanych aktywności przestanie odpowiadać (usługa z jakiegoś powodu przestanie działać, albo skrzynka podskoczy albo się wyłączy) - utrzymywana przy innej skrzynce wykryje brakujące bicie serca i założy, że inny węzeł nie żyje, i podejmie działania przełączania awaryjnego. W naszym przypadku to działanie przyniesie zmienne IP.

                                      |   VIP   |
    ------------------ -------------- |  Box B  |
                                      |   IP2   |

Najgorszym przypadkiem, który może się zdarzyć w tym przypadku, jest utrata sesji dla klientów, ale będą oni mogli połączyć się ponownie. Jeśli chcesz tego uniknąć, dwa moduły równoważące obciążenie muszą być w stanie zsynchronizować dane sesji między nimi, a jeśli mogą to zrobić, użytkownicy nie zauważą niczego oprócz zepsutego krótkiego opóźnienia.

Kolejną pułapką tej konfiguracji jest podzielony mózg - gdy oba urządzenia są w trybie online, ale połączenie jest zerwane, a oba urządzenia przynoszą ten sam adres IP. Często rozwiązuje się to za pomocą pewnego rodzaju mechanizmu ogrodzeniowego (rezerwacja SCSI, restart IPMI, inteligentne odcięcie zasilania PDU, ...) lub nieparzysta liczba węzłów wymagających większości członków klastra, aby usługa mogła zostać uruchomiona.

|   VIP   |                           |   VIP   |
|  Box A  |                           |  Box B  |
|   IP1   |                           |   IP2   |

Bardziej złożone oprogramowanie do zarządzania klastrami (takie jak Pacemaker) może przenosić całą usługę (np .: zatrzymać ją na jednym węźle i uruchomić na innym) - w ten sposób można uzyskać HA dla usług takich jak bazy danych.

Innym możliwym sposobem - jeśli kontrolujesz routery w pobliżu modułów równoważenia obciążenia, jest użycie ECMP. Takie podejście umożliwia także skalowanie w poziomie równoważenia obciążenia. Działa to w przypadku każdego z dwóch urządzeń komunikujących BGP z routerami. Każde urządzenie musi reklamować wirtualny adres IP (192.168.100.100), a router ładuje ruch równoważący za pośrednictwem ECMP. Jeśli maszyna umrze, przestanie reklamować VIP, co z kolei powstrzyma routery od wysyłania do niej ruchu. Jedyną rzeczą, o którą musisz zadbać w tej konfiguracji, jest zaprzestanie reklamowania IP, jeśli sam moduł równoważenia obciążenia umrze.


3

Używanie Nginx jako modułu równoważenia obciążenia powinno pozwolić ci postępować zgodnie z przekierowaniem opisanym w tym poście poprzez zmianę konfiguracji w celu wykrycia limitu czasu braku odpowiedzi:

nginx automatyczne równoważenie obciążenia awaryjnego

Teoretycznie, jeśli masz środowisko HA, wiele klastrów usługi równoważenia obciążenia powinno pozwolić na utrzymanie usługi, jeśli jedna ulegnie awarii.

Mam nadzieję że to pomoże.


2

Sprzętowe moduły równoważące obciążenia od lat obsługują konfiguracje „aktywne / pasywne” lub „aktywne / aktywne”, w obu przypadkach są następnie konfigurowane równolegle z perspektywy warstwy 1/2 ... aktywne / pasywne zastosowania mechanizmów monitorowania / utrzymywania zgodnie z opisem , aktywne / aktywne mogą być realizowane na wiele sposobów. Aby pojawiać się jako jeden adres IP na interfejsie, dwa lub więcej elementów równoważących może, o ile są one wszystkie / oba w trybie online, wykonywać następujące czynności:

  • wybiórczo odpowiadaj na żądania ARP na udostępniony adres IP na podstawie adresu źródłowego adresu MAC lub adresu IP, gdy klienci są w tej samej sieci
  • negocjować między sobą, który obsługuje ruch danego nowego połączenia TCP
  • pozwól, aby zduplikowany lub błędny ruch warstwy 3-7 odbywa się lekkomyślnie i polegaj na stosach TCP klienta / routera, aby go uporządkować

A następnie zmień tryb na akceptowanie całego lub więcej ruchu w przypadku utraty komunikacji z / partnerem urządzenia.

po stronie zaplecza:

  • każdy moduł równoważący może podczas normalnej pracy korzystać tylko z określonej puli serwerów aplikacji
  • lub zduplikowane żądania również mogą zostać tutaj wygenerowane ...
  • lub negocjacje między podmiotami równoważącymi mogą być wykonane
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.