Failover şi load balancing cu HAProxy

 

HAProxy este un proxy open source care poate fi folosit pentru a avea o mai mare disponibilitate  şi “load balancing” pentru tot felul de aplicaţii web. Acesta a fost conceput special pentru proiecte care necesită o disponibilitate mare , deci este foarte rapid şi previzibil, HAProxy se bazează pe un singur model de proces.

în acest post voi descrie configurarea  HAProxy: cererile utilizatorilor sunt trimise  în “load balancing”  între două servere de web Web1 și Web1, în cazul în care unul dintre ele se opreste sau devine indisponibil, toate cererile vor fi  prelucrate de către serverul disponibil, o dată ce serverul indisponibil işi revine  se va aplica “load balancing”  din nou . A se vedea topologia de mai jos.

haproxy1

Instalare

 

HAProxy este  inclus în majoritatea distribuţiilor Linux  , în cazul în care folosiţi Centos , Redhat sau Fedora tastaţi urmatoarea comandă:

yum install haproxy

 

Dacă foloseşti Ubuntu, Debian , Linux Mint sau distribuţii derivate din Debian sau Ubuntu comanda este următoarea :

 

apt-get install haproxy

 

Configurare

 

După ce instalarea HAProxy s-a terminat trebuie  să  editaţi fişierul de configurare , care de obicei , este în /etc/haproxy/haproxy.cfg . Documentaţia oficială pentru HAProxy 1.4 (stable) o găsiţi aici .

 

 

Fişierul de configurare care pune în aplicare topologia prezentată în diagrama de mai sus :

global
        user daemon
        group daemon
        daemon
        log 127.0.0.1 daemon

listen http
        bind 1.2.3.4:80
        mode http
        option tcplog

        log global
        option dontlognull

        balance roundrobin
        clitimeout 60000
        srvtimeout 60000
        contimeout 5000
        retries 3
        server web1 web1.example.com:80 check
        server web2 web2.example.com:80 check
        cookie web1 insert nocache
        cookie web2 insert nocache

 

Să ne oprim puţin asupra celor mai importante părţi a acestui config. Secţiunea „global” specifică userul şi grupul care va fi folosit de haproxy pentru a rula ( daemon în exemplul nostru). Linia „daemon” face ca HAProxy să ruleze în background , log  127.0.0.1 daemon  specifică unde HAProxy să trimită log-urile  si unde să logheze.

Secţiunea „listen http” conţine linia „bind 1.2.3.4:80” care specifică ce adresă  IP şi port să primească cereri (cererile vor fi distribuite  în „load balancing” între Web1 şi Web2).  Linia „mode http” arată ca HAProxy va filtra cererile de HTTP şi va face „load balancing” pe protocolul HTTP.

Linia „balance roundrobin” specifică algoritmul de „load balancing” şi conform acestui algoritm va trimite cererile  către fiecare server web bazându-se pe ce  weight au fiecare în configul de mai sus fiind egal.

Liniile  server web1 … si server web2…                specifică serverele web disponibile  pentru „load balancing” si „failover”, în cazul nostru ele sunt echilibrate in conformitate cu algoritmul „round robin” şi au aceeaşi prioritate.

Ultimele două linii ale configuraţiei sunt optionale , acestea fac  posibilă folosirea cookie-urile , astfel încât în cazul exemplului nostru dacă suntem logaţi într-o aplicaţie web pe serverul Web1 şi mai facem o  cerere prin HAProxy şi acesta ne trimite cererea  către Web2 să rămânem logaţi in aceeaşi sesiune deschisă  ca şi pe Web1.

 

Leave a Reply

Your email address will not be published.

captcha

Please enter the CAPTCHA text