Chcę użyć czegoś takiego jak Heartbeat / Squid / Varnish / etc, aby zrównoważyć ilość ruchu przychodzącego wśród wewnętrznych instancji apache. Musiałoby to być oprogramowanie, a nie sprzęt, ponieważ wszystkie moje rzeczy są uruchamiane na VPS. Nie mam dużego doświadczenia w tej dziedzinie, więc przepraszam, jeśli niewłaściwie używam terminologii i wybieram niewłaściwe pakiety.
Narysowałem coś, aby zilustrować, o co mi chodzi. Zielona strona jest taka, jak wyglądałaby początkowa konfiguracja, a niebieska strona mogłaby wyglądać po dodaniu większej liczby instancji Apache ze względu na wzrost ruchu. Może nie tak to działa, ale idealnie dodałbym adres IP modułu równoważącego do DNS domeny. Następnie moduł równoważący zobaczyłby liczbę połączeń w każdej instancji apache (za pomocą jakiejś listy konfiguracyjnej wewnętrznych adresów IP lub wiecznych adresów IP) i równo rozdzielił połączenia. Na niebiesko jest drugi balanser, ponieważ jestem pewien, że w pewnym momencie również będzie potrzebował pomocy.
Być może robię to źle, ale szukam pomocy na temat tego, czym powinny być „balansery” i najlepszych praktyk, jak je skonfigurować.
Każda pomoc byłaby świetna.
Odpowiedzi:
Prawie każde „odwrotne proxy” zrobi to, o co poprosisz.
Na przykład Lakier, Funt i HAProxy są dobre w tym, co robią, ale mają też swoje różnice - jednak jeśli chodzi o to, o co prosisz, każde z nich zrobi. Osobiście uważam, że najlepiej będzie z HAProxy, ale to tylko przypuszczenie.
Najlepiej przeczytaj artykuł o modułach równoważenia obciążenia, aby pomóc Ci zdecydować, jakiego rodzaju potrzebujesz: http://1wt.eu/articles/2006_lb/
Możesz również rozważyć skorzystanie z wcześniej przygotowanej usługi - na przykład uruchomienie oprogramowania w elastycznej chmurze Amazon i korzystanie z elastycznego równoważenia obciążenia.
źródło
Na początku należy odpowiedzieć na ważne pytanie:
czy potrzebujesz sesji użytkownika do obsługi modułu równoważenia obciążenia i zawsze kierowania do tego samego serwera WWW (jeśli żyje)?
sesje nie są wymagane : w takim przypadku powinieneś użyć wydajnego programu nginx jako modułu równoważenia obciążenia. Konfiguracja jest łatwa do ustawienia, w którym wystarczy tylko wskazać listę serwerów WWW w
upstream upstream_name { server1, ..., serverN }
zestawieniu, a następnie, dla danej domeny, potrzebujesz prostejproxy_pass upstream_name
dyrektywy.Zobacz wiki Nginx .
wymagana sesja Istnieje podobne ustawienie dla funta, w którym podajesz nazwę pliku cookie, który będzie obsługiwał identyfikator sesji (
ID MYCOOKIENAME
), a następnie listęBACKEND
wszystkich serwerów.Zobacz na przykład przykład konfiguracji funta .
Gdy
heartbeat
pojawi się potrzeba kilku modułów równoważenia obciążenia, możesz przejść do konfiguracji, która zapewni, że tylko jeden moduł równoważący zamontuje wirtualny adres IP dla danej domeny (jeśli wymagane są sesje, lub zamontuje oba i będzie zasilał DNS dwoma adresami IP dla instancja). Być może powinno to zostać szczegółowo opisane w innym pytaniu w momencie, gdy staje się ono konieczne (ponieważ narzędzia ewoluują szybko).Zobacz także ten link na przykład.
źródło
Powinieneś potrzebować bardzo dobrego powodu, aby wprowadzić dodatkową złożoność i jeden punkt awarii do swojej architektury.
Równoważenie obciążenia Round-Robin
Zadziwia mnie ilość błędnych informacji związanych z rundą. Gdybym był cyniczną osobą, zastanawiałbym się, czy istnieje związek z dostawcami, którzy produkują duży, drogi sprzęt do równoważenia obciążenia.
Jedyne punkty, które przyznam, to to
Adresy IPV4 stają się rzadkie, a zatem drogie - ale wciąż dużo. znacznie tańsze niż powiedzmy Cisco CSS.
Internet coraz częściej działa na usługach internetowych - i nie wszyscy programiści implementują obsługę DNS zgodnie ze specyfikacjami . Ale każda przeglądarka, z której kiedykolwiek korzystałem, działa tak, jak powinna
źródło
rozpocznij swoją misję tutaj: http://httpd.apache.org/docs/2.1/mod/mod_proxy_balancer.html i http://www.barneyb.com/barneyblog/2009/02/26/apache-httpds-mod_proxy_balancer/
źródło
Jeśli chodzi o usługi równoważące, możesz zajrzeć do LVS na http://www.linuxvirtualserver.org/ , być może uruchamiając ldirectord i pulsu w celu kierowania ruchem i przełączania awaryjnego.
źródło
Nginx jest niesamowity jako upstream proxy, użyłem go z wielkim sukcesem w konfiguracji wykonującej codziennie 1M + unikatów
źródło
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:
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.
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.
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 .
źródło