Zoeken op website

Webservers instellen Load Balancing met behulp van 'POUND' op RHEL/CentOS


POUND is een load-balancing-programma ontwikkeld door ITSECURITY Company. Het is een lichtgewicht open source reverse proxy-tool die kan worden gebruikt als load balancer voor webservers om de belasting over verschillende servers te verdelen. Er zijn verschillende voordelen die POUND de eindgebruiker biedt, die erg handig zijn en hun werk goed doen.

  1. Ondersteunt virtuele hosts.
  2. Configureerbaar.
  3. Wanneer een backend-server uitvalt of herstelt van een storing, wordt dit automatisch gedetecteerd en worden de beslissingen over de taakverdeling daarop gebaseerd.
  4. Het wijst onjuiste verzoeken af.
  5. Geen gespecificeerde browser of webservers.

Laten we eens kijken hoe we deze hack kunnen uitvoeren.

Allereerst heb je een scenario nodig om beter te begrijpen hoe je dit voor elkaar krijgt. Ik zal dus een scenario gebruiken waarin er twee webservers zijn en één gatewayserver die de verzoeken in evenwicht moet brengen, van de gatewayserver naar de webservers.


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

Stap 1: Installeer Pound Load Balancer op Gateway Server

1. De eenvoudigste manier om Pound te installeren is door gebruik te maken van vooraf gecompileerde RPM-pakketten. RPM's voor op RedHat gebaseerde distributies kunt u vinden op:

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

Als alternatief kan Pound eenvoudig worden geïnstalleerd vanuit de EPEL-repository, zoals hieronder weergegeven.


yum install epel-release
yum install Pound

Nadat Pound is geïnstalleerd, kunt u controleren of het is geïnstalleerd door deze opdracht te geven.


rpm –qa |grep Pound

2. Ten tweede heb je twee webservers nodig om de belasting te verdelen en ervoor te zorgen dat je duidelijke ID's hebt om te testen of de pond-configuratie goed werkt.

Hier heb ik twee servers met IP-adressen 172.16.1.204 en 192.168.1.161.

Voor gebruiksgemak heb ik Python SimpleHTTPServer gemaakt om op beide servers een instant webserver te creëren. Lees meer over Python SimpleHTTPServer

In mijn scenario laat ik mijn webserver01 draaien op 172.16.1.204 via poort 8888 en webserver02 draaien op >192.168.1.161 via poort 5555.

Stap 2: Configureer de Pound Load Balancer

3. Nu is het tijd om de configuraties uit te voeren. Zodra u pound succesvol hebt geïnstalleerd, wordt het configuratiebestand van het pound aangemaakt in /etc, namelijk pound.cfg.

We moeten de server- en backend-details bewerken om de belasting over de webservers te verdelen. Ga naar /etc en open het bestand pound.cfg om te bewerken.


vi /etc/pound.cfg

Breng de wijzigingen aan zoals hieronder wordt voorgesteld.


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

Zo ziet mijn pound.cfg-bestand eruit.

Onder de tags “ListenHTTP” en “ListenHTTPS” moet u het IP-adres invoeren van de server waarop u POUND hebt geïnstalleerd.

Standaard verwerkt een server HTTP-verzoeken via poort 80 en HTTPS-verzoeken via poort 443. Onder de tag 'Service' kunt u een willekeurig aantal subtags toevoegen, genaamd 'BackEnd'. BackEnd-tags bevatten de IP-adressen en de poortnummers waarop de webservers draaien.

Sla het bestand nu op nadat u het correct heeft bewerkt en start de POUND-service opnieuw door een van de onderstaande opdrachten te geven.


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

4. Nu is het tijd om het te controleren. Open twee webbrowsers om te controleren of onze configuraties goed werken. Typ in de adresbalk het IP-adres van uw POUND-gateway en kijk wat er verschijnt.

Het eerste verzoek moet de eerste webserver01 laden en het tweede verzoek van de andere webbrowser moet de tweede webserver02 laden.

Denk bovendien aan een scenario waarin u twee webservers heeft om de belasting te verdelen en de prestaties van een van de servers zijn goed en die van de andere niet zo goed.

Dus bij het verdelen van de belasting tussen deze servers, moet u overwegen op welke server u meer gewicht moet leggen. Uiteraard voor de server met goede prestatiespecificaties.

Om de belasting op deze manier in evenwicht te brengen, hoeft u slechts één enkele parameter toe te voegen in het bestand pound.cfg. Laten we er eens naar kijken.

Denk dat server 192.168.1.161:5555 de betere server is. Dan moet u meer verzoeken naar die server sturen. Onder de tag “BackEnd” die is geconfigureerd voor de 192.168.1.161 server, voegt u de parameter “Priority” toe vóór de End-tag.

Kijk naar onderstaand voorbeeld.

Het bereik dat we kunnen gebruiken voor de parameter 'Prioriteit' ligt tussen 1-9. Als we dit niet definiëren, wordt de standaardwaarde 5 toegewezen.

Dan wordt de belasting gelijkmatig verdeeld. Als we het prioriteitsnummer definiëren, zal POUND de server met een hoger prioriteitsnummer vaker laden. In dit geval wordt 192.168.1.161:5555 dus vaker geladen dan de server 172.16.1.204:8888.

Stap 3: Noodstoringen plannen

Noodtag: deze tag wordt gebruikt om een server te laden in het geval dat alle back-endservers dood zijn. U kunt deze als volgt vóór de laatste End-tag van pound.cfg toevoegen.


“Emergency
           Address 192.168.5.10
           Port        8080
   End”

6. POUND houdt altijd bij welke backend-servers actief zijn en welke niet. We kunnen definiëren na hoeveel seconden POUND de backend-servers moet afrekenen door de parameter “Alive” toe te voegen in pound.cfg.

U kunt de parameter 'Alive 30' gebruiken om deze in te stellen op 30 seconden. Pound zal de backend-servers die niet reageren tijdelijk uitschakelen. Als we zeggen dat de server niet reageert, is deze mogelijk dood of kan op dat moment geen verbinding tot stand worden gebracht.

POUND zal de uitgeschakelde backend-server controleren na elke tijdsperiode die u hebt gedefinieerd in het bestand pound.cfg, voor het geval de server een verbinding tot stand zou kunnen brengen, waarna POUND weer aan de slag kan met de server.

7. POUND-daemon wordt afgehandeld met het poundctl-commando. Hierdoor hoeven we het pound.cfg bestand niet te bewerken en kunnen we Listner Server, BackEnd servers en sessies enz. uitgeven via één enkel commando.


Syntax: poundctl -c /path/to/socket [-L/-l] [-S/-s] [-B/-b] [-N/-n] [-H] [-X]
  1. -c definieert het pad naar uw socket.
  2. -L/-l definieert de luisteraar van uw architectuur.
  3. -S/-s definieert de dienst.
  4. -B/-b definieert de backend-servers.

Zie poundctl manpagina's voor meer informatie.

Ik hoop dat je deze hack leuk vindt en meer opties hierover ontdekt. Reageer hieronder gerust voor eventuele suggesties en ideeën. Blijf verbonden met Tecmint voor handige en nieuwste How To’s.

Lees ook: XR Crossroads Load Balancer voor webservers installeren