Presentation
Keepalived est un logiciel qui réalise la répartition de charge et la haute disponibilité. Il implémente les protocoles IPVS (IP Virtual Server) et VRRP (Virtual Redundancy Routing Protocol) en concordance avec les résultats de ses tests de santé des services suivis.
Dans ce projet nous avons 4 machines virtuelles
- 2 x serveur web
- 2 x serveur proxy + keepalived Comme condition préalable, vous avez besoin de deux serveurs Web desservant le même site et de deux serveurs avec nginx et keepalived installés.
Configuration
Voici un exemple de fichier de configuration pour l’instance keepalived.
Notez que le fichier est presque le même sur les deux serveurs.
Keepalived
nano /etc/keepalived/keepalived.con
# Ces quelques lignes sont le script pour vérifier si le service nginx est
# cours d'exécution.
vrrp_script check_nginx {
script "systemctl is-active --quiet nginx"
interval 1
}
# La nouvelle instance d'un serveur virtuel et son identifiant
vrrp_instance VI_1 {
virtual_router_id 200
# Sur les lignes suivantes vous devrez choisir le maître et l'esclave de votre
# installation ainsi que la priorité, ces deux lignes doivent être
# différentes sur l'autre serveur.
state MASTER # or BACKUP hang01/hang02
priority 101 # or 100 hang01/hang02
#récuperer l'ip virtuel en cas de panne
preempt
# Check inter-load balancer toutes les 1 secondes
advert_int 1
# Synchro de l'état des connexions entre les LB sur l'interface ens18
lvs_sync_daemon_interface ens18
interface ens18
# Authentification mutuelle entre les LB, identique sur les deux membres
authentication {
auth_type PASS
auth_pass 0Poseidon
}
# Interface réseau commune aux deux LB
virtual_ipaddress {
192.168.100.200/24 brd 192.168.100.255 scope global
}
# Le mini script que nous mettons dans les premières lignes.
track_script {
check_nginx
}
}
Vient ensuite la configuration de nginx, en tant que proxy pour le «back_lamp» Comme pour le service keepalived, la configuration de nginx est similaire sur les deux serveurs.
Nginx
nano /etc/nginx/sites-available/default
# Création de la source en amont pour le proxy
upstream back_lamp {
server 192.168.100.211;
server 192.168.100.212;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name www.parcinfo.tssr;
# This takes precedence over root et index
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404;
# On décode le paramètre proxy_pass et on déclare la variable de notre source
proxy_pass back_lamp;
}
}
C’est tout ce dont vous avez besoin pour un serveur proxy redondant de type round robyn.