Recherche de site Web

Configuration de l'équilibrage de charge des serveurs Web à l'aide de « POUND » sur RHEL/CentOS


POUND est un programme d'équilibrage de charge développé par la société ITSECURITY. Il s'agit d'un outil de proxy inverse open source léger qui peut être utilisé comme équilibreur de charge de serveur Web pour répartir la charge entre plusieurs serveurs. POUND offre plusieurs avantages à l'utilisateur final, qui sont très pratiques et font correctement le travail.

  1. Prend en charge les hôtes virtuels.
  2. Configurable.
  3. Lorsqu'un serveur backend tombe en panne ou est récupéré après une panne, il le détecte automatiquement et base ses décisions d'équilibrage de charge en fonction de cela.
  4. Il rejette les demandes incorrectes.
  5. Aucun navigateur ou serveur Web spécifié.

Voyons comment réaliser ce hack.

Tout d’abord, vous aurez besoin d’un scénario pour mieux comprendre comment y parvenir. Je vais donc utiliser un scénario dans lequel il y a deux serveurs Web et un serveur de passerelle qui doivent équilibrer les requêtes provenant du serveur de passerelle vers les serveurs Web.


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

Étape 1 : Installez Pound Load Balancer sur le serveur de passerelle

1. La manière la plus simple d'installer Pound consiste à utiliser des packages RPM précompilés. Vous pouvez trouver des RPM pour les distributions basées sur RedHat sur :

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

Alternativement, Pound peut être facilement installé à partir du référentiel EPEL, comme indiqué ci-dessous.


yum install epel-release
yum install Pound

Une fois Pound installé, vous pouvez vérifier s'il est installé en exécutant cette commande.


rpm –qa |grep Pound

2. Deuxièmement, vous avez besoin de deux serveurs Web pour équilibrer la charge et vous assurer que vous disposez d'identifiants clairs afin de tester le bon fonctionnement de la configuration du livre.

Ici, j'ai deux serveurs portant les adresses IP 172.16.1.204 et 192.168.1.161.

Pour faciliter l'utilisation, j'ai créé python SimpleHTTPServer pour créer un serveur Web instantané sur les deux serveurs. En savoir plus sur Python SimpleHTTPServer

Dans mon scénario, mon webserver01 s'exécute sur 172.16.1.204 via le port 8888 et mon webserver02 s'exécute sur 192.168.1.161 via le port 5555.

Étape 2 : Configurer l'équilibreur de charge Pound

3. Il est maintenant temps de procéder aux configurations. Une fois que vous avez installé Pound avec succès, il crée le fichier de configuration de Pound dans /etc, à savoir pound.cfg.

Nous devons modifier les détails du serveur et du backend afin d'équilibrer la charge entre les serveurs Web. Accédez à /etc et ouvrez le fichier pound.cfg pour le modifier.


vi /etc/pound.cfg

Apportez les modifications comme suggéré ci-dessous.


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

Voici à quoi ressemble mon fichier pound.cfg.

Sous les balises « ListenHTTP » et « ListenHTTPS », vous devez saisir l'adresse IP du serveur sur lequel vous avez installé POUND.

Par défaut, un serveur gère les requêtes HTTP via le port 80 et les requêtes HTTPS via le port 443. Sous la balise « Service », vous pouvez ajouter n'importe quel nombre de sous-balises appelées « BackEnd ». Les balises BackEnd portent les adresses IP et les numéros de port sur lesquels les serveurs Web s'exécutent.

Enregistrez maintenant le fichier après l'avoir modifié correctement et redémarrez le service POUND en exécutant l'une des commandes ci-dessous.


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

4. Il est maintenant temps de vérifier. Ouvrez deux navigateurs Web pour vérifier si nos configurations fonctionnent correctement. Dans la barre d'adresse, saisissez l'adresse IP de votre passerelle POUND et voyez ce qui apparaît.

La première requête doit charger le premier webserver01 et la deuxième requête de l'autre navigateur Web doit charger le deuxième webserver02.

De plus, pensez à un scénario comme si vous aviez deux serveurs Web à équilibrer la charge et que les performances de l'un des serveurs sont bonnes et que les performances de l'autre ne sont pas si bonnes.

Ainsi, lors de l’équilibrage de charge entre eux, vous devrez déterminer sur quel serveur vous devez accorder plus de poids. Évidemment pour le serveur avec de bonnes spécifications de performances.

Pour équilibrer la charge ainsi, il vous suffit d'ajouter un seul paramètre dans le fichier pound.cfg. Jetons-y un coup d'oeil.

Pensez que le serveur 192.168.1.161:5555 est le meilleur serveur. Ensuite, vous devez envoyer davantage de requêtes vers ce serveur. Sous la balise « BackEnd » configurée pour le serveur 192.168.1.161, ajoutez le paramètre « Priority » avant la balise de fin.

Regardez l'exemple ci-dessous.

La plage que nous pouvons utiliser pour le paramètre « Priorité » est comprise entre 1 et 9. Si nous ne la définissons pas, la valeur par défaut de 5 sera attribuée.

La charge sera alors équilibrée de manière égale. Si nous définissons le numéro de priorité, POUND chargera plus souvent le serveur avec un numéro de priorité plus élevé. Donc dans ce cas, 192.168.1.161:5555 sera chargé plus souvent que le serveur 172.16.1.204:8888.

Étape 3 : Planifier les pannes d’urgence

Balise d'urgence : cette balise est utilisée pour charger un serveur au cas où tous les serveurs principaux seraient morts. Vous pouvez l'ajouter avant la dernière balise de fin de pound.cfg comme suit.


“Emergency
           Address 192.168.5.10
           Port        8080
   End”

6. POUND garde toujours une trace des serveurs backend qui sont actifs et de ceux qui ne le sont pas. Nous pouvons définir après combien de secondes POUND doit vérifier les serveurs backend en ajoutant le paramètre « Alive » dans pound.cfg.

Vous pouvez utiliser le paramètre comme « Alive 30 » pour le définir sur 30 secondes. Pound désactivera temporairement les serveurs backend qui ne répondent pas. Lorsque nous disons que le serveur ne répond pas, il est possible qu'il soit mort ou qu'il ne puisse pas établir de connexion à ce moment-là.

POUND vérifiera le serveur principal désactivé après chaque période que vous avez définie dans le fichier pound.cfg au cas où si le serveur pouvait établir une connexion, POUND pourrait alors recommencer à travailler avec le serveur.

7. Le démon POUND sera géré par la commande poundctl. Grâce à cela, nous n'avons pas besoin de modifier le fichier pound.cfg et nous pouvons émettre du Listner Server, des serveurs et des sessions BackEnd, etc. via une seule commande.


Syntax: poundctl -c /path/to/socket [-L/-l] [-S/-s] [-B/-b] [-N/-n] [-H] [-X]
  1. -c définit le chemin d'accès à votre socket.
  2. -L/-l définit l'écouteur de votre architecture.
  3. -S/-s définit le service.
  4. -B/-b définit les serveurs backend.

Consultez les pages de manuel poundctl pour plus d'informations.

J'espère que vous apprécierez ce hack et découvrirez plus d'options à ce sujet. N'hésitez pas à commenter ci-dessous pour toute suggestion et idée. Restez connecté avec Tecmint pour des conseils pratiques et récents.

Lire aussi : Installation de XR Crossroads Load Balancer pour les serveurs Web