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.
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:
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ć.
źródło