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 ;
- Créez deux sous-réseaux comme décrit ;
- 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 ;
- 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 ;
- 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 ;
- Répétez cette étape pour le serveur "content2".
- Modifier / Etc / hosts sur chacun des quatre serveurs, ajoutez simplement les lignes suivantes à la fin :
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"
- 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 ;
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
- Ouvert SSH-sessions sur le premier serveur d'équilibrage et installez le package haproxy.
- Modifier nano /etc/haproxy/haproxy.cfg fichier de configuration et ajoutez les lignes suivantes ;
#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émarrer les services haproxy
- Ouvrez deux windows de n'importe quel terminal sur votre ordinateur local et exécutez ces commandes (une par fenêtre):
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 ;
- Installez sur les deux équilibreurs le package logiciel du démon keepalive :
- Recherchez et mémorisez les noms d'interfaces publiques sur les deux serveurs d'équilibrage ;
- Créer paramfichier eters sur le premier équilibreur et collez le code suivant à l'intérieur :
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.
- Créer un fichier de configuration pour le seconde serveur d'équilibrage :
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.
- Activez le chargement automatique et redémarrez les services sur les deux serveurs frontaux ;
- Vérifiez l'état. L'image comme ci-dessous montre que les services sont en cours d'exécution ;
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
pendant le sommeil 5 ; boucler http:// ; Fini
Les deux serveurs fonctionnent et répondent à leur tour ;
- Arrêtez le maître-équilibreur ;
Comme nous le voyons, l'équilibreur de sauvegarde se transforme en maître, aucun contenu ne délivrant d'interruptions ;
- Permet de "supprimer" un nœud de contenu ;
Comme nous le voyons, un seul paquet a été supprimé, puis notre projet continue de fournir du contenu à partir du deuxième nœud ;
- Lorsque le serveur "échoué" revient, son contenu revient également ;
- Et enfin, si l'équilibreur "tombé" revient, il reprend le rôle de maître.
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.