nouvelles
Serverspace a ajouté un nouveau Rocky Linux OS
VB
28 octobre 2022
Mis à jour en avril 6, 2023

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

NGINX Serveur Web

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 :

  • Deux serveurs pour un contenu identique et deux serveurs pour le démon keepalive et l'équilibreur haproxy ;
  • Ubuntu 20.04 Accès au système d'exploitation et aux comptes privilégiés sur tous ces serveurs ;
  • Deux sous-réseaux, un public et un privé. Les serveurs de contenu pour des raisons de sécurité ne seront pas accessibles via le sous-réseau public, les serveurs d'accès doivent être connectés aux deux réseaux ;
  • Une adresse IP publique supplémentaire, acheminée vers le sous-réseau public et non attribuée à un serveur d'accès ;
  • Nom de domaine, "pointé" vers cette IP "supplémentaire".

Commençons à préparer :

  • Créez quatre serveurs via ServerSpace clizone ent. Tous doivent être situés dans un centre de données ;

pic1

  • Créez deux sous-réseaux comme décrit ;

pic2

pic3

  • Connectez tous les serveurs aux réseaux créés. Ensuite, réinstallez le système d'exploitation, c'est le moyen le plus rapide d'appliquer les paramètres "à l'intérieur" des systèmes d'exploitation ;

pic4

pic5

  • En conséquence, vous verrez toutes les adresses attribuées dans les détails des sous-réseaux. Rappelez-vous ces adresses IP, il en faut plus. De plus, une adresse IP inutilisée (par exemple 45.14.48.134 dans mon exemple) sera utilisée comme adresse "flottante" pour keepalived ;

pic6

pic7

  • Création firewall règle pour bloquer tout le trafic entrant vers les serveurs "backend" via l'interface publique, en plus du sous-réseau attribué. N'oubliez pas de "mettre en liste blanche" votre propre adresse IP, cela rendra la gestion des serveurs plus confortable. Pour ce faire, le moyen le plus simple est d'accéder aux paramètres de détails de votre serveur, d'ajouter les règles et click à la SAUVEGARDER bouton. N'oubliez pas que les règles avec l'action « autoriser » doivent être placées « en haut », puis les règles de blocage ;

pic6

  • Répétez cette étape pour le serveur "content2".
  • Modifier / Etc / hosts sur chacun des quatre serveurs, ajoutez simplement les lignes suivantes à la fin :

<backend_server_one_IP> content1 content1.your.domain
<backend_server_two_IP> content2 content2.your.domain
<balancer_server_one_IP> haproxy1 haproxy1.your.domain
<balancer_server_two_IP> haproxy2 haproxy2.your.domain
<1st_floating_IP_for_keepalived> your.domain
<2nd_floating_IP_for_keepalived> your.domain

pic9

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

  • Installez votre projet sur les serveurs de contenu. Un contenu identique doit être placé sur les deux backends. Comme cet article n'est qu'un exemple, je vais installer nginx serveur Web avec un changement - les fichiers d'index seront différents pour montrer comment tout fonctionne ;
apt-get update; apt install -y nginx

echo $(hostname) > /var/www/html/index.nginx-debian.html  # path may be different, it is website working directory and index file

pic10

  • Ouvert SSH-sessions sur le premier serveur d'équilibrage et installez le package haproxy.
apt -y install haproxy
  • Modifier nano /etc/haproxy/haproxy.cfg fichier de configuration et ajoutez les lignes suivantes ;

#frontend
#---------
frontend my_haproxy
bind *:80
stats uri /haproxy?stats
default_backend my_haproxy

# backend
#---------
backend my_haproxy
balance roundrobin
mode http
server content1 <1st_backend_server_private_IP>:80 check
server content2 <2nd_backend_server_private_IP>:80 check

pic11

  • Redémarrer les services haproxy
service haproxy restart
  • Ouvrez deux windows de n'importe quel terminal sur votre ordinateur local et exécutez ces commandes (une par fenêtre):

while sleep 3; do curl http://<1st_balancer_public_IP>; done

while sleep 3; do curl http://<2nd_balancer_public_IP>; done

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

pic12

  • Installez sur les deux équilibreurs le package logiciel du démon keepalive :
apt install -y keepalived
  • Recherchez et mémorisez les noms d'interfaces publiques sur les deux serveurs d'équilibrage ;
ip a | grep <server_public_IP>

pic13

  • Créer paramfichier eters sur le premier équilibreur et collez le code suivant à l'intérieur :
nano /etc/keepalived/keepalived.conf

 

vrrp_instance MY_KEEPALIVED1 {
state MASTER
interface ens192
virtual_router_id 1
priority 11

virtual_ipaddress {
45.14.48.134/29 dev ens192 label ens192:1
}
}

pic14

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.

  • Créer un fichier de configuration pour le seconde serveur d'équilibrage :

vrrp_instance MY_KEEPALIVED1 {
state SLAVE
interface ens192
virtual_router_id 1
priority 10

virtual_ipaddress {
45.14.48.134/29 dev ens192 label ens192:1
}
}

pic15

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

  • Activez le chargement automatique et redémarrez les services sur les deux serveurs frontaux ;
systemctl enable haproxy && service haproxy restart; systemctl enable keepalived && service keepalived start

pic16

  • Vérifiez l'état. L'image comme ci-dessous montre que les services sont en cours d'exécution ;
systemctl status haproxy && service keepalived status

pic17

Vérification et simulation de catastrophe

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

  • Ouvrez à nouveau le terminal sur votre ordinateur et exécutez

while sleep 5; do curl http://<your_domain>; done

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

pic18

  • Arrêtez le maître-équilibreur ;
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 ;

pic19

pic20

  • Permet de "supprimer" un nœud de contenu ;
service nginx stop

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

pic21

  • Lorsque le serveur "échoué" revient, son contenu revient également ;

pic22

  • Et enfin, si l'équilibreur "tombé" revient, il reprend le rôle de maître.
systemctl start haproxy && service keepalived start

pic23

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.

Voter:
5 sur 5
Note moyenne : 5
Noté par : 1
1101 CT Amsterdam Pays-Bas, Herikerbergweg 292
+31 20 262-58-98
700 300
ITGLOBAL.COM NL
700 300
Nous utilisons des cookies pour rendre votre expérience sur le Serverspace meilleur. En poursuivant votre navigation sur notre site, vous acceptez nos
Utilisation des cookies et Politique de confidentialité.