Projekt sieci z load balancingiem


(Scytale) #1

Witam.

Muszę zaprojektować sieć, która korzystać będzie z load balancingu. Ma to być sieć serwerów www, na których będą te same dane. Użytkownik łącząc się poprzez przeglądarkę www ze stroną będzie kierowany do najmniej obciążonego serwera z X serwerów. Cała sieć będzie podłączona do internetu za pomocą kilku łącz. Do tego dochodzi synchronizacja wszystkich serwerów, tak aby na każdym były te same dane.

Serwerem www byłby Apache. Systemem Debian lub FreeBSD (bo podobno ma wbudowane wsparcie dla load balancingu).

Nie zabardzo wiem od czego zacząć. Szukałem w sieci, ale na ten temat nie ma zbyt wiele informacji.

Sieć będzie zapewne wyglądać mnie więcej tak (narysowane w paincie :slight_smile:

loadbalancinghy3.gif

Serwer, który będzie rozdzielał ruch, albo będzie w jakiś sposob pobierał z poszczególnych serwerów w jakiś sposób dane o obciążeniu (SNMP?), albo będzie bez takich danych kierował użytkowników za pomocą jakiegoś algorytmu.

Tylko co z sesjami użytkowników? Przy jednym polączeniu user może być skierowany do serwera 1, napisze maila, kliknie wyślij, i w tym momencie serwer go skieruje do serwera 2, który nie wie, że user się logował, wiec nie wyśle maila, wiec mail przepadnie.

Do tego dochodzi problem replikacji danych na serwery. Najlepszym wyjściem byłoby chyba wyznaczyć jedną maszynę, do której wprowadzało by się zmiany. Jeśli ktoś by coś dodał do strony www to serwer wysyłał by wiadomość o zmianach do innych serwerów a one by się synchronizowały i ściągały nowe dane.

Ogólnie chodzi o coś z czego na pewno korzysta np wp.pl. Oni tam muszą mieć sporą farmę serwerów i kilkanaście porządnych łącz, żeby obsłużyć cały ruch.

Byłbym wdzięczny za jakieś linki, porady, wskazówki.


(Rkolodziejak) #2

Ten temat nadaje się na pracę magisterską, więc nie ma co się rozpisywać... po prostu troche tego za dużo.

Jednakże podpowiem ci od czego zacząć (łatwiej to napisać niż zrobić :slight_smile: ):

  1. Linux --> Debian

  2. Serwery WWW --> Apache + php5 + mysql (wedle uznania)

  3. Load balancing --> linki poniżej + google | nie jest to takie skomplikowane jakby się wydawało ale zależy jakie łącza i jaki sposób wybierzesz.. Może być sprzętowy lub programowy (są urządzenia specjalnie do tego stworzone).

Można również wykorzystać "gotowe" rozwiązania software'owe takie jak EDDIE (link poniżej)

  1. Synchronizacja --> rsync lub csync2

  2. Do tego --> iptraf, iptables, ssh, może być również squid, ew. łatki na kernela

linki:

rsync --> http://jakilinux.org/aplikacje/konsola/ ... w-kubuntu/

rsync --> http://pl.wikipedia.org/wiki/Rsync

csync2 --> http://grzybowski.waw.pl/dokuwiki/doku.php?id=csync2

csync2 --> http://oss.linbit.com/csync2/

load balancing --> EDDIE --> http://eddie.sourceforge.net/what.html

load balancing --> http://www.lcic.org/load_balancing.html

load balancing --> http://lartc.org/howto/lartc.rpdb.multiple-links.html

load balancing --> http://lukasz.bromirski.net/docs/transl ... tc-pl.html

i do tego więcej --> :google:

Mam nadzieję, że radzisz sobie z angielskim bo będziesz musiał mnóstwo manuali przeczytać

:slight_smile:


(Scytale) #3

Dzięki za linki, napewno się przydadzą.

Mi to potrzebne do pracy inżynierskiej :slight_smile:

Narazie chcę się zaorientować w rozległości tematu, poźniej "wytne" część zagadnień i z nich zrobie pracę :slight_smile: