Jakie są algorytmy równoważenia obciążenia


32

Badałem różne algorytmy równoważenia obciążenia dla HTTP i właśnie znalazłem 3. Random, Round Robin i Weighted Round Robin. Są jakieś inne opcje?

Dzięki Paul

Odpowiedzi:


33

Najczęstsze algorytmy równoważenia obciążenia dla modułów równoważenia obciążenia HTTP to IMHO:

  • Round Robin (czasami nazywany „Next in Loop”).

  • Rounded Robin ważony - podobnie jak Round Robin, ale niektóre serwery mają większy udział w ogólnym ruchu.

  • Losowy .

  • Źródło skrótu IP . Połączenia są dystrybuowane do serwerów zaplecza na podstawie źródłowego adresu IP. Jeśli węzeł internetowy ulegnie awarii i zostanie wyłączony z eksploatacji, dystrybucja ulegnie zmianie. Tak długo, jak wszystkie serwery działają, dany adres IP klienta zawsze będzie przechodził na ten sam serwer WWW.

  • Skrót adresu URL . Podobnie jak hash źródłowego adresu IP, z tym wyjątkiem, że hashowanie odbywa się na adresie URL żądania. Przydatne przy równoważeniu obciążenia przed buforami proxy, ponieważ żądania dla danego obiektu zawsze będą kierowane tylko do jednej pamięci podręcznej zaplecza. Pozwala to uniknąć powielania pamięci podręcznej, ponieważ ten sam obiekt jest przechowywany w kilku / wszystkich pamięciach podręcznych i zwiększa efektywną pojemność pamięci podręcznej zaplecza.

  • Najmniej połączeń , najmniej ważonych połączeń. Moduł równoważenia obciążenia monitoruje liczbę otwartych połączeń dla każdego serwera i wysyła do najmniej obciążonego serwera.

  • Najmniejszy ruch , najmniej ważony ruch. Moduł równoważenia obciążenia monitoruje przepływność z każdego serwera i wysyła do serwera o najmniejszym ruchu wychodzącym.

  • Najmniej opóźnień . Perlbal wysyła szybkie żądanie OPCJE HTTP do serwerów zaplecza i wysyła żądanie do pierwszego serwera w celu udzielenia odpowiedzi.

Prawdopodobnie powyższe nie są algorytmami w ścisłym sensie informatycznym, są bardziej ogólnymi opisami powszechnych podejść. Oto jeden mały artykuł z Cisco, który bardziej szczegółowo opisuje niektóre algorytmy, których używają . Wdrożenia od innych dostawców będą nieco inne.

Są skrajne przypadki, w których bardziej egzotyczne algorytmy są użyteczne - na przykład strumieniowanie wideo może być przydatne w przypadku „najmniejszego ruchu”. Ale ogólnie rzecz biorąc, w przypadku większości aplikacji i stron internetowych optymalnym rozwiązaniem jest:

  • Shared / rozproszony system sesja , tak że każdy Webnode odpowiedzieć na każde żądanie użytkownika (czyli dane sesji użytkownika, takich jak pliki cookie sesji są jednakowo dostępne dla wszystkich serwerów).

  • Równoważenie obciążenia za pomocą Round Robin (opcjonalnie Weighted Round Robin) lub Losowego rozkładu. Round Robin i Random są prostymi i elastycznymi algorytmami bez problemów z „gorącymi punktami”, tzn. Rozkład obciążenia na backendach pozostaje sprawiedliwy we wszystkich sytuacjach.


5

Pytanie jest niekompletne:

Bilans obciążenia CO?

Procesory mogą przyjmować nasycenie; zwykła perspektywa jest odwrócona - wypychanie zasobów zamiast przyciągania do nich.

Dyski mają wiele różnych rodzajów obciążeń do zrównoważenia, takich jak miejsce, prędkości odczytu, prędkości zapisu, przepustowość itp.

Sieci mogą być równoważone obciążeniem na podstawie opóźnienia lub całkowitej przepustowości ...

Ludzie mogą być zrównoważeni pod względem obciążenia na podstawie indywidualnej pojemności; niektóre mają wiele zadań, inne nie, a następnie jakość a ilość. Możesz zoptymalizować zasoby ludzkie w oparciu o wiele czynników i różne wagi przypisane różnym atrybutom.

Powyższe nie jest dalekie od wyczerpującego; chodzi o to, że różne zasoby biorą całkowicie różne rodzaje równoważenia obciążenia. O ich dostępnych atrybutach i możliwościach należy stwierdzić, które są zainteresowane w bilansowaniu.

To, co próbujesz zrównoważyć, jest pierwszym kryterium w tworzeniu dobrego algorytmu równoważenia. A sugestia, że ​​są tylko trzy, jest ... nieoświecona. Warto byłoby doktorat wykonać odpowiednią pracę, próbując nakreślić wszystkie sposoby, w jakie „obciążenia są zrównoważone”.

RT


2
brakuje Ci pytania Richard, algorytmy są podstawą każdej metody lub implementacji.
monomyth

2
Przepraszam, monomicie, nie przegapiłem nic cholernego. Otwórz swój umysł.
Richard T

@monomyth, @Richard ma rację - wybór algorytmu zależy od tego, na czym polega równoważenie obciążenia. Możesz opracować algorytm do równoważenia obciążenia miejsca na dysku, który może w ogóle nie mieć zastosowania do czegoś innego, na przykład żądań HTTP.
Josh

@Josh, @ Richard, pojęcia równoważenia obciążenia są jednak takie same. Nadal możesz używać Round Robin do równoważenia użycia dysku, iSCSI, HTTP, procesora itp.
Mark Henderson

@Farseeker Zgadzam się, Round Robin jest dość uniwersalny. Ale czy nie istnieją jakieś algorytmy równoważenia obciążenia, które są specyficzne dla zadania?
Josh

0

Nie bezpośrednia odpowiedź na twoje pytanie, ale rzeczywiste rozwiązanie, które uznaliśmy za przydatne. Korzystając z LVS i demona pulsu, nasze równoważenie obciążenia HTTP jest skonfigurowane do wywoływania niestandardowego skryptu bash, który określa obciążenie „prawdziwych serwerów” za pomocą prostego połączenia SSH i wezwania do przestoju .

Następnie, w oparciu o średnią obciążenia serwerów, dla każdego serwera ustawiana jest waga. Nie jest to najbardziej naukowe podejście, ponieważ średnie obciążenie niekoniecznie wskazuje połączenia HTTP lub obciążenie procesora spowodowane przez te połączenia. Niemniej jednak osiągnęliśmy zaskakująco skuteczne wyniki.

Mój 2c. YMMV.

PS: spójrz na projekt LVS - na pewno znajdziesz informacje na temat implementacji harmonogramu równoważenia obciążenia.

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.