Previous Up

7  Ferme de serveurs Web

Il vous est demandé d’implanter une architecture d’équilibrage de charge pour un site Web.

7.1  Architecture générale de la ferme

Chaque binôme doit installer une seconde machine virtuelle Xen qui hébergera un serveur Web par binôme. Ainsi chaque binôme pourra disposer de plusieurs serveurs Web proposant exactement le même site sur plusieurs machines différentes. Ces serveurs Web ne seront pas directement disponibles d’Internet mais au travers d’un équilibreur de charge tournant sur leur machine virtuelle principale.

Pour la connexion internes entre les machines virtuelles utilisez le VLAN des machines de projet. Sur les serveurs capbreton et chassiron ce VLAN est accessible via le commutateur virtuel bridgeStudents. Utilisez un réseau IPv4 quelconque sur ce VLAN, pourquoi pas 192.168.42.0/24 ? Pensez à ajouter simplement une seconde interface sur le VLAN interne à vos machines virtuelles principales.

Mettez aussi une mascarade en place sur votre machine principale pour permettre à votre machine secondaire d’avoir un accès à Internet.

Vous allez configurer vos serveurs Web internes avec le système ansible à partir de votre machine virtuelle principale. Commencez donc par installer ansible sur cette machine. Générez vos clefs et propagez la clef publique sur l’ensemble des serveurs Web internes (sans supprimer celles des autres groupes). Créez un inventaire dans /etc/ansible/hosts en séparant l’ensemble des serveurs internes et le votre propre. Testez votre configuration en lançant la commande lsb_release -d avec l’utilitaire ansible sur toutes les machines de l’inventaire.

Créez un rôle ansible maison pour configurer /etc/motd et la configuration NTP complète (installation des paquetages et copie des fichiers de configuration) sur votre machine secondaire. Le serveur NTP de la plateforme informatique est ntp.plil.info.

7.2  Installation de docker

Il est demandé d’implanter les serveurs Web sur les machines virtuelles de la ferme de serveurs Web sous la forme de conteneurs docker.

Il vous est demandé d’effectuer cette installation du système docker en utilisant le système ansible à partir de votre machine virtuelle principale. N’hésistez pas à chercher un rôle adapté déjà existant :

Votre "playbook" ne doit installer docker que sur votre propre machine virtuelle secondaire.

7.3  Création de votre conteneur

En utilisant un dockerfile vous allez créer un conteneur basé sur le conteneur httpd. Votre conteneur doit intégrer tous les fichiers de votre site Web et démarrer apache2 automatiquement sur le port HTTP 80 classique.

Il est conseillé de créer ce conteneur sur votre machine virtuelle principale après installation de docker. Il est recommandé une installation manuelle à base de wget ou de curl sur l’URL get.docker.com.

Déployez un dépôt docker local sur votre machine secondaire en construisant un rôle ansible sur votre serveur principal.

Ajoutez votre conteneur à votre dépot local. Vous aurez à autoriser l’utilisation d’un dépot non sécurisé (HTTP et non HTTPS).

7.4  Configuration de vos serveurs internes

Créez un nouveau rôle ansible pour déployer votre conteneur Web sur tous les serveurs Web internes. Lors du lancement des conteneurs, utilisez un numéro de port alloué à votre binôme pour exposer le port 80 de votre conteneur.

Chacun des serveurs internes devra pouvoir utiliser un dépôt docker non sécurisé. Ajoutez à votre rôle la copie du fichier de configuration qui permet cela. En fin de tâche de copie déclenchez un gestionnaire (handler) pour relancer le service docker.

7.5  Equilibreur de charge

Ajoutez un serveur Web virtuel sur votre machine virtuelle principale. Vous devez donc ajouter un nouvel enregistrement de type CNAME dans votre DNS. Le second site Web doit se comporter à la fois comme un serveur mandataire inverse (reverse proxy) et comme un équilibreur de charge (load balancer).

Pour la fonction mandataire inverse, activez les modules Apache proxy et proxy_http. Dans le fichier de configuration du site vous devez ajouter des directives ProxyPass et ProxyPassReverse.

Pour la fonction équilibrage de charge, il faut activer les modules proxy_balancer et lbmethod_byrequests. Dans le fichier de configuration du site il faudra ajouter une balise Proxy listant les différents serveurs Web internes et lier cette balise aux directives de redirection (mandataire inverse).

Vous testerez le bon fonctionnement de votre architecture en utilisant le gestionnaire de répartition qui peut être intégré au serveur de redirection (module mod_status).


Previous Up