NGINX KeepAlived · 7 min read · Nov 08, 2025
Comment configurer NGINX hautement disponible avec KeepAlived sur CentOS 8

Nginx est un serveur web gratuit, open-source et l’un des plus populaires au monde. Il peut également être utilisé comme proxy inverse, équilibreur de charge et cache HTTP. La haute disponibilité permet à une application de rediriger le travail vers un autre système en cas de défaillance. Il existe différentes technologies disponibles pour configurer un système hautement disponible.
Keepalived est un démon système qui surveille continuellement les services ou systèmes et atteint une haute disponibilité en cas de défaillance. Si un nœud est hors service, le deuxième nœud fournit les ressources.
Dans ce tutoriel, je vais vous montrer comment configurer un serveur web Nginx hautement disponible avec KeepAlived sur CentOS 8.
Prérequis
- Deux serveurs exécutant CentOS 8, un pour le nœud maître et un pour le nœud de secours.
- Un mot de passe root est configuré sur votre serveur.
Installer Nginx sur les deux nœuds
Tout d’abord, vous devrez installer le package Nginx sur les deux nœuds. Vous pouvez l’installer en utilisant la commande suivante :
dnf install nginx -yUne fois que Nginx a été installé sur les deux nœuds, démarrez le service Nginx et activez-le pour qu’il démarre au redémarrage du système :
systemctl start nginx
systemctl enable nginxUne fois que vous avez terminé, vous pouvez passer à l’étape suivante.
Créer le fichier Index.html sur les deux nœuds
Ensuite, vous devrez créer un fichier index.html personnalisé sur les deux nœuds pour identifier chaque nœud.
Sur le premier nœud, créez un fichier index.html avec la commande suivante :
echo "Ceci est mon premier nœud de serveur web NGINX
" | tee /usr/share/nginx/html/index.htmlSur le deuxième nœud, créez un fichier index.html avec la commande suivante :
echo "Ceci est mon deuxième nœud de serveur web NGINX
" | tee /usr/share/nginx/html/index.htmlEnregistrez et fermez le fichier lorsque vous avez terminé.
Installer et configurer Keepalived
Ensuite, vous devrez installer Keepalived sur les deux nœuds. Par défaut, le package Keepalived est disponible dans le dépôt par défaut de CentOS 8. Vous pouvez l’installer en exécutant la commande suivante :
dnf install keepalived -yUne fois le package keepalived installé sur les deux nœuds, vous devrez modifier le fichier de configuration par défaut de keepalived sur les deux nœuds.
Sur le premier nœud, modifiez le fichier keepalived.conf :
nano /etc/keepalived/keepalived.confSupprimez le contenu par défaut et ajoutez le contenu suivant :
global_defs {
# Identifiant du processus Keepalived
router_id nginx
}
# Script pour vérifier si Nginx fonctionne ou non
vrrp_script check_nginx {
script "/bin/check_nginx.sh"
interval 2
weight 50
}
# Interface virtuelle - La priorité spécifie l'ordre dans lequel l'interface assignée doit prendre le relais en cas de basculement
vrrp_instance VI_01 {
state MASTER
interface eth0
virtual_router_id 151
priority 110
# L'adresse IP virtuelle partagée entre les deux serveurs web NGINX qui flottera
virtual_ipaddress {
192.168.1.10/24
}
track_script {
check_nginx
}
authentication {
auth_type AH
auth_pass secret
}
}
Enregistrez et fermez le fichier lorsque vous avez terminé.
Sur le deuxième nœud, modifiez le fichier keepalived.conf :
nano /etc/keepalived/keepalived.confSupprimez le contenu par défaut et ajoutez le contenu suivant :
global_defs {
# Identifiant du processus Keepalived
router_id nginx
}
# Script pour vérifier si Nginx fonctionne ou non
vrrp_script check_nginx {
script "/bin/check_nginx.sh"
interval 2
weight 50
}
# Interface virtuelle - La priorité spécifie l'ordre dans lequel l'interface assignée doit prendre le relais en cas de basculement
vrrp_instance VI_01 {
state BACKUP
interface eth0
virtual_router_id 151
priority 100
# L'adresse IP virtuelle partagée entre les deux serveurs web NGINX qui flottera
virtual_ipaddress {
192.168.1.10/24
}
track_script {
check_nginx
}
authentication {
auth_type AH
auth_pass secret
}
}
Enregistrez et fermez le fichier, puis vous devrez créer un script pour vérifier si le service Nginx fonctionne ou non. Vous pouvez le créer en utilisant la commande suivante :
Remarque : Remplacez simplement MASTER par BACKUP et 110 par 100 dans le fichier de configuration ci-dessus.
nano /bin/check_nginx.shAjoutez les lignes suivantes :
#!/bin/sh
if [ -z "`pidof nginx`" ]; then
exit 1
fi
Enregistrez et fermez le fichier, puis définissez les autorisations appropriées avec la commande suivante :
chmod 755 /bin/check_nginx.shEnfin, démarrez le service keepalived et activez-le pour qu’il démarre au redémarrage du système en utilisant la commande suivante :
systemctl start keepalived
systemctl enable keepalivedVous pouvez également vérifier l’état du service keepalived en utilisant la commande suivante :
systemctl status keepalivedVous devriez obtenir la sortie suivante :
? keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2021-04-08 04:24:22 EDT; 5s ago
Process: 3141 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 3142 (keepalived)
Tasks: 2 (limit: 12524)
Memory: 2.1M
CGroup: /system.slice/keepalived.service
??3142 /usr/sbin/keepalived -D
??3143 /usr/sbin/keepalived -D
Apr 08 04:24:22 node1 Keepalived_vrrp[3143]: (VI_01) Changement de priorité effective de 110 à 160
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Temps d'attente de l'annonce reçu
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Entrée dans l'état MASTER
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) définition des VIPs.
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Envoi d'ARP gratuit sur eth0 pour 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Envoi/queue d'ARPs gratuits sur eth0 pour 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Envoi d'ARP gratuit sur eth0 pour 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Envoi d'ARP gratuit sur eth0 pour 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Envoi d'ARP gratuit sur eth0 pour 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Envoi d'ARP gratuit sur eth0 pour 192.168.1.10
Vous pouvez également vérifier l’état de l’adresse IP virtuelle sur le nœud maître en utilisant la commande suivante :
ip add showVous devriez voir l’adresse IP virtuelle 192.168.1.10 dans la sortie suivante :
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:2d:3a:20:9b brd ff:ff:ff:ff:ff:ff
inet 45.58.32.155/24 brd 45.58.32.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet 192.168.1.10/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::200:2dff:fe3a:209b/64 scope link
valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:0a:3a:20:9b brd ff:ff:ff:ff:ff:ff
inet6 fe80::200:aff:fe3a:209b/64 scope link
valid_lft forever preferred_lft forever
Une fois que vous avez terminé, vous pouvez passer à l’étape suivante.
Configurer le pare-feu sur les deux nœuds
Ensuite, vous devrez autoriser le port 80 et autoriser VRRP sur les deux nœuds. Vous pouvez le faire en utilisant la commande suivante :
firewall-cmd --permanent --add-service=http
firebase-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanentEnsuite, rechargez le firewalld pour appliquer les modifications :
firewall-cmd –reloadVérifier Keepalived
À ce stade, Nginx et Keepalived sont installés et configurés. Il est temps de tester si la haute disponibilité de Nginx fonctionne ou non.
Ouvrez votre navigateur web et accédez à l’URL http://your-virtual-ip. Vous devriez voir la page suivante :

Maintenant, arrêtez le service Nginx sur le nœud maître et testez si l’adresse IP virtuelle est transférée du nœud 1 au nœud 2.
Sur le nœud maître, arrêtez le service Nginx en utilisant la commande suivante :
systemctl stop nginxEnsuite, connectez-vous à Node2 et vérifiez l’adresse IP virtuelle en utilisant la commande suivante :
ip add showVous devriez voir votre adresse IP virtuelle dans la sortie suivante :
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:2d:3a:26:37 brd ff:ff:ff:ff:ff:ff
inet 45.58.38.55/24 brd 45.58.38.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet 192.168.1.10/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::200:2dff:fe3a:2637/64 scope link
valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:0a:3a:26:37 brd ff:ff:ff:ff:ff:ff
inet6 fe80::200:aff:fe3a:2637/64 scope link
valid_lft forever preferred_lft forever
Maintenant, accédez à votre serveur web Nginx en utilisant l’URL http://your-virtual-ip. Vous devriez voir la page de Node2 :

Conclusion
Félicitations ! Vous avez réussi à configurer un serveur Nginx hautement disponible avec Keepalived. J’espère que vous avez maintenant suffisamment de connaissances pour configurer un serveur Nginx hautement disponible dans un environnement de production.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.