Ricerca nel sito web

Configurazione del bilanciamento del carico dei server Web utilizzando "POUND" su RHEL/CentOS


POUND è un programma di bilanciamento del carico sviluppato dalla società ITSECURITY. È uno strumento proxy inverso open source leggero che può essere utilizzato come bilanciatore del carico del server Web per distribuire il carico tra più server. Ci sono diversi vantaggi che POUND offre all'utente finale che sono molto convenienti e fanno bene il lavoro.

  1. Supporta host virtuali.
  2. Configurabile.
  3. Quando un server backend subisce un guasto o viene ripristinato da un guasto, lo rileva automaticamente e basa le sue decisioni di bilanciamento del carico su questo.
  4. Rifiuta le richieste errate.
  5. Nessun browser o server web specificato.

Diamo un'occhiata a come è possibile eseguire questo hack.

Prima di tutto avrai bisogno di uno scenario per comprendere meglio come farlo. Quindi utilizzerò uno scenario in cui ci sono due server web e un server gateway che deve bilanciare le richieste che arrivano dal server gateway ai server web.


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

Passaggio 1: installare Pound Load Balancer sul server gateway

1. Il modo più semplice per installare Pound è utilizzare pacchetti RPM precompilati. Puoi trovare RPM per distribuzioni basate su RedHat su:

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

In alternativa, Pound può essere facilmente installato dal repository EPEL come mostrato di seguito.


yum install epel-release
yum install Pound

Dopo aver installato Pound, puoi verificare se è installato emettendo questo comando.


rpm –qa |grep Pound

2. In secondo luogo, sono necessari due server web per bilanciare il carico e assicurarsi di avere identificatori chiari per verificare che la configurazione di pound funzioni correttamente.

Qui ho due server con indirizzi IP 172.16.1.204 e 192.168.1.161.

Per facilità d'uso, ho creato Python SimpleHTTPServer per creare un server web istantaneo su entrambi i server. Leggi informazioni su Python SimpleHTTPServer

Nel mio scenario, ho il mio webserver01 in esecuzione su 172.16.1.204 tramite la porta 8888 e webserver02 in esecuzione su 192.168.1.161 tramite la porta 5555.

Passaggio 2: configura il bilanciatore del carico Pound

3. Ora è il momento di completare le configurazioni. Una volta installato pound con successo, crea il file di configurazione di pound in /etc, vale a dire pound.cfg.

Dobbiamo modificare i dettagli del server e del backend per bilanciare il carico tra i server web. Vai su /etc e apri il file pound.cfg per la modifica.


vi /etc/pound.cfg

Apportare le modifiche come suggerito di seguito.


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

Ecco come appare il mio file pound.cfg.

Sotto i tag “ListenHTTP ” e “ListenHTTPS ”, devi inserire l'indirizzo IP del server su cui hai installato POUND.

Per impostazione predefinita, un server gestisce le richieste HTTP tramite la porta 80 e le richieste HTTPS tramite la porta 443. Sotto il tag "Servizio", puoi aggiungere qualsiasi numero di sottotag chiamati "BackEnd". I tag BackEnd riportano gli indirizzi IP e i numeri di porta su cui sono in esecuzione i server web.

Ora salva il file dopo averlo modificato correttamente e riavvia il servizio POUND emettendo uno dei comandi seguenti.


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

4. Ora è il momento di controllare. Apri due browser web per verificare se le nostre configurazioni funzionano correttamente. Nella barra degli indirizzi digita l'indirizzo IP del tuo gateway POUND e guarda cosa appare.

La prima richiesta dovrebbe caricare il primo webserver01 e la seconda richiesta dall'altro browser web dovrebbe caricare il secondo webserver02.

Inoltre, pensa a uno scenario come se avessi due server web per bilanciare il carico e le prestazioni di uno dei server siano buone e le prestazioni dell'altro non siano così buone.

Quindi, quando bilanciamo il carico tra di loro, dovrai considerare su quale server devi dare più peso. Ovviamente per il server con buone specifiche prestazionali.

Per bilanciare il carico in questo modo, devi solo aggiungere un singolo parametro all'interno del file pound.cfg. Diamo un'occhiata a questo.

Penso che il server 192.168.1.161:5555 sia il server migliore. Quindi è necessario inviare più richieste a quel server. Sotto il tag "BackEnd " configurato per il server 192.168.1.161, aggiungi il parametro "Priority" prima del tag End.

Guarda l'esempio qui sotto.

L'intervallo che possiamo utilizzare per il parametro "Priorità" è compreso tra 1-9. Se non lo definiamo, verrà assegnato il valore predefinito di 5.

Quindi il carico sarà bilanciato equamente. Se definiamo il numero di priorità, POUND caricherà più spesso il server con il numero di priorità più alto. Quindi, in questo caso, 192.168.1.161:5555 verrà caricato più spesso rispetto al server 172.16.1.204:8888.

Fase 3: Pianificazione dei guasti in caso di emergenza

Tag di emergenza: questo tag viene utilizzato per caricare un server nel caso in cui tutti i server back-end siano inattivi. Puoi aggiungerlo prima dell'ultimo tag di fine di pound.cfg come segue.


“Emergency
           Address 192.168.5.10
           Port        8080
   End”

6. POUND tiene sempre traccia di quali server backend sono attivi e quali no. Possiamo definire dopo quanti secondi POUND dovrebbe effettuare il checkout dei server backend aggiungendo il parametro "Alive " in pound.cfg.

Puoi utilizzare il parametro come "Alive 30 " per impostarlo su 30 secondi. Pound disabiliterà temporaneamente i server backend che non rispondono. Quando diciamo che non risponde, il server potrebbe essere morto o non essere in grado di stabilire una connessione in quel momento.

POUND controllerà il server backend disabilitato dopo ogni periodo di tempo definito nel file pound.cfg nel caso in cui il server possa stabilire una connessione, quindi POUND potrà tornare a funzionare con il server.

7. Il demone POUND sarà gestito dal comando poundctl. In questo modo non abbiamo bisogno di modificare il file pound.cfg e possiamo emettere Listner Server, server e sessioni BackEnd ecc. tramite un unico comando.


Syntax: poundctl -c /path/to/socket [-L/-l] [-S/-s] [-B/-b] [-N/-n] [-H] [-X]
  1. -c definisce il percorso del tuo socket.
  2. -L/-l definisce l'ascoltatore della tua architettura.
  3. -S/-s definisce il servizio.
  4. -B/-b definisce i server backend.

Per ulteriori informazioni, vedere le pagine man di poundctl.

Spero che questo trucco vi piaccia e che scopriate più opzioni a riguardo. Sentitevi liberi di commentare qui sotto per eventuali suggerimenti e idee. Rimani connesso con Tecmint per utili e aggiornate istruzioni.

Leggi anche: Installazione del bilanciatore di carico XR Crossroads per server Web