Postavljanje balansiranja opterećenja web servera pomoću 'POUND' na RHEL/CentOS


POUND je program za balansiranje opterećenja razvijen od strane kompanije ITSECURITY. To je lagani alat otvorenog koda za reverzni proxy koji se može koristiti kao balansiranje opterećenja web servera za raspodjelu opterećenja između nekoliko servera. Postoji nekoliko prednosti koje POUND daje krajnjem korisniku koje su vrlo zgodne i obavljaju posao kako treba.

  1. Podržava virtuelne hostove.
  2. Configurable.
  3. Kada je backend server otkazan ili se oporavi od kvara, on ga automatski detektuje i na osnovu toga zasniva svoje odluke o balansiranju opterećenja.
  4. Odbija netačne zahtjeve.
  5. Nema specificiranog pretraživača ili web servera.

Hajde da pogledamo kako se ovaj hak može izvesti.

Prije svega, trebat će vam scenarij za bolje razumijevanje o tome kako to učiniti. Zato ću koristiti scenario u kojem postoje dva web servera i jedan gateway server koji treba da izbalansira zahtjeve koji dolaze od gateway servera do web servera.


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 Gateway Server

1. Najlakši način za instaliranje Pounda je korištenje unaprijed kompajliranih RPM paketa, možete pronaći RPM-ove za RedHat bazirane distribucije na:

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

Alternativno, Pound se može lako instalirati iz EPEL repozitorija kao što je prikazano ispod.


yum install epel-release
yum install Pound

Nakon što je Pound instaliran, možete provjeriti da li je instaliran izdavanjem ove naredbe.


rpm –qa |grep Pound

2. Drugo, potrebna su vam dva web-servera da uravnotežite opterećenje i osigurate da imate jasne identifikatore kako biste testirali kako konfiguracija funte radi dobro.

Ovdje imam dva servera koji nose IP adrese 172.16.1.204 i 192.168.1.161.

Radi lakšeg korišćenja, kreirao sam python SimpleHTTPServer za kreiranje instant web servera na oba servera. Pročitajte o python SimpleHTTPServeru

U mom scenariju, moj webserver01 radi na 172.16.1.204 kroz port 8888 i webserver02 radi na >192.168.1.161 kroz port 5555.

Korak 2: Konfigurirajte Pound Load Balancer

3. Sada je vrijeme da izvršite konfiguracije. Nakon što uspješno instalirate pound, on kreira konfiguracijsku datoteku za funtu u /etc, odnosno pound.cfg.

Moramo urediti detalje o serveru i backendu kako bismo uravnotežili opterećenje među web serverima. Idite na /etc i otvorite datoteku pound.cfg za uređivanje.


vi /etc/pound.cfg

Učinite promjene kao što 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 moj pound.cfg fajl.

Pod oznakama “ListenHTTP ” i “ListenHTTPS ” morate unijeti IP adresu servera na kojem ste instalirali POUND.

Po defaultu server obrađuje HTTP zahtjeve preko porta 80 i HTTPS zahtjeve preko porta 443. Pod oznakom “Service ” možete dodati bilo koju količinu podoznaka pod nazivom “BackEnd”. BackEnd oznake nose IP adrese i brojeve portova na kojima rade web serveri.

Sada sačuvajte datoteku nakon što ste je ispravno uredili i ponovo pokrenite uslugu POUND izdavanjem jedne od naredbi ispod.


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

4. Sada je vrijeme za provjeru. Otvorite dva web pretraživača da provjerite rade li naše konfiguracije dobro. U adresnu traku upišite IP adresu vašeg POUND gatewaya i pogledajte šta će se pojaviti.

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

Nadalje, razmislite o scenariju kao što je ako imate dva web servera za balansiranje opterećenja i performanse jednog servera su dobre, a performanse drugih nisu tako dobre.

Dakle, kada balansirate opterećenje među njima, morat ćete razmotriti za koji server morate staviti više težine. Očigledno za server sa dobrim performansama.

Da biste na taj način izbalansirali opterećenje, samo morate dodati jedan parametar unutar datoteke pound.cfg. Hajde da to pogledamo.

Think server 192.168.1.161:5555 je bolji server. Zatim morate staviti više zahtjeva na taj server. Ispod oznake “BackEnd ” koja je konfigurirana za 192.168.1.161 server, dodajte parametar “Priority ” prije oznake End.

Pogledajte primjer ispod.

Raspon koji možemo koristiti za parametar “Priority” 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 prioritetni broj, POUND će češće učitavati server s višim prioritetnim brojem. Dakle, u ovom slučaju, 192.168.1.161:5555 će se učitavati češće nego server 172.16.1.204:8888.

Korak 3: Planiranje hitnih kvarova

Emergency Tag: Ova oznaka se koristi za učitavanje servera u slučaju da su svi back end serveri 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 pozadinski serveri su aktivni, a koji nisu. Možemo definirati nakon koliko sekundi POUND treba provjeriti backend servere dodavanjem parametra “Alive ” u pound.cfg.

Možete koristiti parametar kao “Živ 30 ” da ga postavite na 30 sekundi. Pound će privremeno onemogućiti backend servere koji ne reaguju. 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 backend server nakon svakog vremenskog perioda koji ste definirali u datoteci pound.cfg u slučaju da server može uspostaviti vezu, onda se POUND može vratiti na rad sa serverom.

7. POUND demonom će upravljati naredba poundctl. Ako to imamo, ne moramo uređivati datoteku pound.cfg i možemo izdati Listner server, BackEnd servere i sesije itd. putem jedna komanda.


Syntax: poundctl -c /path/to/socket [-L/-l] [-S/-s] [-B/-b] [-N/-n] [-H] [-X]
  1. -c definira putanju do vašeg soketa.
  2. -L/-l definira slušatelja vaše arhitekture.
  3. -S/-s definira uslugu.
  4. -B/-b definira backend servere.

Pogledajte poundctl man stranice za više informacija.

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

Pročitajte također: Instaliranje XR Crossroads Load Balancer za web servere