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


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

  1. Supports virtual hosts.
  2. Configurable.
  3. When a backend server is failed or recovered from a failure, it detects it automatically and bases its load balancing decisions according to that.
  4. It rejects incorrect requests.
  5. No specified browser or webservers.

Diamo un'occhiata a come eseguire questo hack.

Prima di tutto avrai bisogno di uno scenario per una migliore comprensione di come farlo. Quindi userò 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 su Gateway Server

1. Il modo più semplice per installare Pound è utilizzare pacchetti RPM precompilati, puoi trovare gli RPM per le 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 disporre di identificatori chiari per verificare che la configurazione della sterlina 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 di 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: configurare Pound Load Balancer

3. Ora è il momento di completare le configurazioni. Dopo aver installato correttamente pound, crea il file di configurazione di pound in/etc, ovvero pound.cfg .

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

# vi /etc/pound.cfg

Apporta 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 che 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 "Service", è possibile aggiungere qualsiasi numero di sub tag chiamati "BackEnd". I tag BackEnd portano gli indirizzi IP ei 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 seguenti comandi.

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

4. Adesso è 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 una delle prestazioni del server è buona e quella dell'altro non è così buona.

Quindi, quando bilanci il carico tra di loro, dovrai considerare per quale server devi dare più peso. Ovviamente per il server con buone prestazioni.

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

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

Guarda l'esempio sotto.

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

Quindi il carico sarà bilanciato allo stesso modo. Se definiamo il numero di priorità, POUND caricherà il server con un numero di priorità più alto più spesso. Quindi, in questo caso, 192.168.1.161:5555 verrà caricato più spesso del server 172.16.1.204:8888.

Passaggio 3: pianificazione dei guasti 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 End di pound.cfg come segue.

“Emergency
           Address 192.168.5.10
           Port        8080
   End”

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

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

POUND controllerà il server di backend disabilitato dopo ogni periodo di tempo definito nel file pound.cfg nel caso in cui se il server potesse stabilire una connessione, POUND potrà tornare a lavorare 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, BackEnd server e sessioni ecc. Tramite un singolo comando.

Syntax: poundctl -c /path/to/socket [-L/-l] [-S/-s] [-B/-b] [-N/-n] [-H] [-X]
  1. -c defines path to your socket.
  2. -L / -l defines the listener of your architecture.
  3. -S / -s defines the service.
  4. -B / -b defines the backend servers.

Vedere le pagine man di poundctl per maggiori informazioni.

Spero che ti piaccia questo trucco e scopri altre opzioni al riguardo. Sentiti libero di commentare qui sotto per suggerimenti e idee. Resta in contatto con Tecmint per istruzioni pratiche e più recenti.