Postavljanje balansiranja opterećenja web poslužitelja pomoću 'POUND' na RHEL/CentOS


POUND je program za uravnoteženje opterećenja koji je razvila tvrtka ITSECURITY. To je lagani reverzni proxy alat otvorenog koda koji se može koristiti kao balanser opterećenja web-poslužitelja za raspodjelu opterećenja između nekoliko poslužitelja. Postoji nekoliko prednosti koje POUND daje krajnjem korisniku, a koje su vrlo praktične i dobro obavljaju posao.

  1. Podržava virtualne hostove.
  2. Podesiv.
  3. Kada pozadinski poslužitelj padne ili se oporavi od kvara, on to automatski detektira i na tome temelji svoje odluke o uravnoteženju opterećenja.
  4. Odbija netočne zahtjeve.
  5. Nema navedenog preglednika ili web poslužitelja.

Pogledajmo kako se ovo hakiranje može izvesti.

Prije svega trebat će vam scenarij za bolje razumijevanje kako to učiniti. Stoga ću upotrijebiti scenarij u kojem postoje dva web-poslužitelja i jedan pristupni poslužitelj koji treba uravnotežiti zahtjeve koji dolaze s pristupnog poslužitelja na web-poslužitelje.


Pound Gateway Server : 172.16.1.222
Web Server 01 : 172.16.1.204
Web Server 02 : 192.168.1.161

Korak 1: Instalirajte Pound Load Balancer na pristupni poslužitelj

1. Najlakši način da instalirate Pound je korištenje unaprijed kompiliranih RPM paketa, RPM-ove za distribucije temeljene na RedHatu možete pronaći na:

  1. http://www.invoca.ch/pub/packages/pound/

Alternativno, Pound se može jednostavno instalirati iz EPEL repozitorija kao što je prikazano u nastavku.


yum install epel-release
yum install Pound

Nakon instaliranja Pounda, možete provjeriti je li instaliran izdavanjem ove naredbe.


rpm –qa |grep Pound

2. Kao drugo, potrebna su vam dva web-poslužitelja za ravnotežu opterećenja i osiguravanje da imate jasne identifikatore kako biste testirali kako konfiguracija funte radi dobro.

Ovdje imam dva poslužitelja s IP adresama 172.16.1.204 i 192.168.1.161.

Radi lakšeg korištenja, kreirao sam python SimpleHTTPServer za stvaranje instant web poslužitelja na oba poslužitelja. Pročitajte o python SimpleHTTPServeru

U mom scenariju, moj webserver01 radi na 172.16.1.204 preko porta 8888 i webserver02 radi na 192.168.1.161 kroz priključak 5555.

Korak 2: Konfigurirajte Pound Load Balancer

3. Sada je vrijeme da izvršite konfiguracije. Nakon što ste uspješno instalirali pound, on stvara pound-ovu konfiguracijsku datoteku u /etc, naime pound.cfg.

Moramo urediti detalje poslužitelja i pozadine kako bismo uravnotežili opterećenje između web poslužitelja. Idite na /etc i otvorite datoteku pound.cfg za uređivanje.


vi /etc/pound.cfg

Napravite promjene kako je predloženo u nastavku.


ListenHTTP
    Address 172.16.1.222
    Port 80
End

ListenHTTPS
    Address 172.16.1.222
    Port    443
    Cert    "/etc/pki/tls/certs/pound.pem"
End

Service
    BackEnd
        Address 172.16.1.204
        Port    8888
    End

    BackEnd
        Address 192.168.1.161
        Port    5555
    End
End

Ovako izgleda moja datoteka pound.cfg.

Pod oznakama “ListenHTTP ” i “ListenHTTPS ” morate unijeti IP adresu poslužitelja na koji ste instalirali POUND.

Prema zadanim postavkama poslužitelj obrađuje HTTP zahtjeve preko porta 80 i HTTPS zahtjeve preko porta 443. Ispod oznake “Service” možete dodati bilo koju količinu podoznaka pod nazivom “BackEnd”. BackEnd oznake nose IP adrese i brojeve portova na kojima rade web poslužitelji.

Sada spremite datoteku nakon što ste je ispravno uredili i ponovno pokrenite uslugu POUND izdavanjem jedne od naredbi u nastavku.


/etc/init.d/pound restart 
OR
service pound restart
OR
systemctl restart pound.service

4. Sada je vrijeme za provjeru. Otvorite dva web preglednika da provjerite rade li naše konfiguracije dobro. U adresnu traku upišite IP adresu vašeg POUND pristupnika i pogledajte što se pojavljuje.

Prvi zahtjev bi trebao učitati prvi webserver01, a drugi zahtjev iz drugog web preglednika trebao bi učitati drugi webserver02.

Nadalje, razmislite o scenariju kao da imate dva web-poslužitelja za ravnotežu opterećenja i izvedba jednog poslužitelja je dobra, a izvedba drugog nije tako dobra.

Dakle, kada balansirate opterećenje između njih, morat ćete razmotriti kojem poslužitelju morate staviti veću težinu. Očito za poslužitelj s dobrim performansama.

Da biste tako uravnotežili opterećenje, samo morate dodati jedan parametar unutar pound.cfg datoteke. Pogledajmo ga.

Mislim da je poslužitelj 192.168.1.161:5555 bolji poslužitelj. Tada morate postaviti više zahtjeva na taj poslužitelj. Pod oznakom “BackEnd” koja je konfigurirana za poslužitelj 192.168.1.161 dodajte parametar “Prioritet” prije oznake End.

Pogledajte donji primjer.

Raspon koji možemo koristiti za parametar “Prioritet” je između 1-9. Ako ga ne definiramo, bit će dodijeljena zadana vrijednost 5.

Tada će opterećenje biti jednako uravnoteženo. Ako definiramo broj prioriteta, POUND će češće učitavati poslužitelj s brojem višeg prioriteta. Dakle, u ovom slučaju, 192.168.1.161:5555 će se učitavati češće nego poslužitelj 172.16.1.204:8888.

Korak 3: Planiranje hitnih kvarova

Oznaka za hitne slučajeve: Ova oznaka se koristi za učitavanje poslužitelja u slučaju da su svi stražnji poslužitelji mrtvi. Možete ga dodati prije posljednje završne oznake pound.cfg na sljedeći način.


“Emergency
           Address 192.168.5.10
           Port        8080
   End”

6. POUND uvijek prati koji su pozadinski poslužitelji živi, a koji nisu. Možemo definirati nakon koliko sekundi POUND treba provjeriti pozadinske poslužitelje dodavanjem parametra “Alive” u pound.cfg.

Parametar možete koristiti kao “Alive 30” za postavljanje na 30 sekundi. Pound će privremeno onemogućiti pozadinske poslužitelje koji ne odgovaraju. Kada kažemo da server ne odgovara možda je mrtav ili ne može uspostaviti vezu u tom trenutku.

POUND će provjeriti onemogućeni pozadinski poslužitelj nakon svakog vremenskog razdoblja koje ste definirali u datoteci pound.cfg u slučaju da ako poslužitelj uspije uspostaviti vezu, tada se POUND može vratiti na rad s poslužiteljem.

7. POUND demonom upravljat će naredba poundctl. Imajući to, ne moramo uređivati datoteku pound.cfg i možemo izdati Listner poslužitelj, BackEnd poslužitelje i sesije itd. putem jednu naredbu.


Syntax: poundctl -c /path/to/socket [-L/-l] [-S/-s] [-B/-b] [-N/-n] [-H] [-X]
  1. -c definira put do vaše utičnice.
  2. -L/-l definira slušatelja vaše arhitekture.
  3. -S/-s definira uslugu.
  4. -B/-b definira pozadinske poslužitelje.

Pogledajte poundctl man stranice za više informacija.

Nadamo se da ćete uživati u ovom hacku i otkriti više opcija u vezi s tim. Slobodno komentirajte ispod za sve prijedloge i ideje. Ostanite povezani s Tecmintom za praktične i najnovije upute.

Pročitajte također: Instaliranje XR Crossroads Load Balancera za web poslužitelje