GNU/Linux >> Tutoriels Linux >  >> Cent OS

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 panne. Il existe différentes technologies disponibles pour mettre en place un système hautement disponible.

Keepalived est un démon système qui surveille en permanence les services ou les systèmes et assure une haute disponibilité en cas de panne. Si un nœud est en panne, le deuxième nœud a servi les ressources.

Dans ce didacticiel, 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 sauvegarde.
  • 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 dans les deux nœuds. Vous pouvez l'installer à l'aide de la commande suivante :

dnf install nginx -y

Une fois le Nginx 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 nginx

Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.

Créer un fichier 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 "<h1>This is My First NGINX Web Server Node</h1>" | tee /usr/share/nginx/html/index.html

Sur le deuxième nœud, créez un fichier index.html avec la commande suivante :

echo "<h1>This is My Second NGINX Web Server Node</h1>" | tee /usr/share/nginx/html/index.html

Enregistrez 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 référentiel par défaut de CentOS 8. Vous pouvez l'installer en exécutant la commande suivante :

dnf install keepalived -y

Une fois le package keepalived installé sur les deux nœuds, vous devrez modifier le fichier de configuration par défaut keepalived sur les deux nœuds.

Sur le premier nœud, éditez le fichier keepalived.conf :

nano /etc/keepalived/keepalived.conf

Supprimez le contenu par défaut et ajoutez le contenu suivant :

global_defs {
  # Keepalived process identifier
  router_id nginx
}

# Script to check whether Nginx is running or not
vrrp_script check_nginx {
  script "/bin/check_nginx.sh"
  interval 2
  weight 50
}

# Virtual interface - The priority specifies the order in which the assigned interface to take over in a failover
vrrp_instance VI_01 {
  state MASTER
  interface eth0
  virtual_router_id 151
  priority 110

  # The virtual ip address shared between the two NGINX Web Server which will float
  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, éditez le fichier keepalived.conf :

nano /etc/keepalived/keepalived.conf

Supprimez le contenu par défaut et ajoutez le contenu suivant :

global_defs {
  # Keepalived process identifier
  router_id nginx
}

# Script to check whether Nginx is running or not
vrrp_script check_nginx {
  script "/bin/check_nginx.sh"
  interval 2
  weight 50
}

# Virtual interface - The priority specifies the order in which the assigned interface to take over in a failover
vrrp_instance VI_01 {
  state BACKUP
  interface eth0
  virtual_router_id 151
  priority 100

  # The virtual ip address shared between the two NGINX Web Server which will float
  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 est en cours d'exécution ou non. Vous pouvez le créer à l'aide de la commande suivante :

Remarque  :Remplacez simplement MASTER par BACKUP et 110 par 100 dans le fichier de configuration ci-dessus.

nano /bin/check_nginx.sh

Ajoutez 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.sh

Enfin, démarrez le service keepalived et activez-le au redémarrage du système à l'aide de la commande suivante :

systemctl start keepalived
systemctl enable keepalived

Vous pouvez également vérifier l'état du service keepalived à l'aide de la commande suivante :

systemctl status keepalived

Vous devriez obtenir le résultat suivant :

? 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) Changing effective priority from 110 to 160
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Receive advertisement timeout
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Entering MASTER STATE
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) setting VIPs.
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Sending gratuitous ARP on eth0 for 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Sending/queueing gratuitous ARPs on eth0 for 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Sending gratuitous ARP on eth0 for 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Sending gratuitous ARP on eth0 for 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Sending gratuitous ARP on eth0 for 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Sending gratuitous ARP on eth0 for 192.168.1.10

Vous pouvez également vérifier l'état de l'adresse IP virtuelle sur le nœud maître à l'aide de la commande suivante :

ip add show

Vous devriez voir l'adresse IP virtuelle 192.168.1.10 dans la sortie suivante :

1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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
firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent

Ensuite, rechargez le pare-feu pour appliquer les modifications :

firewall-cmd –reload

Vé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 passée du nœud 1 au nœud 2.

Sur le nœud maître, arrêtez le service Nginx à l'aide de la commande suivante :

systemctl stop nginx

Ensuite, connectez-vous à Node2 et vérifiez l'adresse IP virtuelle à l'aide de la commande suivante :

ip add show

Vous devriez voir votre adresse IP virtuelle dans la sortie suivante :

1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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 Node2 :

Conclusion

Toutes nos félicitations! vous avez configuré avec succès 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.


Cent OS
  1. Comment installer WordPress avec Nginx sur CentOS 7

  2. Comment configurer un serveur FTP avec VSFTPD sur CentOS 7

  3. Comment installer et configurer Varnish Cache 6 avec Nginx sur CentOS 8

  4. Comment installer phpMyAdmin avec Nginx sur CentOS 7 / RHEL 7

  5. Comment configurer Pure-FTPD avec MySQL sur CentOS et RedHat

Comment installer phpMyAdmin avec Nginx sur CentOS 8 / RHEL 8

Comment installer Nginx avec ngx_pagespeed sur CentOS

Comment installer Nginx avec PHP-FastCGI sur CentOS 6

Comment installer Magento avec Nginx sur CentOS 7

Comment installer Laravel avec Nginx sur CentOS 8

Comment accélérer Nginx avec Varnish Cache sur CentOS 7