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

Come configurare HAProxy come Load Balancer per Nginx su CentOS 7

HAProxy o High Availability Proxy è un software open source di bilanciamento del carico TCP e HTTP e server proxy. HAProxy è stato scritto da Willy Tarreau in C, supporta SSL, compressioni, keep-alive, formati di log personalizzati e riscrittura dell'intestazione. HAProxy è un server proxy veloce e leggero e un sistema di bilanciamento del carico con un ingombro di memoria ridotto e un basso utilizzo della CPU. È utilizzato da grandi siti come Github, StackOverflow, Reddit, Tumblr, Twitter e altri. È diventato il più popolare sistema di bilanciamento del carico software e server proxy negli ultimi anni.

In questo tutorial, ti guiderò attraverso l'installazione e la configurazione di HAProxy per 3 server, un sistema di bilanciamento del carico e due server Web Nginx. Installeremo HAProxy su un singolo server e quindi installeremo il server web Nginx sugli altri server. HAProxy funge da bilanciamento del carico per i server Web Nginx.

Concetto di base con HAProxy

Livello 4 e Livello 7

HAProxy può essere eseguito in due modalità:modalità TCP Layer 4 e modalità HTTP Layer 7. Nella modalità TCP Layer 4, HAProxy inoltra i pacchetti RAW TCP dal client ai server delle applicazioni. Nella modalità HTTP di livello 7, HAProxy analizza l'intestazione HTTP prima di inoltrarla ai server delle applicazioni. In questo tutorial, useremo Nginx come server web che supporta solo la modalità HTTP Layer 7.

Algoritmo di bilanciamento

Questo è l'algoritmo utilizzato da HAProxy per selezionare il server durante il bilanciamento del carico. Sono disponibili le seguenti modalità:

Roundrobin

Questo è l'algoritmo di bilanciamento più semplice. Per ogni nuova connessione, verrà gestita dal server di backend successivo. Se viene raggiunto l'ultimo server di backend nell'elenco, ricomincerà dall'inizio dell'elenco di backend.

Ultima connessione

La nuova connessione verrà gestita dal server back-end con il minor numero di connessioni. Questo è utile quando il tempo e il carico delle richieste variano molto.

Fonte

Questo è per le sessioni permanenti, l'IP del client verrà sottoposto a hash per determinare il server back-end che ha ricevuto l'ultima richiesta da questo IP. Quindi un IP A sarà sempre gestito da backend1 e un IP B sarà sempre gestito da bankend2 per non interrompere le sessioni

Ci sono altri algoritmi:controlla il sito ufficiale di HAProxy per i dettagli.

Prerequisiti

  • 3 CentOS 7

bilanciatore di carico
            192.168.1.102

           nginx1
           192.168.1.104

            nginx2
            192.168.1.105

  • Privilegi di root su tutti e 3 i server.

Fase 1 - Configura i file /etc/hosts

Accedi al server di bilanciamento del carico e modifica il file /etc/hosts.

ssh [email protected]
sudo su
vi /etc/hosts

Aggiungi i nomi host nginx1 e nginx2:

192.168.1.104    nginx1.loadbalancer.me     nginx1
192.168.1.105    nginx2.loadbalancer.me     nginx2

Salva il file ed esci dall'editor.

Quindi, modifica il file hosts sui server Nginx (nginx1 e nginx2):

ssh [email protected]
ssh [email protected]

Modifica e aggiungi una nuova riga per il sistema di bilanciamento del carico nei file hosts:

vi /etc/host

Aggiungi il nome host del loadbalancer su ogni server nginx:

192.168.1.102    loadbalancer

fallo sui server nginx1 e nginx2.

Fase 2:installazione e configurazione di HAProxy

HAProxy è disponibile nel repository CentOS 7, accedi al server loadbalancer e aggiorna gli elenchi dei pacchetti:

ssh [email protected]
yum -y update

Ora installa HAProxy con questo comando yum:

yum -y install haproxy

Al termine dell'installazione, vai alla directory "/etc/haproxy/" ed esegui il backup del file di configurazione originale:

cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg.orig

Quindi, aggiungi un nuovo file di configurazione HAProxy "haproxy.cfg" con l'editor vi:

vi haproxy.cfg

Incolla la configurazione di seguito:

#---------------------------------------------------------------------
# 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 howtoforge:howtoforge            #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 roundrobin 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 nginx1 192.168.1.104:80 check                 #Nginx1
    server nginx2 192.168.1.105:80 check                 #Nginx2

Salva il file di configurazione ed esci.

Quindi, configura rsyslog per HAProxy.

Configurare il demone rsyslog per registrare le statistiche HAProxy. Modifica il file rsyslog.conf per consentire alla porta UDP 514 di essere utilizzata da rsyslog.

vi /etc/rsyslog.conf

Decommenta questa riga per abilitare la connessione UDP:

$ModLoad imudp
$UDPServerRun 514

Se vuoi utilizzare un IP specifico, puoi aggiungere una nuova riga come quella qui sotto:

$UDPServerAddress 127.0.0.1

Salva il file ed esci.

Quindi crea un nuovo file di configurazione haproxy per rsyslog:

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

Incolla la configurazione di seguito:

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.

Ora riavvia rsyslog e quindi avvia l'haproxy:

systemctl restart rsyslog
systemctl start haproxy

Aggiungi haproxy per iniziare all'avvio:

systemctl enable haproxy

Fase 3 - Installa e configura Nginx

In questa sezione installeremo Nginx dal repository epel sui server nginx1 e nginx2.

Accedi ai server:

ssh [email protected]
ssh [email protected]

Installa il repository epel con il comando yum di seguito:

yum -y install epel-release

Ora puoi installare Nginx:

yum -y install nginx

Nginx è installato. Vai alla directory web e cambia il file di indice in modo che possiamo vedere quale dei due server ha consegnato il file html:

cd /usr/share/nginx/html/
echo "<h1>nginx1.loadbalance.me</h1>" > index.html     #For nginx1 server
echo "<h1>nginx2.loadbalance.me</h1>" > index.html     #For nginx2 server

Quindi, aggiungi Nginx per iniziare all'avvio e quindi avvialo:

systemctl enable nginx
systemctl start nginx

Assicurati di eseguire questo passaggio sul server nginx1 e nginx2.

Fase 4 - Test

Test dal browser accedendo all'IP del loadbalancer:192.168.1.102

Test con il comando curl:

curl 192.168.1.102

Test per accedere al monitoraggio web HAProxy in esecuzione sulla porta 8080 con nome utente e password "howtoforge":

http://192.168.1.102:8080/stats

HAProxy funziona con successo e funge da bilanciatore del carico per i nostri due server web Nginx.

Conclusione

HAProxy o High Availability proxy è un software open source che fornisce alta disponibilità per servizi basati su TCP, funziona come bilanciatore di carico HTTP e server proxy. Il software è scritto in C e supporta SSL, keep-alive e compressione. HAProxy è la scelta giusta per tutti coloro che necessitano di un sistema di bilanciamento del carico e di un server proxy veloce e leggero con un ingombro di memoria ridotto e un utilizzo ridotto della CPU. Haproxy può essere eseguito in modalità Layer 4 TCP e Layer 7 HTTP. Nginx supporta solo la modalità HTTP Layer 7 con HAProxy. Se desideri utilizzare la modalità TCP Layer 4, puoi utilizzare altri server Web come Apache. In CentOS 7, HAProxy è disponibile nel repository predefinito. È facile da installare e configurare.


Cent OS
  1. Come installare Nginx su CentOS 7

  2. Come installare Nginx su CentOS 8

  3. Come installare Magento 2.1 su CentOS 7

  4. Come configurare il servizio di bilanciamento del carico HAProxy

  5. Come configurare il server VNC per i nuovi utenti in CentOS/RHEL 5

Come installare HAProxy su CentOS 8

Come configurare HAProxy come Load Balancer per Nginx su CentOS 8

Come installare Varnish Cache 6 per Nginx su CentOS/RHEL 8

Come configurare HAProxy come Load Balancer per Nginx in CentOS 7

Come configurare HAProxy su CentOS 8

Come configurare un server NGINX RTMP per lo streaming