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.