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.

     

    Load Balancer osnovni način rada

     

    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]:

    Od interneta preko Load Balancera do poslužitelja

    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:

    Monitoring servera

    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 , &#8230;
                </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 &#8220;stack&#8221;-iranja) &#8211; 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>
      

  • Svi ostali koji žele nešto naučiti.
  •  

     

    Hrvoje Horvat avatar
    Hrvoje Horvat
    Hrvoje Horvat mrežni je i sistem inženjer s dugogodišnjim (18+ g.) iskustvom u razvoju, testiranju i implementaciji, od najmanjih do enterprise kategorije IT sustava. Njegova područja rada su od mrežnih protokola do mrežnih servisa, preko standardne mrežne opreme do specijaliziranih komponenti i sustava, preko raznih mrežnih elemenata i sustava za mrežnu pohranu i dijeljenje podataka te platformi za Virtualizaciju, do protokola i sustava za redundanciju te sustava visoke dostupnosti (HA).