Razvoj Load Balancera
Razvoj Open Source Load Balancera
Što je Load Balancer
Load Balancer je mrežni uređaj ili servis koji se koristi u svrhu povećanja kapaciteta i/ili dostupnosti određenog/ih poslužitelja s konkretnim servisima (http,https,dns, …).
Dakle Load Balancer distribuira opterečenje na više poslužitelja istovremeno.
Load Balanceri mogu koristiti TCP ili UDP protokol za prijenos podataka.
Oni su izvana vidljivi kao jedna jedina IP adresa – prema kojoj svi pristupaju.
Iza njih se nalaze stvarni poslužitelji koji opslužuju određeni posao (pr Web poslužitelji [HTTP]) i na koje Load Balancer raspoređuje promet te se brine o svim konekcijama.
Kako to zapravo izgleda od strane interneta , preko Load Balancera do poslužitelja (primjer je isto za http) [ovo je pojednostavljen rad ali dovoljan za razumjevanje]:
1. Http promet dolazi do virtualne IP adrese na Load Balanceru (koja je zadužena samo za jedan protokol u ovom slučaju za HTTP promet ) , na port 80 (http)
2. Load Balancer primjenjuje jedan od konfiguriranih load balancing algoritama :
- Round Robin
- Weighted Round Robin
- Least Connection
- Weighted Least Connection
- ….
Te šalje pakete dalje,na poslužitelje
3. Svaki od poslužitelja kada obradi sve što treba, šalje nazad paket na Load Balancer
4. Load Balancer vraća paket nazad na odredište (na internet).
Monitori stvarnih (real) poslužitelja
Load Balancer svako malo mora provjeravati dostupnost “Real Servera” (fizičkih poslužitelja), i to dostupnosti specifičnih servisa (koje mora biti moguće mijenjati)
Naime nije dovoljno provjeravati samo da li je neki poslužitelj dostupan (pr. ping poslužitelja), već je potrebno provjeravati dostupnost konkretniog servisa koji se “Load balance-ira” npr. za HTTP.
Kako to izgleda:
Dakle Monitori Load Balancera (u našem slučaju za HTTP) moraju slati HTTP zahtjeve na sve poslužitelje koje load balance-iramo , i svaki koji uredno odgovori smatramo da je dostupan.
Svi koji su dostupni – ostaju u grupi poslužitelja na koje se promet load balance-ira.
Oni koji ispadnu iz grupe, jer nisu dostupni, se nakon nekog vremena ponovno provjeravaju – da li su u međuvremenu “oživjeli”. Ako jesu vračaju se u gupu i ponovno se koriste.
Što postoji na tržištu
Komercijalni uređaji / software
-
Cijena im je od ~5.000+ U$ na više
<li dir="ltr">
<p dir="ltr">
Rade na TCP i na UDP protokolu :
</p>
<ul>
<li dir="ltr">
<p dir="ltr">
Podržavaju dosta veliki niz protokola :
</p>
<ul>
<li dir="ltr">
<p dir="ltr">
http , https , dns , RADIUS , Diameter , …
</p>
</li>
</ul>
</li>
<li dir="ltr">
<p dir="ltr">
Podržavaju jednaku količinu monitora Real Servera
</p>
</li>
</ul>
</li>
<li dir="ltr">
<p dir="ltr">
Postoji podrška , koja se plaća
</p>
</li>
Open Source bazirani uređaji / software
-
Open Source :
<ul> <li dir="ltr"> <p dir="ltr"> Ograničenih mogućnosti , podrška je od strane zajednice </p> </li> </ul> </li> <li dir="ltr"> <p dir="ltr"> Enterprise (komercijalne )verzije bazirane na OpenSource-u: </p> <ul> <li dir="ltr"> <p dir="ltr"> Sa nešto više mogućnosti , s podrškom </p> </li> </ul> </li>
Mane navedenih uređaja
Komercijalni
-
Vrlo visoka cijena , kada se uključi podrška i mogućnost update-a , cijene za osnovne modele rastu i preko 20.000 U$
<ul> <li dir="ltr"> <p dir="ltr"> U pravilu je to standardna PC (x86) platforma (nestandarnih dimenzija), u najboljem slučaju sa dodatnim SSL/IPSec hardverskim akceleratorskim karticama </p> </li> </ul> </li> <li dir="ltr"> <p dir="ltr"> Gore navedeni specijalizirani hardver (u smislu široke dostupnosti a ne kvalitete/brzine/pouzdanosti) za koji su brzi popravci nemogući,potencijalno dugo čekanje na popravak / skupi dijelovi (ako je garancija istekla ili ne postoji ugovor 24/7) </p> </li> <li dir="ltr"> <p dir="ltr"> Podrška uglavnom nije na nivou za koji se plaća </p> </li> <li dir="ltr"> <p dir="ltr"> Osnovni modeli , sve do najjačih modela ne podržavaju nikakve napredne mrežne mogućnosti za redundanciju (pr. agregacija [LACP] između dva LB i redundantnog Switcha i sl. ). Kod večine proizvođaća to nemaju niti najjači modeli (poput pr Cisco 3750 switcheva , koji imaju mogućnost “stack”-iranja) – dakle po tom pitanju Load Balanceri se ponašaju se poput običnih PC računala. </p> </li>
Open Source bazirani
-
Open source :
<ul> <li dir="ltr"> <p dir="ltr"> Koriste tehnologije koje su dosta zaostale i/ili prespore za ovu namjenu </p> </li> </ul> </li>
(pr. korištenje Python-a i sl.)
Nemaju naprednijih mogućnosti koje su potrebne većini koji bi koristili taj uređaj/softver
Imaju osnovni set monitora Real Servera
Sveukupno upitne su sve karakteristike uređaja ovisno o hardveru
Interoperability Testovi i Performace testovi ne postoje ili su upitni
Enterprise :
-
Cijena se približava komercijalnim produktima
<li dir="ltr">
<p dir="ltr">
Imaju dodane napredne funkcije koje nedostaju u Open Source varijanti
</p>
</li>
<li dir="ltr">
<p dir="ltr">
Podrška postoji (plaća se)
</p>
</li>
<li dir="ltr">
<p dir="ltr">
Interoperability Testovi i Performace testovi ne postoje ili su upitni
</p>
</li>
Što mi želimo napraviti
Dizajnirati uređaj / proizvod :
-
Poznavajući mrežne potrebe i zahtjeve
<li dir="ltr">
<p dir="ltr">
Poznavajući programske potrebe i zahtjeve
</p>
</li>
<li dir="ltr">
<p dir="ltr">
Poznavajući slabosti postojećih sustava
</p>
</li>
<li dir="ltr">
<p dir="ltr">
S iskustvima krajnjih korisnika kao:
</p>
<ul>
<li dir="ltr">
<p dir="ltr">
Sistem inženjera
</p>
</li>
<li dir="ltr">
<p dir="ltr">
Mrežnih inženjera
</p>
</li>
<li dir="ltr">
<p dir="ltr">
Programera
</p>
</li>
</ul>
</li>
Krenuti u razvoj , korištenjem metode razvoja koja je najbliža našem projektu
Najveći prioriteti nam moraju biti : KVALITETA , POUZDANOST i BRZINA.
Tko će nam trebati
Sistem administratori i inženjeri
Mrežni administratori i inženjeri
Programeri :
-
Za Web sučelje
<li dir="ltr">
<p dir="ltr">
Za sistemske skripte [veći dio će napraviti sistemaši] (shell i sl.)
</p>
</li>
<li dir="ltr">
<p dir="ltr">
Potencijalno C , C++ za pristup Linux kernelu i naprednim funkcijama
</p>
</li>