Configuració de l'equilibri de càrrega de servidors web mitjançant POUND a RHEL/CentOS


POUND és un programa d'equilibri de càrrega desenvolupat per ITSECURITY Company. És una eina de proxy inversa de codi obert lleuger que es pot utilitzar com a equilibrador de càrrega del servidor web per distribuir la càrrega entre diversos servidors. Hi ha diversos avantatges que POUND ofereix a l'usuari final que són molt còmodes i fan la feina correctament.

  1. Admet amfitrions virtuals.
  2. Configurable.
  3. Quan un servidor backend falla o es recupera d'un error, el detecta automàticament i basa les seves decisions d'equilibri de càrrega en funció d'això.
  4. Rebutja les sol·licituds incorrectes.
  5. No s'especifica cap navegador ni servidors web.

Fem una ullada a com es pot fer aquest pirateig.

En primer lloc, necessitareu un escenari per entendre millor com fer-ho. Per tant, utilitzaré un escenari en què hi ha dos servidors web i un servidor de passarel·la que necessita equilibrar les sol·licituds que arriben al servidor de passarel·la als servidors web.

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

Pas 1: instal·leu Pound Load Balancer al servidor Gateway

1. La manera més senzilla d'instal·lar Pound és utilitzar paquets RPM precompilats, podeu trobar RPM per a distribucions basades en RedHat a:

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

Alternativament, Pound es pot instal·lar fàcilment des del dipòsit EPEL, tal com es mostra a continuació.

# yum install epel-release
# yum install Pound

Després d'instal·lar Pound, podeu verificar si està instal·lat emetent aquesta ordre.

# rpm –qa |grep Pound

2. En segon lloc, necessiteu dos servidors web per equilibrar la càrrega i assegurar-vos que teniu identificadors clars per provar que la configuració de lliura funciona bé.

Aquí tinc dos servidors amb adreces IP 172.16.1.204 i 192.168.1.161.

Per facilitar-ne l'ús, he creat Python SimpleHTTPServer per crear un servidor web instantani als dos servidors. Llegiu sobre Python SimpleHTTPServer

En el meu escenari, tinc el meu servidor web01 funcionant al 172.16.1.204 a través del port 8888 i el servidor web02 a 192.168.1.161 a través del port 5555.

Pas 2: configureu l'equilibrador de càrrega de lliura

3. Ara és el moment de fer les configuracions. Un cop hàgiu instal·lat el pound amb èxit, crea el fitxer de configuració del pound a /etc, és a dir, pound.cfg.

Hem d'editar els detalls del servidor i del backend per tal d'equilibrar la càrrega entre els servidors web. Aneu a /etc i obriu el fitxer pound.cfg per editar-lo.

# vi /etc/pound.cfg

Feu els canvis tal com es suggereix a continuació.

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

Així és com es veu el meu fitxer pound.cfg.

Sota les etiquetes \ListenHTTP i \ListenHTTPS, heu d'introduir l'adreça IP del servidor que heu instal·lat POUND.

De manera predeterminada, un servidor gestiona les sol·licituds HTTP mitjançant el port 80 i les sol·licituds HTTPS a través del port 443. A l'etiqueta \Servei, podeu afegir qualsevol quantitat d'etiquetes secundàries anomenades \BackEnd. Les etiquetes BackEnd porten les adreces IP i els números de port en què s'executen els servidors web.

Ara deseu el fitxer després d'editar-lo correctament i reinicieu el servei POUND emetent una de les ordres següents.

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

4. Ara toca comprovar. Obriu dos navegadors web per comprovar si les nostres configuracions funcionen bé. A la barra d'adreces, escriviu l'adreça IP de la vostra passarel·la POUND i mireu què apareix.

La primera sol·licitud hauria de carregar el primer servidor web01 i la segona sol·licitud de l'altre navegador web hauria de carregar el segon servidor web02.

A més, penseu en un escenari com si teniu dos servidors web per equilibrar la càrrega i el rendiment d'un servidor és bo i el rendiment d'un altre no és tan bo.

Per tant, a l'hora d'equilibrar la càrrega entre ells, haureu de considerar en quin servidor heu de posar més pes. Òbviament per al servidor amb bones especificacions de rendiment.

Per equilibrar la càrrega així, només heu d'afegir un únic paràmetre dins del fitxer pound.cfg. Fem-hi una ullada.

Think server 192.168.1.161:5555 és el millor servidor. Aleshores, heu de posar més flux de peticions a aquest servidor. A l'etiqueta \BackEnd que està configurada per al servidor 192.168.1.161, afegiu el paràmetre \Prioritat abans de l'etiqueta End.

Mireu l'exemple següent.

L'interval que podem utilitzar per al paràmetre \Prioritat està entre 1 i 9. Si no el definim, s'assignarà el valor per defecte de 5.

Aleshores la càrrega s'equilibrarà per igual. Si definim el número de prioritat, POUND carregarà el servidor amb un número de prioritat més alt amb més freqüència. Per tant, en aquest cas, 192.168.1.161:5555 es carregarà amb més freqüència que el servidor 172.16.1.204:8888.

Pas 3: planificar avaries d'emergència

Etiqueta d'emergència: aquesta etiqueta s'utilitza per carregar un servidor en cas que tots els servidors de fons estiguin morts. Podeu afegir-lo abans de l'última etiqueta de finalització de pound.cfg de la següent manera.

“Emergency
           Address 192.168.5.10
           Port        8080
   End”

6. POUND sempre fa un seguiment de quins servidors backend estan vius i quins no. Podem definir al cap de quants segons POUND hauria de comprovar els servidors de fons afegint el paràmetre \Alive a pound.cfg.

Podeu utilitzar el paràmetre com a \Alive 30 per establir-lo en 30 segons. Pound desactivarà temporalment els servidors de fons que no responen. Quan diem que no respon, és possible que el servidor estigui mort o no pugui establir una connexió en aquest moment.

POUND comprovarà el servidor backend desactivat després de cada període de temps que hàgiu definit al fitxer pound.cfg per si el servidor podria establir una connexió, POUND pot tornar a treballar amb el servidor.

7. El dimoni POUND serà gestionat per l'ordre poundctl. En tenir-ho, no necessitem editar el fitxer pound.cfg i podem emetre Listner Server, servidors BackEnd i sessions, etc. mitjançant una sola ordre.

Syntax: poundctl -c /path/to/socket [-L/-l] [-S/-s] [-B/-b] [-N/-n] [-H] [-X]

  1. -c defineix el camí al vostre sòcol.
  2. -L/-l defineix l'oient de la vostra arquitectura.
  3. -S/-s defineix el servei.
  4. -B/-b defineix els servidors de fons.

Consulteu les pàgines man de poundctl per obtenir més informació.

Espero que gaudiu d'aquest truc i descobriu més opcions al respecte. No dubteu a comentar a continuació per a qualsevol suggeriment i idea. Mantingueu-vos connectat amb Tecmint per obtenir les últimes i útils instruccions.