06.04.2023

Comment rendre votre site Web à l'épreuve des catastrophes avec NGINX et Keepalive

Qu'est-ce que keepalive

Keepalived est un service conçu pour la création et le support d'infrastructures sans panne. Ce n'est pas une entité suffisante et a besoin d'un service d'équilibrage pour fournir l'accès au contenu "cible". Dans cet article, je vais montrer comment configurer un bundle "keepalived + haproxy + webserver" sur Ubuntu 20.04 LTS.

Préparation des procédures

Avant l'installation, nous devons préparer notre infrastructure :

Commençons à préparer :

content1 content1.votre.domaine
content2 content2.votre.domaine
haproxy1 haproxy1.votre.domaine
haproxy2 haproxy2.votre.domaine
<1st_floating_IP_for_keepalived> votre.domaine
<2nd_floating_IP_for_keepalived> votre.domaine

Configuration du "serveur Web, de l'équilibreur et du démon de surveillance"

apt-obtenir la mise à jour ; apt installer -y nginx

echo $(nom d'hôte) > /var/www/html/index.nginx-debian.html # le chemin peut être différent, il s'agit du répertoire de travail du site Web et du fichier d'index

apt -y installer haproxy

#l'extrémité avant
#---------
interface my_haproxy
lier *:80
statistiques uri /haproxy?stats
default_backend mon_haproxy

# back-end
#---------
back-end mon_haproxy
équilibre à tour de rôle
mode http
contenu du serveur1 <1st_backend_server_private_IP> : 80 vérification
contenu du serveur2 <2nd_backend_server_private_IP> : 80 vérification

redémarrage du service haproxy

pendant le sommeil 3 ; boucler http://<1st_balancer_public_IP> ; Fini

pendant le sommeil 3 ; boucler http://<2nd_balancer_public_IP> ; Fini

Si vous voyez des "réponses" entrelacées dans les deux terminaux windows - les haproxies fonctionnent, passez à l'étape suivante ;

apt install -y keepalived
ip un | grep

nano /etc/keepalived/keepalived.conf

 

vrrp_instance MY_KEEPALIVED1 {
état MAÎTRE
interface ens192
virtual_router_id 1
priorité 11

adresse_ip_virtuelle {
45.14.48.134/29 dev ens192 étiquette ens192:1
}
}

Paramdescription des ètres :

instance_vrrp - n'importe quel nom sans spaces,

Etat - rôle de serveur,

interface - le nom de l'interface réseau, vous le connaissiez à l'étape précédente,

virtual_router_id - identifiant d'instance, doit être identique sur tous les équilibreurs,

priorité - en utilisant l'ordre, le maître-serveur devrait avoir une priorité plus élevée,

adresse_ip_virtuelle - une des IP inutilisées du sous-réseau, votre domaine doit être "épinglé" à cette adresse.

vrrp_instance MY_KEEPALIVED1 {
Etat SLAVE
interface ens192
virtual_router_id 1
priorité 10

adresse_ip_virtuelle {
45.14.48.134/29 dev ens192 étiquette ens192:1
}
}

Faites attention au texte de configuration - "priorité" et "état" parameters sont "permutés", tous les autres points restent identiques.

systemctl enable haproxy && service haproxy restart ; systemctl activer keepalived && service keepalived start

statut systemctl haproxy && état du service keepalived

Vérification et simulation de catastrophe

Alors, il est temps de vérifier notre travail.

pendant le sommeil 5 ; boucler http:// ; Fini

Les deux serveurs fonctionnent et répondent à leur tour ;

systemctl stop haproxy && service keepalived stop

Comme nous le voyons, l'équilibreur de sauvegarde se transforme en maître, aucun contenu ne délivrant d'interruptions ;

service nginx Arrêtez

Comme nous le voyons, un seul paquet a été supprimé, puis notre projet continue de fournir du contenu à partir du deuxième nœud ;

systemctl start haproxy && service keepalived start

Conclusion

Dans ce tutoriel, j'ai expliqué ce qu'est le démon keepalive et comment créer une infrastructure anti-crash avec nginx, haproxy et paquets keepalived sur Ubuntu 20 LTS.