Redondance de serveurs WEB avec HAProxy
Mise en place du HAP
Activer le routage du serveur web afin de permettre de ping l’extérieur et de faire des MAJ.
Ajout de la configuration du front end et du back end check
sudo nano etc/haproxy/haproxy.cfg
Vient alors un problème : si le HAP tombe, plus aucun serveur n'est accessible. Solution : mise en place d'un heartbeat grâce à keepalived entre 2 HAP
aller sur le HAP et installer keepalived
apt-get installed keepalived
Il faut modifier les fichiers de configuration
nano /etc/sysctl.conf
au dessus de la ligne précédemment décommentée, on ajoute ceci
net.ipv4.ip_nonlocal_bind=1
net.ipv4.conf.all.arp_announce=1
net.ipv4.conf.all.arp_ignore=1
Faire une vérification
sysctl -p /etc/sysctl.conf
la commande doit retourner les 4 lignes que l’on vient de saisir
on récupère l’ip de notre machine qui deviendra l’adresse virtuelle commune à nos 2 HAP
ip c -linkshow
Lui donner .10 (.20 sera configuré sur la seconde machine)
Rendre le changement effectif :
service networking restart
Modifier le fichier de conf de keepalived
nano /etc/keepalived/keepalived.conf
Y saisir ceci :
vrrp_instance VI_1 {
virtual_router_id 100
state MASTER
priority 100
#contrôle du balancer inter-load toutes les 1 secondes
advert_int 1
interface ens18 #ici l'ID est propre à chaque machine, que l'on peut voir en faisant ip a
#authentification mutuelle entre les LB, identiques sur les deux membres
authentication {
auth_type PASS
auth_pass secret #le mot de passe voulu
}
# Interface réseau commune aux deux LB
virtual_ipaddress {
10.0.0.80/32 brd 10.0.0.255 scope global
}
}
Sauvegarder et appliquer
service keepalived restart
Vérifier que tout soit ok
service keepalived status
En listant à nouveau la configuration réseau de la machine ip a les nouvelles adresses doivent apparaître
on peut maintenant créer le second serveur web et lui attribuer 10.0.0.20
En cas de clonage de VM, il faudra modifier l'adresse de la seconde carte réseau également et redémarrer le service avec service networking restart
Modifier le fichier de conf de keepalived
nano /etc/keepalived/keepalived.conf
MASTER devient BACKUP (slave ne rentre pas dans la terminologie de conf)
100 devient 90
on a donc :
vrrp_instance VI_1 {
virtual_router_id 100
state BACKUP
priority 90
#contrôle du balancer inter-load toutes les 1 secondes
advert_int 1
interface ens18 #ici l'ID est propre à chaque machine, que l'on peut voir en faisant ip a
#authentification mutuelle entre les LB, identiques sur les deux membres
authentication {
auth_type PASS
auth_pass secret #le mot de passe voulu
}
# Interface réseau commune aux deux LB
virtual_ipaddress {
10.0.0.80/32 brd 10.0.0.255 scope global
}
}
optimisation : load-balancing
Objectif : le HAP2 sert de serveur WEB quand le HAP1 est fonctionnel
Afin de répartir la charge du HAP1, on va mettre en place un serveur WEB sur le HAP2
ci-dessous, les termes "srv" et "domaine" sont à modifier selon l'environnement
Tout d'abord, installer apache2 sur le serveur
apt-get install apache2
Afin de reconnaître la page, on modifie **index.html** afin d’y ajouter des éléments facilement identifiables
nano /var/www/html/index.html
On peut par exemple changer le champs titre qui apparaîtra dans l’onglet, ou la première ligne “it works”. Une fois cela fait on copie le fichier en le renommant afin de l’identifier correctement
cp /var/www/html/index.html /var/www/html/site1.srv.domaine
Il faut ensuite "activer" la page
a2ensite site1.srv.domaine
On lui donne ensuite une configuration virtuelle
nano /etc/apache2/sites-available/site1.srv.domaine.conf
Définir ceci :
<VirtualHost *:8080>
#en temps normal, on aurait renseigné le port 80 mais celui-ci est utilisé par le HAP, il faut le laisser disponible
DocumentRoot /var/www/html/site1.srv.domaine
ServerName site1.184.sio
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combine
<Directory /var/www/html/site1.srv.domaine/>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride ALL
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Redémarrer apache pour appliquer le changement
systemctl reload apache2
En cas d’erreur, s’assurer que le service soit démarré avec
systemctl start apache2
Faire un contrôle du statut ; doit être vert active/running
service apache2 status
Enfin, comme on a mis le port 8080 et non 80 dans le virutal host, il faut indiquer a apache d'écouter sur ce port aussi
nano /etc/apache2/ports.conf
On peut aussi établir un HTTPS en utilsant openssl autosigné. Sur le HAP1, il faut tout d'abord créer le dossier qui va contenir le certificat
mkdir /etc/haproxy/cert/
Créer ensuite la clé (key) et le certificat (crt)
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/haproxy/cert/certif.key -out /etc/haproxy/cert/certif.crt
Enfin, combiner dans une clé publique (pem)
cat certif.crt certif.key > certif.pem
Ajouter le certificat dans un nouveau frontend dans le fichier de conf du HAP
nano /etc/haproxy/haproxy.cfg
Redémarrer Keepalive et HAProxy pour être sur d’appliquer les modifications
service keepalived restart
service haproxy restart





