GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer NGINX hautement disponible avec KeepAlived sous Linux

Comme nous le savons, NGINX est un serveur Web hautement coté qui peut également être utilisé comme proxy inverse, équilibreur de charge et cache HTTP. Dans cet article, nous allons montrer comment configurer un serveur Web NGINX hautement disponible (HA) avec keepalived sous Linux. Keepalived fonctionne sur VRRP (Virtual Router Redundancy Protocol) qui permet à une IP statique d'être basculée entre deux systèmes Linux.

Voici les détails de mon laboratoire pour NGINX HA :

  • Nœud 1 - 192.168.1.130 - nginx1.example.com - minimum CentOS 8 / RHEL 8
  • Nœud 2 - 192.168.1.140 - nginx2.example.com - minimum CentOS 8 / RHEL 8
  • IP virtuelle (VIP) – 192.168.1.150
  • utilisateur sudo pkumar
  • Pare-feu activé
  • SELinux en cours d'exécution

Passons aux étapes d'installation et de configuration,

Étape 1) Installer le serveur Web NGINX à partir de la ligne de commande

Le package NGINX est disponible dans les référentiels CentOS 8 / RHEL 8 par défaut, exécutez donc la commande dnf ci-dessous sur les deux nœuds pour installer le serveur Web nginx

$ sudo dnf install -y nginx

Pour CentOS 7 / RHEL 7

Le package NGINX n'est pas disponible dans les référentiels CentOS 7 / RHEL 7 par défaut, donc pour l'installer, nous devons d'abord activer le référentiel epel. Exécutez la commande suivante sur les deux nœuds

$ sudo yum install epel-release -y$ sudo yum install -y nginx

Pour Ubuntu / Debian

Pour les distributions Linux basées sur Debian, le package de serveur Web nginx est disponible dans les référentiels de packages par défaut. Pour installer nginx, exécutez

$ sudo apt update$ sudo apt install -y nginx

Étape 2) Configurer le fichier index.html personnalisé pour les deux nœuds

Créons un fichier index.html personnalisé pour les deux nœuds afin que nous puissions facilement identifier quel serveur dessert le site Web tout en accédant via une adresse IP virtuelle.

Pour le nœud 1, exécutez la commande echo suivante,

[[email protected] ~]$ echo "

Ceci est le serveur Web NGINX du nœud 1

" | sudo tee /usr/share/nginx/html/index.html

Pour le nœud 2, exécutez

[[email protected] ~]$ echo "

Ceci est le serveur Web NGINX du nœud 2

" | sudo tee /usr/share/nginx/html/index.html

Étape 3) Autoriser le port NGINX dans le pare-feu et démarrer son service

Si le pare-feu est activé et exécuté sur les deux nœuds, autorisez le port 80 en exécutant les commandes suivantes,

Pour le système CentOS / RHEL

$ sudo firewall-cmd --permanent --add-service=http$ sudo firewall-cmd –reload

Pour le système Ubuntu/Debian

$ sudo ufw allow 'Nginx HTTP'

Démarrez et activez le service nginx en exécutant sous les commandes de commande sur les deux nœuds,

$ sudo systemctl start nginx$ sudo systemctl enable nginx

Testez le serveur Web NGINX des deux nœuds en exécutant la commande curl suivante depuis l'extérieur,

$ curl http://192.168.1.130

Voici le serveur Web NGINX du nœud 1

$ curl http://192.168.1.140

Voici le serveur Web NGINX du nœud 2

Parfait, la sortie de la commande ci-dessus confirme que nginx est en cours d'exécution et accessible de l'extérieur avec l'adresse IP du système.

Étape 4) Installer et configurer Keepalived

Pour les systèmes CentOS / RHEL, le package keepalived et ses dépendances sont disponibles dans les référentiels de packages par défaut. Son installation est donc simple, exécutez simplement la commande ci-dessous sur les deux nœuds.

$ sudo dnf install -y keepalived       // CentOS 8/ RHEL 8$ sudo yum install -y keepalived      // CentOS 7 / RHEL 7

Pour le système Ubuntu/Debian,

$ apt install -y keepalived

Une fois le keepalived installé, configurez-le en éditant son fichier de configuration ‘/etc/keepalived/keepalived.conf’. Nous garderons le nœud 1 comme nœud maître et le nœud 2 comme nœud de secours.

Faire une sauvegarde du fichier de configuration,

[[email protected] ~]$ sudo cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf-org

Remplacez le contenu de keepalived.conf par ci-dessous :

[[email protected] ~]$ echo -n | sudo tee /etc/keepalived/keepalived.conf[[email protected] ~]$ sudo vi /etc/keepalived/keepalived.conf

Collez le contenu suivant

global_defs {  # Keepalived process identifier  router_id nginx}# Script pour vérifier si Nginx est en cours d'exécution ou nonvrrp_script check_nginx {  script "/bin/check_nginx.sh"  interval 2  weight 50}# Interface virtuelle - La priorité spécifie l'ordre dans lequel interface assignée à prendre en charge lors d'un basculementvrrp_instance VI_01 {  state MASTER  interface enp0s3  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.150/24  }  track_script {    check_nginx  }  authentication {    auth_type auth AH   secret }}

Créez maintenant un script avec le contenu suivant qui vérifiera si le service nginx est en cours d'exécution ou non. Keepalived vérifiera toujours la sortie du script check_nginx.sh, s'il constate que le service nginx est arrêté ou ne répond pas, il déplacera l'adresse IP virtuelle sur le nœud de sauvegarde.

[[email protected] ~]$ sudo vi /bin/check_nginx.sh#!/bin/shif [ -z "`pidof nginx`" ] ; puis quittez 1fi

enregistrez et fermez le fichier et définissez l'autorisation requise avec la commande chmod,

[[email protected] ~]$ sudo chmod 755 /bin/check_nginx.sh

Copiez maintenant les fichiers keepalived.conf et check_nginx.sh du nœud 1 au nœud 2 en utilisant la commande scp suivante.

[[email protected] ~]$ scp /etc/keepalived/keepalived.conf [email protected] :/etc/keepalived/[[email protected] ~]$ scp /bin/check_nginx.sh [email protected]0 :/bin/

Une fois les fichiers copiés, connectez-vous au nœud 2 et apportez quelques modifications au fichier keepalived.conf. Changez l'état de MASTER à BACKUP et réduisez la priorité en la définissant sur 100. Après avoir apporté les modifications, keepalived.conf sur le nœud 2 ressemblera à ci-dessous,

Dans le cas où le pare-feu du système d'exploitation est en cours d'exécution, autorisez VRRP en exécutant les commandes suivantes,

Remarque – Exécutez ces commandes sur les deux nœuds

Pour les systèmes CentOS / RHEL

$ sudo firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent$ sudo firewall-cmd --reload

Pour les systèmes Ubuntu/Debian

Autorisez VRRP en exécutant ce qui suit, à partir du nœud maître (nœud 1), exécutez

$ sudo ufw allow to 224.0.0.18 comment 'VRRP Broadcast'$ sudo ufw allow from 192.168.1.140 comment 'VRRP Router'

Depuis le nœud de secours/esclave (nœud 2)

$ sudo ufw allow to 224.0.0.18 comment 'VRRP Broadcast'$ sudo ufw allow from 192.168.1.130 comment 'VRRP Router'

Maintenant, démarrez enfin le service keepalived en exécutant sous les commandes systemctl des deux nœuds,

$ sudo systemctl start keepalived$ sudo systemctl enable keepalived

Vérifiez le service keepalive en exécutant ci-dessous :

$ sudo systemctl status keepalived

Parfait, vérifiez maintenant le statut VIP (adresse IP virtuelle) sur le nœud maître, dans notre cas, VIP est 192.168.1.130

$ ip add show

La sortie ci-dessus confirme que VIP est configuré sur le nœud maître sur son interface enp0s3. Alors, faisons des tests keepalived et nginx à l'étape suivante.

Étape 5) Test Keepalived et NGINX

Pour effectuer le test, essayez d'accéder au serveur Web nginx avec une adresse IP virtuelle (192.168.1.150), actuellement il devrait nous montrer la page nginx du nœud 1.

Ouvrez le navigateur wen et tapez "http://192.168.1.150" et appuyez sur Entrée,

Maintenant, essayez d'arrêter le service NGINX sur le nœud 1 et voyez si l'adresse IP virtuelle est commutée du nœud 1 au nœud 2, puis essayez d'accéder à la page Web nginx avec VIP (192.168.1.150) et cette fois, il devrait nous montrer la page nginx du nœud 2 .

[[email protected] ~]$ sudo systemctl stop nginx[[email protected] ~]$ ip add show

Connectez-vous au nœud 2 et exécutez la commande ip pour vérifier l'adresse IP virtuelle,

[[email protected] ~]$ ip add show

Maintenant, essayons d'accéder à la page Web en utilisant une adresse IP virtuelle,

Génial, ci-dessus confirme que nous avons réussi à configurer le serveur Web NGINX hautement disponible avec keepalived. C'est tout de cet article, s'il vous plaît partagez vos commentaires, commentaires et suggestions.


Linux
  1. Comment installer le serveur Web Nginx sur Linux

  2. Comment configurer les privilèges Sudo pour l'utilisateur sous Linux

  3. Comment configurer une application nodejs simple avec nginx et pm2 sur le serveur ubuntu

  4. Comment installer ModSecurity avec Nginx sur Rocky Linux 8

  5. Comment installer et configurer MERN Stack avec Nginx sur Ubuntu 20.04

Configurer l'équilibrage de charge avec HAProxy, Nginx et Keepalived sous Linux

Comment exécuter un alias avec Sudo sous Linux

Comment installer Apache Tomcat 10 sur Ubuntu 20.04 avec Nginx

Comment installer Apache Tomcat 10 sur Ubuntu 22.04 avec Nginx

Cron Vs Anacron :Comment configurer Anacron sous Linux (avec un exemple)

Comment configurer Logstash sur Linux avec ElasticSearch, Redis, Nginx