WebDev – IIS et POUND – installation et configuration d’un répartiteur de charge (load balancer) comme serveur de proxy pour IIS

Dans le cadre d’un grand développement WebDev nous devrions prendre en compte la disponibilité  de serveurs et faire une (fausse)(*) répartition de charge entre une batterie de serveurs IIS, tous installés derrière un serveur frontal. Avantages sont multiples :

-Sécurité

-Disponibilité de serveurs

* fausse répartition de charge car la solution choisie n’interroge pas les serveurs IIS pour voir leur état de charge. Il s’agit plutôt d’un calcul dependant de la priorité que nous avons donnée à un serveur de la batterie

Sécurité car aucun de serveurs IIS n’est directement exposé sur l’internet, ils se trouvent dans le LAN. Il n’y a donc que le serveur reverse proxy qui est exposé du côté de WAN. Dans notre cas nous avons fait le choix de serveur pound installé sur une machine Ubuntu qui ne tourne aucun service mis à part le SSH pour l’administration à distance et Pound qui écoute les portes 80 et 443 (http et https) (voir photo ci-dessous)

 

Au moment où la requête d’un client arrive sur notre adresse web (ici pour l’exemple monserveur.local), en réalité elle arrive sur le serveur Pound qui selon les règles prédéfinies dans son fichier de config (/etc/pound/pound.cfg) nous renvoie vers IIS_1, IIS_2 ou IIS_3 (IIS_1, IIS_2,IIS_3 étant les noms de serveurs qui hébergent les sites WebDev). En plus, le concept de Pound est fait de telle manière qu’aucun accès disque n’est fait pendant son exécution. Seule lecture du fichier config et du certificat est faite au moment de son démarrage – aucune altération de l’OS n’est possible.

Disponibilité car au lieu d’avoir un seul serveur IIS nous en avons 3 (ou plus). Dans le cas où un serveur IIS cesse de fonctionner car l’alimentation du serveur ne fonctionne pas ou mises à jour de Windows empêchent IIS de démarrer car il y a une incompatibilité ou tout simplement car nous devons faire une mise à jour du site avec la nouvelle version du projet.
Il nous est alors très simple d’isoler un serveur à la fois pour effectuer les procédures de maintenance. Pour ce faire nous pouvons juste isoler le serveur en question du fichier de config pour que plus aucune requête ne lui soit adressé tout en le gardant en ligne et disponible pour tâches administratives. Comme il reste encore 2 serveurs aucun client n’est bloqué et site est toujours affiché.

 

Pour que ce système soit opérationnel, il faut veiller à ce que la Base de données ne soit pas HyperFile classic mais bien une vraie base de données client-serveur. Pourquoi ? Parce que si l’emplacement de la DB est local à un serveur donné, toute modification ne sera pas visible par autre serveurs. Il en va de même pour toutes les images du site. Pour éviter de devoir répliquer images sur chaque serveur lors de modification du site, il vaut mieux de les avoir soit dans la base de données soit dans un dossier partagé sur le réseau. Vous pouvez commencer l’implémentation de la solution à partir du moment que vous trouverez une solution à cette problématique.

Ici, nous n’allons pas nous concentrer sur la configuration du moteur de déploiement WebDev sous IIS, l’aide en ligne de Pc Soft explique cela très bien.

Commençons tout d’abord par l’installation de Pound :

Sous ubuntu cela se fait avec la commande suivante apt-get install pound

 

Pound ne démarre pas automatiquement car le fichier pound qui se trouve dans /etc/default/ n’est pas modifié. Il faut éditer le fichier avec vi ou vim et changer le paramètre startup=0 en startup=1.

Pour les novices dans le monde de Linux, quand vous installez votre distribution linux préféré, veuillez à ne pas installer apache ou autre serveur http car le port 80 sera utilisé par pound. Si apache est installé, il écoutera le port 80 et empêchera pound de fonctionner. Si vous voulez quand même avoir apache sur la même machine, il faudra lui dire d’écouter un autre port.

Le fichier principal de configuration de pound se trouve dans /etc/pound/pound.cfg.

Voici une configuration basique qui prends en compte 3 serveurs IIS et leurs assigne une priorité.

User            « www-data »

Group           « www-data »

LogLevel        1

Alive           10

Client          30

Timeout         15

Control « /var/run/pound/poundctl.socket »

#Ici on définit le port sur lequel Pound écoute (équivalent à 127.0.0.1)

ListenHTTP

Address 10.0.0.100

Port    80

#Ici on définis  que Pound prends en charge que POST, GET et HEAD

xHTTP           0

Service

#c’est ici qu’on définis les serveurs dit backend (IIS_1, IIS_2, IIS_3)

BackEnd

Address 10.0.0.30

Port    80

#plus le numéro de priorité est grand plus il est important dans le choix d’un serveur de backend

Priority 8

End

BackEnd

Address 10.0.0.31

Port    80

Priority 5

End

BackEnd

Address 10.0.0.32

Port    80

Priority 3

End

 

Session

#Webdev suis les informations sur sessions par apport à l’adresse IP

Type IP

TTL 600

End

End

End

Après avoir sauvegardé le fichier de config il faudra démarrer pound

/etc/init.d/pound start (ou /restart)

Voilà, ça devrai fonctionner, pour vérifier ouvrez votre navigateur et mettez l’adresse IP de Pound et normalement vous devriez avoir un de serveurs IIS (1,2 ou 3)

 

 

Ce contenu a été publié dans Webdev, avec comme mot(s)-clé(s) , , , , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *