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

Come configurare HAProxy come Load Balancer per Nginx su CentOS 8

Per garantire la massima disponibilità, scalabilità e prestazioni elevate delle applicazioni Web, è ormai comune implementare tecnologie che introducono la ridondanza, come il clustering dei server e il bilanciamento del carico. Ad esempio, configurando un cluster di server che eseguono tutti le stesse applicazioni e quindi distribuendo i sistemi di bilanciamento del carico davanti a loro per distribuire il traffico.

HAProxy è un TCP/HTTP open source, potente, ad alte prestazioni, affidabile, sicuro e ampiamente utilizzato ad alta disponibilità bilanciatore di carico, server proxy e terminatore SSL/TLS creato per siti Web ad alto traffico. Funziona in modo affidabile su Linux , Solaris , FreeBSD , OpenBSD così come i sistemi operativi AIX.

Questa guida mostra come configurare un sistema di bilanciamento del carico ad alta disponibilità dedicato con HAProxy su CentOS 8 per controllare il traffico in un cluster di NGINX server web. Viene inoltre illustrato come configurare SSL/TLS risoluzione in HAProxy .

Prerequisiti:

Un totale di 4 server con installazione minima di CentOS 8.

Impostazione ambiente di prova

----------- HAProxy Server Setup ----------- 
HA Proxy Server - hostname: haproxy-server.tecmint.lan; IP: 10.42.0.247
Test Site Domain: www.tecmint.lan


----------- Client Web Servers Setup ----------- 
Web Server #1 - hostname: websrv1.tecmint.lan; IP: 10.42.0.200
Web Server #2 - hostname: websrv2.tecmint.lan; IP: 10.42.0.21
Web Server #3 - hostname: websrv3.tecmint.lan; IP: 10.42.0.34

Fase 1:configurazione del server HTTP Nginx sui computer client

1. Accedi a tutti i tuoi CentOS 8 macchine client e installare Nginx server web utilizzando il gestore di pacchetti dnf come mostrato.

# dnf install Nginx

2. Quindi, avvia Nginx service, per ora, abilitalo per l'avvio automatico all'avvio del sistema e conferma che sia attivo e funzionante controllandone lo stato, usando i comandi systemctl (fallo su tutte le macchine client).

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx

3. Inoltre, se il servizio firewalld è in esecuzione su tutte le macchine client (che puoi verificare eseguendo systemctl start firewalld), devi aggiungere il HTTP e HTTPS servizi nella configurazione del firewall per consentire alle richieste dal sistema di bilanciamento del carico di passare attraverso il firewall a Nginx server web. Quindi ricarica il firewalld service per effettuare le nuove modifiche (farlo su tutte le macchine client).

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --zone=public --permanent --add-service=https
# firewall-cmd --reload

4. Quindi, apri un browser web sui tuoi computer locali e verifica se il Nginx l'installazione funziona bene. Usa gli IP del client per navigare, una volta visualizzato il Nginx pagina di test, significa che il web server installato sulla macchina client funziona correttamente.

Prova l'installazione di Nginx su tutte le macchine client CentOS 8

5. Successivamente, dobbiamo creare pagine di test sui computer client che utilizzeremo in seguito per testare HAProxy configurazione.

----------- Web Server #1 ----------- 
# cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig
# echo "Showing site from websrv1.tecmint.lan"> /usr/share/nginx/html/index.html

----------- Web Server #2 ----------- 
# cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig
# echo "Showing site from websrv2.tecmint.lan"> /usr/share/nginx/html/index.html

----------- Web Server #3 ----------- 
# cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig
# echo "Showing site from websrv3.tecmint.lan"> /usr/share/nginx/html/index.html

Fase 2:installazione e configurazione di HAProxy Server su CentOS 8

6. Ora installa HAProxy pacchetto su HAProxy server eseguendo il comando seguente.

# dnf install haproxy

7. Quindi, avvia HAProxy servizio, abilitalo per l'avvio automatico all'avvio del sistema e verifica il suo stato.

# systemctl start haproxy
# systemctl enable haproxy
# systemctl status haproxy

Verifica lo stato HAProxy in CentOS 8

8. Ora configureremo HAProxy utilizzando il seguente file di configurazione.

# vi /etc/haproxy/haproxy.cfg

Il file di configurazione è diviso in quattro sezioni principali.

  • impostazioni globali – imposta parametri a livello di processo.
  • predefiniti – questa sezione imposta i parametri di default per tutte le altre sezioni successive alla sua dichiarazione.
  • front-end – questa sezione descrive un insieme di socket in ascolto che accettano connessioni client.
  • Backend – questa sezione descrive un insieme di server a cui si connetterà il proxy per inoltrare le connessioni in entrata.

Per comprendere le opzioni in impostazioni globali e predefiniti , leggi la documentazione HAProxy (link fornito a fine articolo). Per questa guida utilizzeremo le impostazioni predefinite.

Configurazione della registrazione HAProxy

9. HAProxy quando una volta distribuito giocherà un ruolo significativo nella tua infrastruttura IT, quindi configurarne la registrazione è un requisito di base; questo ti consente di ottenere informazioni dettagliate su ogni connessione ai tuoi server web di back-end.

Il parametro di registro (evidenziato nello screenshot seguente) dichiara un Syslog globale server (come rsyslog l'impostazione predefinita in CentOS) che riceverà i messaggi di registro. Qui è possibile dichiarare più di un server.

La configurazione predefinita punta a localhost (127.0.0.1 ) e local2 è il codice struttura predefinito utilizzato per identificare i messaggi di registro HAProxy in rsyslog .

Parametro registro predefinito HAProxy

10. Successivamente, devi informare il rsyslog server come ricevere ed elaborare HAProxy messaggi di registro. Apri il file di configurazione di rsyslog in /etc/rsyslog.conf oppure crea un nuovo file all'interno di /etc/rsyslog.d directory, ad esempio /etc/rsyslog.d/haproxy.conf .

# vi /etc/rsyslog.d/haproxy.conf

Copia e incolla la seguente configurazione per raccogliere il registro con UDP sulla porta predefinita 514 .

$ModLoad imudp 
$UDPServerAddress 127.0.0.1 
$UDPServerRun 514 

Aggiungi anche queste righe per istruire rsyslog per scrivere in due file di registro separati in base alla gravità, dove local2 è il codice struttura definito nella configurazione HAProxy sopra.

local2.* 	/var/log/haproxy-traffic.log 
local2.notice 	/var/log/haproxy-admin.log

11. Salva il file e chiudilo. Quindi riavvia il rsyslog servizio per applicare le modifiche recenti.

# systemctl restart rsyslog

Configurazione di HAProxy Front-end e Back-end

12. In questa sezione dimostreremo come configurare i proxy front-end e back-end. Torna a HAProxy file di configurazione e modificare le sezioni front-end e back-end predefinite come segue. Non entreremo in una spiegazione dettagliata di ogni parametro, puoi sempre fare riferimento alla documentazione ufficiale.

La configurazione seguente definisce un ascolto sezione utilizzata per pubblicare le statistiche HAProxy pagina. Il vincolo parametro assegna un listener a un determinato indirizzo IP (* per tutti in questo caso) e porta (9000 ).

Le statistiche abilitano l'impostazione abilita la pagina delle statistiche a cui si accederà utilizzando l'URI /stats (cioè http://server_ip:9000/stats ).

Le statistiche auth l'impostazione viene utilizzata per aggiungere un'autenticazione di base quando si accede alla pagina (sostituire haproxy e [email protetta] con un nome utente e una password a tua scelta).

listen stats
    bind *:9000
    stats enable
    stats hide-version
    stats uri /stats
    stats admin if LOCALHOST
    stats auth haproxy:[email protected]

13. La configurazione successiva definisce una sezione frontend chiamata TL (puoi dare un nome di tuo gradimento). La modalità parametro definisce la modalità in cui opera HAProxy.

Il acl Il parametro (Access Control List) viene utilizzato per prendere una decisione in base al contenuto estratto dalla richiesta. In questo esempio, la richiesta è considerata semplice HTTP se non è effettuato su SSL .

Quindi l'intestazione del set di richieste http l'impostazione viene utilizzata per aggiungere un'intestazione HTTP alla richiesta. Questo aiuta a informare Nginx che la richiesta iniziale è stata effettuata tramite HTTP (o tramite la porta 80 ).

Il backend_predefinito o usa_backend La direttiva definisce i server di backend, in questo caso, a cui fa riferimento TL_web_servers .

Tieni presente che HAProxy restituirà un "errore 503 Servizio non disponibile ” se una richiesta non viene instradata da un use_backend o default_backend direttiva.

frontend TL
    bind *:80
    mode http
    acl http  ssl_fc,not
    http-request set-header X-Forwarded-Protocol http if http
    default_backend TL_web_servers

14. Quindi dobbiamo definire una sezione di backend in cui il bilancia l'impostazione definisce come HAProxy seleziona i server back-end per elaborare una richiesta se nessun metodo di persistenza ha la precedenza su quella selezione.

Il cookie abilita basato sui cookie persistenza, indica HAProxy per inviare un cookie denominato SERVERID al cliente e di associarlo all'ID del server che ha fornito la risposta iniziale.

Il server La direttiva viene utilizzata per definire i server upstream nel formato nome_server (ad es. websrv1 ), IP_server:porta e opzioni .

Un'opzione chiave è controlla che dice HAProxy per continuare a controllare la disponibilità di un server e segnalare nella pagina delle statistiche.

backend TL_web_servers
    mode http
    balance roundrobin
    option  httpchk HEAD /
    cookie SERVERUID insert indirect nocache
    server  websrv1 10.42.0.200:80 cookie websrv1 check
    server  websrv2 10.42.0.21:80  cookie websrv2 check
    server  websrv3 10.42.0.34:80  cookie websrv3 check

Commenta qualsiasi altra sezione di frontend e backend come mostrato nello screenshot che segue. Salva il file e chiudilo.

Configurazione di HAProxy Front-end e Back-end

15. Ora riavvia HAProxy servizio per applicare le nuove modifiche.

# systemctl restart haproxy

16. Quindi, assicurati che l'HTTP (porta 80 ) e HTTPS (porta 433 ) i servizi vengono aperti nel firewall per accettare le richieste dei client come segue. Inoltre, apri la porta 9000 nel firewall per accedere alla pagina delle statistiche e ricaricare le impostazioni del firewall.

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --zone=public --permanent –add-service=https
# firewall-cmd --zone=public --permanent --add-port=9000/tcp
# firewall-cmd --reload

Fase 3:verifica della configurazione di HAProxy e visualizzazione delle statistiche

17. Ora è il momento di testare HAPrxoy impostare. Sul computer desktop locale da cui accedi a tutti i server, aggiungi la seguente riga in /etc/hosts per consentirci di utilizzare il dominio del sito fittizio.

10.42.0.247  www.tecmint.lan

18. Quindi apri un browser e naviga utilizzando l'indirizzo del server o il dominio del sito.

http://10.42.0.247/
OR
http://www.tecmint.lan/

Controllare Configurazione HAProxy

19. Per accedere a HAProxy pagina delle statistiche, utilizza il seguente indirizzo.

http://10.42.0.247:9000/stats

Quindi utilizzare il nome utente e la password definiti nel file di configurazione HAProxy (fare riferimento al parametro stats auth).

Pagina di accesso alle statistiche HAProxy

Dopo un accesso riuscito, atterrerai su HAProxy pagina delle statistiche che ti mostra le metriche che coprono lo stato dei tuoi server, i tassi di richiesta attuali, i tempi di risposta e molto altro ancora.

Per dimostrare come funziona il rapporto sullo stato relativo ai codici colore, abbiamo inserito uno dei server back-end.

Rapporto Statistico HAProxy

Fase 4:configurazione di HTTPS in HAProxy utilizzando un certificato SSL autofirmato

20. In questa sezione finale, dimostreremo come configurare SSL/TLS per proteggere tutte le comunicazioni tra il server HAProxy e il client. HAProxy supporta quattro principali HTTPS modalità di configurazione, ma per questa guida utilizzeremo SSL/TLS scarico.

In SSL/TLS modalità di scaricamento, HAProxy decifra il traffico sul lato client e si connette in traffico chiaro ai server back-end.

Inizieremo creando il certificato e chiave come mostrato (rispondi alle domande di conseguenza in base ai dettagli della tua azienda durante la creazione del certificato, come evidenziato nello screenshot).

# mkdir /etc/ssl/tecmint.lan
# cd /etc/ssl/tecmint.lan/
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/tecmint.lan.key -out /etc/ssl/tecmint.lan.crt
# cd /etc/ssl/tecmint.lan/
# cat tecmint.crt tecmint.key >tecmint.pem
# ls -l

Crea SSL per HAProxy

21. Quindi, apri HAProxy file di configurazione (/etc/haproxy/haproxy.cfg ) e modifica la sezione front-end.

frontend TL
    bind *:80
    bind *:443 ssl crt /etc/ssl/tecmint.lan/tecmint.pem
    redirect  scheme  https  if  !{ ssl_fc }
    mode http
    acl http  ssl_fc,not
    acl https ssl_fc
    http-request set-header X-Forwarded-Protocol http if http
    http-request set-header X-Forwarded-Protocol https if https
    default_backend TL_web_servers

Configura HAProxy Front-end con SSL

Salva il file e chiudilo.

22. Quindi riavvia il servizio HAProxy per applicare le nuove modifiche.

# systemctl restart haproxy.service

23. Quindi, apri un browser web e prova ad accedere al sito ancora una volta. Il browser mostrerà un errore a causa del certificato autofirmato, fai clic su Avanzate per procedere.

Errore di connessione SSL HAProxy

Procedi con Connessione

Accedi al sito tramite HTTPS

È tutto per ora! Ogni applicazione Web ha la propria serie di requisiti, è necessario progettare e configurare il bilanciamento del carico in base alla propria infrastruttura IT e ai requisiti dell'applicazione.

Per ottenere maggiori informazioni su alcune delle opzioni di configurazione utilizzate in questa guida e in generale su come utilizzare HAProxy , vedere la documentazione ufficiale dell'edizione comunitaria di HAProxy o la documentazione della versione aziendale di HAProxy. Puoi inviare qualsiasi domanda o pensiero tramite il modulo di feedback qui sotto.

Condividere è prendersi cura...
Condividi su FacebookCondividi su TwitterCondividi su LinkedinCondividi su Reddit
Cent OS
  1. Come configurare un server SFTP su CentOS

  2. Come configurare il server SysLog su CentOS 7 / RHEL 7

  3. Come configurare il server NFS su CentOS 7 / RHEL 7

  4. Come configurare il servizio di bilanciamento del carico HAProxy

  5. Come configurare la replica MySQL su CentOS

Come installare HAProxy su CentOS 7

Come configurare HAProxy come Load Balancer per Nginx in CentOS 7

Come installare Nginx su CentOS 7

Come configurare NGINX su un server CentOS 7

Come configurare HAProxy su CentOS 8

Come configurare un server NGINX RTMP per lo streaming