Czy moduły równoważące obciążenie elastyczne mogą poprawnie rozdzielić ruch na instancje o różnych rozmiarach


10

Właśnie przyglądałem się modułom równoważącym obciążenia elastyczne. Jak rozumiem, po prostu robią round robin, równo rozdzielając połączenia z serwerami za nimi. Co się stanie, jeśli za ELB masz różne wielkości instancji? Czy wysyła więcej połączeń do większej instancji, czy kontynuuje równomierną dystrybucję połączeń, co oznacza, że ​​naprawdę nie powinieneś używać instancji o różnych rozmiarach.

Odpowiedzi:


15

Jak rozumiem, po prostu robią round robin, równo rozdzielając połączenia z serwerami za nimi.

W pewnym sensie , ale nie całkiem tak myślę - niestety dokumentacja routingu Amazon ELB nie istnieje, dlatego trzeba zebrać kilka elementów, aby wyciągnąć wnioski. Oto jedyny fragment z Przewodnika programisty elastycznego równoważenia obciążenia , o którym wiem, patrz sekcja Sesje kleiste w przeglądzie elastycznego równoważenia obciążenia :

Domyślnie moduł równoważenia obciążenia kieruje każde żądanie niezależnie do instancji aplikacji o najmniejszym obciążeniu . Można jednak użyć funkcji sesji trwałej (znanej również jako koligacja sesji), która umożliwia modułowi równoważenia obciążenia powiązanie sesji użytkownika z określoną instancją aplikacji. Dzięki temu wszystkie żądania przychodzące od użytkownika podczas sesji zostaną wysłane do tej samej instancji aplikacji. [moje podkreślenie]

Co dokładnie oznacza najmniejsze obciążenie ? Ponownie, jedynym wyjaśnieniem, które znam, jest nieco niejasna odpowiedź zespołu AWS z 2009 roku na strategię ELB :

ELB luźno śledzi liczbę żądań (lub połączeń w przypadku TCP) nierozstrzygniętych w każdej instancji. Nie monitoruje użycia zasobów (takich jak procesor lub pamięć) w każdej instancji. Obecnie ELB będzie krążyć wokół tych przypadków, które jego zdaniem mają najmniej zaległych żądań. [moje podkreślenie]

Ma to wiele sensu w odniesieniu do architektury systemu i zaadresowanych przypadków użycia, ale oczywiście nie zapewnia przejrzystości i / lub kontroli routingu, którego możesz potrzebować lub potrzebujesz w przypadku zaawansowanych scenariuszy HA.

Należy pamiętać, że w zależności od interpretacji może to być, ale nie musi, być nieco bardziej sprzeczne z bardziej aktualną odpowiedzią zespołu AWS na Elastyczne równoważenie obciążenia - Zasady rozkładu obciążenia :

Round-robin wchodzi w grę, ale sesje klienta nie zawsze honorują pamięć podręczną TTL lub DNS, więc można uzyskać zniekształcone wyniki i nierównomierną dystrybucję żądań. ELB nie ma wpływu na to, jakie instancje ruchu / żądania otrzymały do ​​tej pory decyzje dotyczące routingu ruchu. [moje podkreślenie]

Badania zdrowia

Oczywiście powyższe zmiany zostały poprawione za pomocą odpowiednio udokumentowanych, przejrzystych i kontrolowanych kontroli stanu zdrowia , co daje pewną dźwignię do (potencjalnie tymczasowego) usunięcia instancji z uwzględnienia w routingu, jak podsumowano we wspomnianej odpowiedzi zespołu AWS na ELB Strategia również:

Moduł równoważenia obciążenia monitoruje kondycję instancji zarejestrowanych w module równoważenia obciążenia. Gdy moduł równoważenia obciążenia wykryje problem z instancją, przestaje dystrybuować do niego ruch. Gdy instancja znów jest sprawna, moduł równoważenia obciążenia ponownie uruchamia dystrybucję ruchu do niej. Ten proces umożliwia Twojej aplikacji automatyczne reagowanie na nieudane instancje bez konieczności angażowania się poza konfigurowanie kontroli poprawności.

Wniosek

Chociaż z pewnością jest to niezwykłe, nie rozumiem, dlaczego ELB nie powinien również współpracować z pulą różnych typów instancji Amazon EC2 - chociaż sam tego nie próbowałem i zaleciłbym oba, Monitorowanie modułu równoważenia obciążenia za pomocą CloudWatch, a także monitorowanie poszczególne instancje EC2 i korelują wyniki, aby ostatecznie uzyskać odpowiedni wgląd i pewność takiego ustawienia.


1
Dziękuję bardzo za tak głęboką odpowiedź, dokładnie to, czego szukałem, ale nie mogłem znaleźć.
Sean Bannister,

1
Z doświadczenia informuję, że ELB NIE rozprowadza dobrze ruchu w puli, która zawiera wiele typów instancji.
ubiquitousthey

Czy ktoś ma jakieś informacje na temat równoważenia obciążenia aplikacji AWS (ALB) i różnych typów wystąpień?
Coś

1

Na podstawie opracowanych do tej pory instrukcji algorytm dystrybucji jest niezwykle prosty.

Interfejs ELB jest zwykle więcej niż jednym wystąpieniem ELB, a dystrybucja odbywa się w trybie round-robin.

Algo zaplecza (twoich instancji) twierdzi, że jest:

ELB luźno śledzi liczbę żądań (lub połączeń w przypadku TCP) nierozstrzygniętych w każdej instancji. Nie monitoruje użycia zasobów (takich jak procesor lub pamięć) w każdej instancji. Obecnie ELB będzie krążyć wokół tych przypadków, które jego zdaniem mają najmniej zaległych żądań.

Oznaczałoby to, że jeśli większa instancja ma mniej zaległych żądań, wówczas kierowany jest do nich większy ruch. Nie ma sposobu, aby to zagwarantować.

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.