OK, to zostało poproszone jakiś czas temu i jestem spóźniony na przyjęcie. Jest jednak coś do dodania.
Jackie, prawie to przybiłeś. Twoja ilustracja pokazuje, jak obsługiwane jest równoważenie obciążenia w większości mniejszych i średnich instalacji.
Powinieneś przeczytać wprowadzenie Willy'ego Tarreau dotyczące równoważenia obciążenia , z którym związany jest Nakedible. Nadal jest ważny i jest to dobre wprowadzenie.
Musisz rozważyć, w jaki sposób pasują one do twoich potrzeb:
- Równoważenia obciążenia na poziomie TCP / IP (Linux Virtual Server i in.) Najniższy narzut na połączenie, najwyższa prędkość, nie „widzi” HTTP.
- Równoważenia obciążenia na poziomie HTTP (HAProxy, nginx, Apache 2.2, Pound, Microsoft ARR i więcej). Wyższy narzut, widzi HTTP, może gzip HTTP, potrafi SSL, może balansować obciążenie sesji trwałej.
- Odwrotne proxy HTTP (serwer ruchu Apache, lakier, kalmary). Może przechowywać obiekty w pamięci podręcznej (niektóre strony internetowe, css, js, obrazy) w pamięci RAM i przekazywać je kolejnym klientom bez angażowania serwera WWW zaplecza. Często może wykonywać te same czynności, co moduły równoważące obciążenie L7 HTTP.
istnieje drugi moduł równoważący, ponieważ jestem pewien, że w pewnym momencie moduł równoważący również będzie potrzebował pomocy.
Cóż, dobrze. Jednak równoważenie obciążenia jest proste i często jeden moduł równoważenia obciążenia może działać szybko . Odsyłam do tego artykułu, który wywołał nerwy w sieci, jako przykład tego, jaką wydajność może zapewnić pojedynczy nowoczesny serwer . Nie używaj wielu LB zanim będziesz musiał. Kiedy potrzebujesz wspólnego podejścia, to równoważenie obciążenia na poziomie IP na samym froncie (lub Round Round Robin DNS), przechodzenie do równoważenia obciążenia na poziomie HTTP, przechodzenie do serwerów proxy i serwerów aplikacji WWW.
pomoc na temat tego, czym powinny być „elementy równoważące” i najlepsze praktyki ich konfigurowania.
Problemem jest obsługa stanu sesji i do pewnego stopnia zachowanie stanu awaryjnego. Samo konfigurowanie modułów równoważenia obciążenia jest stosunkowo proste.
Jeśli używasz tylko 2-4 serwerów WWW zaplecza, mieszanie statyczne oparte na źródłowym adresie IP może być wykonalne. Pozwala to uniknąć konieczności udostępniania stanu sesji między serwerami aplikacji WWW. Każdy węzeł aplikacji internetowej widzi 1 / N całego ruchu, a mapowanie klient-serwer jest statyczne podczas normalnej pracy. Jednak nie nadaje się do większych instalacji.
Te dwie najlepsze algorytmy równoważenia obciążenia, w tym sensie, że mają łagodne działanie pod dużym obciążeniem i równomierny rozkład obciążenia, są prawdziwe round robin i równoważenie obciążenia losowego. Oba te wymagają, aby aplikacja sieciowa miała stan sesji globalnej dostępny w węzłach aplikacji internetowych. To, jak to się dzieje, zależy od stosu technologii aplikacji internetowych; ale istnieją ogólnie dostępne standardowe rozwiązania.
Jeśli ani statyczne haszowanie, ani współużytkowany stan sesji nie są dla ciebie odpowiednie, to ogólnie rzecz biorąc, wybór to ogólnie „ równoważenie obciążenia sesji trwałej ” i stan sesji na serwer. W większości przypadków działa to dobrze i jest to w pełni wykonalny wybór.
moduł równoważący zobaczyłby, ile połączeń jest w każdej instancji apache (poprzez pewną listę konfiguracji wewnętrznych adresów IP lub wiecznych adresów IP) i równomiernie rozdziela połączenia
Tak, niektóre strony tego używają. Istnieje wiele nazw dla wielu różnych algorytmów równoważenia obciążenia . Jeśli możesz wybrać okrągły robin lub losowy (lub ważony okrągły rudzik, ważony losowo), to polecam to zrobić z powodów podanych powyżej.
Ostatnia rzecz: nie zapominaj, że wielu dostawców (F5, Cisco i inni w wysokiej klasy, Fx Coyote Point i Kemp Technologies w bardziej rozsądnych cenach) oferuje dojrzałe urządzenia do równoważenia obciążenia .