GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come configurare NGINX ad alta disponibilità con KeepAlived su CentOS 8

Nginx è un server web gratuito, open source e uno dei più popolari al mondo. Può anche essere utilizzato come proxy inverso, bilanciamento del carico e cache HTTP. L'elevata disponibilità consente a un'applicazione di reindirizzare il lavoro a un altro sistema in caso di errore. Sono disponibili diverse tecnologie per configurare un sistema ad alta disponibilità.

Keepalived è un demone di sistema che monitora continuamente servizi o sistemi e raggiunge un'elevata disponibilità in caso di guasto. Se un nodo è inattivo, il secondo nodo ha servito le risorse.

In questo tutorial, ti mostrerò come configurare un server web Nginx ad alta disponibilità con KeepAlived su CentOS 8.

Prerequisiti

  • Due server che eseguono CentOS 8, uno per il nodo master e uno per il nodo di backup.
  • Sul tuo server è configurata una password di root.

Installa Nginx su entrambi i nodi

Innanzitutto, dovrai installare il pacchetto Nginx in entrambi i nodi. Puoi installarlo usando il seguente comando:

dnf install nginx -y

Una volta che Nginx è stato installato su entrambi i nodi, avvia il servizio Nginx e abilitalo all'avvio al riavvio del sistema:

systemctl start nginx
systemctl enable nginx

Una volta terminato, puoi procedere al passaggio successivo.

Crea file su entrambi i nodi

Successivamente, dovrai creare un file index.html personalizzato su entrambi i nodi per identificare ciascun nodo.

Sul primo nodo, crea un file index.html con il seguente comando:

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

Sul secondo nodo, crea un file index.html con il seguente comando:

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

Salva e chiudi il file quando hai finito.

Installa e configura Keepalived

Successivamente, dovrai installare Keepalived su entrambi i nodi. Per impostazione predefinita, il pacchetto Keepalived è disponibile nel repository predefinito di CentOS 8. Puoi installarlo eseguendo il seguente comando:

dnf install keepalived -y

Una volta installato il pacchetto keepalived su entrambi i nodi, sarà necessario modificare il file di configurazione predefinito keepalived su entrambi i nodi.

Sul primo nodo, modifica il file keepalived.conf:

nano /etc/keepalived/keepalived.conf

Rimuovi i contenuti predefiniti e aggiungi i seguenti contenuti:

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
  }
}

Salva e chiudi il file quando hai finito.

Sul secondo nodo, modifica il file keepalived.conf:

nano /etc/keepalived/keepalived.conf

Rimuovi i contenuti predefiniti e aggiungi i seguenti contenuti:

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
  }
}

Salva e chiudi il file, quindi dovrai creare uno script per verificare se il servizio Nginx è in esecuzione o meno. Puoi crearlo usando il seguente comando:

Nota :Ho appena sostituito MASTER con BACKUP e 110 con 100 nel file di configurazione sopra.

nano /bin/check_nginx.sh

Aggiungi le seguenti righe:

#!/bin/sh
if [ -z "`pidof nginx`" ]; then
  exit 1
fi

Salva e chiudi il file, quindi imposta i permessi appropriati con il seguente comando:

chmod 755 /bin/check_nginx.sh

Infine, avvia il servizio keepalive e abilitalo all'avvio al riavvio del sistema utilizzando il seguente comando:

systemctl start keepalived
systemctl enable keepalived

Puoi anche controllare lo stato del servizio keepalive utilizzando il seguente comando:

systemctl status keepalived

Dovresti ottenere il seguente output:

? 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

Puoi anche verificare lo stato dell'indirizzo IP virtuale sul nodo Master usando il seguente comando:

ip add show

Dovresti vedere l'indirizzo IP virtuale 192.168.1.10 nel seguente output:

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

Una volta terminato, puoi procedere al passaggio successivo.

Configura Firewall su entrambi i nodi

Successivamente, dovrai consentire la porta 80 e consentire VRRP su entrambi i nodi. Puoi farlo usando il seguente comando:

firewall-cmd --permanent --add-service=http
firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent

Quindi, ricarica il firewalld per applicare le modifiche:

firewall-cmd –reload

Verifica Keepalived

A questo punto, Nginx e Keepalived sono installati e configurati. È ora di verificare se l'alta disponibilità di Nginx funziona o meno.

Apri il tuo browser web e accedi all'URL http://tuo-ip-virtuale . Dovresti vedere la seguente pagina:

Ora, interrompi il servizio Nginx sul nodo Master e verifica se l'IP virtuale è passato dal Nodo 1 al Nodo 2.

Sul nodo Master, arresta il servizio Nginx utilizzando il comando seguente:

systemctl stop nginx

Quindi, accedi a Node2 e verifica l'IP virtuale utilizzando il seguente comando:

ip add show

Dovresti vedere il tuo IP virtuale nel seguente output:

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

Ora accedi al tuo server web Nginx utilizzando l'URL http://your-virtual-ip . Dovresti vedere la pagina Node2:

Conclusione

Congratulazioni! hai impostato con successo un server Nginx ad alta disponibilità con Keepalived. Spero che ora tu abbia abbastanza conoscenze per configurare un server Nginx altamente disponibile in un ambiente di produzione.


Cent OS
  1. Come installare WordPress con Nginx su CentOS 7

  2. Come configurare il server FTP con VSFTPD su CentOS 7

  3. Come installare e configurare Varnish Cache 6 con Nginx su CentOS 8

  4. Come installare phpMyAdmin con Nginx su CentOS 7 / RHEL 7

  5. Come configurare Pure-FTPD con MySQL su CentOS e RedHat

Come installare phpMyAdmin con Nginx su CentOS 8 / RHEL 8

Come installare Nginx con ngx_pagespeed su CentOS

Come installare Nginx con PHP-FastCGI su CentOS 6

Come installare Magento con Nginx su CentOS 7

Come installare Laravel con Nginx su CentOS 8

Come velocizzare Nginx con Varnish Cache su CentOS 7