Installazione di HAProxy (High Availability Proxy) su CentOS 7
In questo tutorial andremo ad installare il software di bilanciamento carichi HAProxy (High Availability Proxy) su CentOS 7.
Per dimostrare il funzionamento di questo componente open source, utilizzeremo tre server CentOS (per l’installazione seguire questo articolo): il primo sarà impiegato come Load Balancer ed installeremo HAPRoxy, mentre gli altri due fungeranno da Web Server (installeremo Apache HTTP). I tre server dovranno avere tre indirizzi ip statici.
Utilizzeremo VirtualBox per la creazione delle macchine virtuali. Iniziamo con l’ installazione dei web server Apache, partiamo con il primo che chiameremo webserver1
yum install vim
yum install httpd
essendo in un ambiente di laboratorio spegniamo il servizio selinux
vim /etc/selinux/config
impostando il valore della variabile SELINUX=disabled, ed abilitiamo l’HTTP (porta 80) sul firewall
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload
Sicuri che il web server funzioni, impostiamo l’avvio automatico
systemctl enable httpd
systemctl start httpd
systemctl status httpd
l’ultima istruzione è utile per capire se il server web è attivo ( in uscita deve dare RUNNING).
Per poter essere raggiungibile dal servizio HAProxy, configuriamo sia il hosts che l’hostname di questo primo web server
vim /etc/hosts
che avrà questa impostazione (indirizzo ip del server e nome della macchina)
ip_server_haproxy serverhaprox
ip_webserver_1 webserver1
ip_webserver_2 webserver2
impostiamo il nome della prima macchina virtuale
hostname webserver1
Per distinguere quale server HAProxy contatterà, creiamo una pagina test html
vim /var/www/html/index.html
in cui scriveremo Server1
systemctl reload httpd
La prima macchina server è terminata, attraverso le funzioni di VirtualBox cloniamo webserver1 (spegniamo la macchina per poterla clonare su VirtualBox), imponendo in fase a VirtualBox di creare un nuovo MAC Address per impostare il secondo indirizzo ip statico del tutorial (l’opzione è “Inizializza nuovamente l’indirizzo MAC di tutte le schede di rete”).
Per la seconda macchina clonata, cambiaremo la pagina web che abbiamo creato
vim /var/www/html/index.html
scrivendo Server2, impostiamo come hostname webserver2
hostname webserver2
il file hosts (per avere un dns interno alla nostra architettura) è già impostato dato che abbiamo clonato la macchina.
Adesso che i web server sono attivi, concentriamo la nostra attenzione sulla macchina Load Balancer, installiamo HAProxy, l’idea della nostra architettura è questa:
yum install haproxy
anche per questo server disabilitiamo il selinux e permettiamo di poter accedere alla porta 80/HTTP attraverso il firewall, come fatto per i server web.
Impostiamo il file hosts come abbiamo impostato nei web server.
La configurazione del bilanciatore di carico HAProxy, avviene attraverso il file di configurazione
vim /etc/haproxy/haproxy.cfg
per la nostra architettura avremo
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/statsdefaults
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 3000frontend serverha
bind *:80
mode http
stats uri /haproxy?stats
default_backend webserver
option forwardforbackend webserver
balance roundrobin
server webserver1 ip_webserver_1:80 check
server webserver2 ip_webserver_2:80 check
abilitiamo all’avvio il servizio HAProxy ed avviamolo
systemctl enable haproxy
systemctl start haproxy
systemctl status haproxy
possiamo testare il bilanciamento di carico, proveremo ad effettuare tanti accessi al server HAproxy, dinfatti si noterà che dal browser una volta comparirà Server1 ed un’ altra Server2. Per testare invece il failover, potremo per test spegnere un web server e verificare che se accediamo al server HAProxy, quest’ultimo punterà solamente al solo web server attivo.
Per monitorare il servizio HAProxy in tempo reale, utilizziamo il seguente indirizzo
http://ip_haproxy_server/haproxy?stats
avremo la seguente schermata