GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare HAProxy come Load Balancer per Nginx in CentOS 7

Scritto in C da Willy Tarreau, HAProxy, noto anche come High Availability Proxy, è un server proxy e bilanciatore di carico HTTP veloce e leggero. Ha un basso utilizzo della CPU ed è causato da un ridotto footprint di memoria. Il sistema di bilanciamento del carico viene utilizzato da siti Web popolari come StackOverflow, Twitter, Github e Tumblr per citarne solo alcuni.

In questa guida, ti mostreremo come configurare HAProxy come sistema di bilanciamento del carico per il server Web Nginx su CentOS 7. Il sistema di bilanciamento del carico sarà posizionato di fronte a 2 server Web Nginx e distribuirà equamente le richieste HTTP ai server.

Algoritmo di bilanciamento HAProxy

Questo è l'algoritmo utilizzato dal sistema di bilanciamento del carico per la selezione dei server Web durante la distribuzione dei carichi di lavoro.

1. Round Robin

Questo è il più semplice degli algoritmi. Fondamentalmente, ogni nuova connessione sarà gestita dal server web successivo. Ad esempio, se hai 4 server back-end, ognuno di essi gestirà le richieste in successione. Quando viene raggiunto l'ultimo server web dell'elenco, il sistema di bilanciamento del carico riparte dall'alto con il primo server web.

2. Lastconn

Qui una nuova richiesta verrà gestita dal server con il minor numero di connessioni. Questo è utile quando il carico e i tempi delle richieste differiscono per grandi variazioni.

Per iniziare

Per iniziare, esegui un elenco di controllo pre-volo e assicurati di avere quanto segue.

1. Server CentOS 7

Nome host Indirizzo IP del server
bilanciatore di carico 173.82.168.96
server web-1 173.82.2.236
server web-2 173.82.94.57

2. Accesso SSH a tutti i server

Di seguito è riportata una rappresentazione grafica della configurazione.

Fase 1:configura il file /etc/hosts nel sistema di bilanciamento del carico

Accedi al sistema di bilanciamento del carico utilizzando SSH e aggiungi gli indirizzi IP e i nomi host dei server Web Nginx come mostrato.

vim /etc/hosts


173.82.2.236    web-server-1

173.82.94.57    web-server-2

Salva ed esci dall'editor di testo vim.

Quindi, accedi a ciascuno dei server Web (web-server-1 e web-server-2) e modifica il /etc/hosts file per puntare al sistema di bilanciamento del carico.


173.82.168.96   load-balancer

Salva ed esci dall'editor di testo.

Fase 2:installa e configura HAProxy sul server di bilanciamento del carico

Il repository HAProxy è prontamente disponibile nel repository CentOS. Per installare e configurare HAProxy, prima accedi e aggiorna i repository di sistema.

 yum update -y

Quindi, installa HAProxy usando il comando:

yum -y install haproxy

Risultato campione

Una volta che l'installazione è riuscita e completata, vai alla directory haproxy.

cd /etc/haproxy

Eseguire il backup di haproxy.cfg rinominandolo in haproxy.cfg.bak

mv haproxy.cfg  haproxy.cfg.bak

Quindi, crea un nuovo file di configurazione HAproxy.

vim haproxy.cfg


#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    log         127.0.0.1 local2     #Log configuration

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy             #Haproxy running under user and group "haproxy"
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

#---------------------------------------------------------------------
#HAProxy Monitoring Config
#---------------------------------------------------------------------
listen haproxy3-monitoring *:8080                #Haproxy Monitoring run on port 8080
    mode http
    option forwardfor
    option httpclose
    stats enable
    stats show-legends
    stats refresh 5s
    stats uri /stats                             #URL for HAProxy monitoring
    stats realm Haproxy\ Statistics
    stats auth Password123: Password123            #User and Password for login to the monitoring dashboard
    stats admin if TRUE
    default_backend app-main                    #This is optionally for monitoring backend

#---------------------------------------------------------------------
# FrontEnd Configuration
#---------------------------------------------------------------------
frontend main
    bind *:80
    option http-server-close
    option forwardfor
    default_backend app-main

#---------------------------------------------------------------------
# BackEnd round robin as balance algorithm
#---------------------------------------------------------------------
backend app-main
    balance roundrobin                                     #Balance algorithm
    option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost    #Check the server application is up and healty - 200 status code
    server web-server-1 173.82.2.236:80 check                 #Nginx1
    server web-server-2 173.82.94.57:80 check                 #Nginx2

Prendi nota dei server web che sono stati specificati nelle ultime 2 righe come mostrato nell'output.

Salva ed esci dall'editor di testo.

Successivamente, configureremo il rsyslog demone per registrare le statistiche HAProxy.

Modifica il rsyslog.conf per consentire alla porta UDP 514 di essere utilizzata da rsyslog.

vim /etc/rsyslog.conf

Per consentire la connessione UDP tramite la porta 154, decommenta le seguenti righe.


$ModLoad imudp
$UDPServerRun 514

Salva ed esci dall'editor di testo.

Quindi, crea un nuovo file di configurazione HAProxy per syslog.

vim  /etc/rsyslog.d/haproxy.conf

Incolla la seguente configurazione


local2.=info     /var/log/haproxy-access.log    #For Access Log
local2.notice    /var/log/haproxy-info.log      #For Service Info - Backend, loadbalancer

Salva ed esci dall'editor di testo.

Procedi e riavvia rsyslog.

systemctl restart rsyslog

Quindi, avvia e abilita Haproxy per l'avvio all'avvio.


systemctl start haproxy
systemctl enable haproxy

Per confermare che HaProxy sia attivo e funzionante, eseguire:

systemctl status haproxy

Nel passaggio successivo, installeremo Nginx sui nostri server web.

Fase 3:installazione e configurazione di Nginx

L'unico passaggio cruciale rimasto è l'installazione di Nginx su ciascuno dei nostri server web.

Ma prima, installa il repository EPEL come mostrato

yum install epel-release

Quindi, installa Nginx

yum install nginx -y

Risultato di esempio

Con Nginx installato su entrambi i server, modificheremo index.html file in ciascuno dei server Web Nginx al fine di creare una distinzione tra ciascun server durante la simulazione con il sistema di bilanciamento del carico HAproxy.

Passa alla directory html come mostrato:

cd /usr/share/nginx/html/

Eseguire il backup del file index.html

mv index.html index.html.bak

Quindi, crea un nuovo file index.html e incolla del contenuto di esempio.

Per Web Server 1

echo "web-server-1. Hey ! This is your first web server" > index.html 

Per Web Server 2

echo "web-server-2. Hey ! This is your second web server" > index.html 

Quindi, avvia Nginx in entrambi i server Web e conferma se il servizio è in esecuzione


systemctl start  nginx
systemctl status nginx

Test del bilanciamento del carico

Per verificare che tutto sia andato bene, esegui ripetutamente il comando seguente.

curl 173.82.168.96

Il tuo output dovrebbe essere simile a questo.

Come puoi osservare attentamente, ad ogni successiva esecuzione del comando curl, l'output si alterna tra il primo e il secondo contenuto del server web Perfect!

Ora, proviamo a testare utilizzando il browser web.

https://load-balancer-IP-address

Questo visualizzerà il contenuto su uno dei server web, in questo caso, web-server-2.

Ora, prova ad aggiornare una o due volte e l'output punterà all'altro server web, in questo caso, web-server-1.

Stupendo! Ciò conferma che il nostro sistema di bilanciamento del carico è in grado di distribuire equamente le richieste HTTP tra i nostri server web.

PER raccogliere più statistiche del browser del sistema di bilanciamento del carico il seguente URL

https://load-balancer-IP:8080/stats

Usa la Password123 come nome utente e password come abbiamo definito in haproxy.cfg file di configurazione.

Questo riassume questo tutorial su come configurare il bilanciamento del carico HAProxy per Nginx su CentOS 7. Sentiti libero di provarlo e condividi questa guida sui tuoi social network. Come sempre, il tuo feedback sarà apprezzato.


Linux
  1. Come configurare NGINX come bilanciatore di carico TCP/UDP in Linux

  2. Come configurare HAProxy in Ubuntu 16.04

  3. Come configurare il servizio di bilanciamento del carico HAProxy

  4. Come configurare il server NTP in CentOS?

  5. Come configurare VSFTPD su CentOS 7.x?

Come configurare Nginx come proxy inverso per Apache su Ubuntu 18.04 VPS

Come configurare HAProxy su CentOS 8

Come installare Nginx su CentOS 7?

Come configurare un server NGINX RTMP per lo streaming

Come installare Nginx su CentOS 8

Come configurare il servizio di bilanciamento del carico Traefik con Docker in Ubuntu 20.04