Exemple
Frontend
Avec Haproxy, on peut définir plusieurs frontend et cette capacité nous permet de mutualisé ce service. Un exemple de frontend minimaliste est :
frontend myapp_front
bind *:80
default_backend myapp_back
Le mot clé frontend
permet de définir un nouveau frontend. L’indentation est très important dans la rédaction d’un fichier Haproxy. Dans frontend, on pourra définir des paramètres dont les plus importants sont :
bind
: ici la valeur*:80
a été donné.*
spécifie qu’on souhaite écouter sur tous les ip de la machine sur lequel tourne le service haproxy. C’est également possible de définir un ip précis. On aura par exemple :bind 10.0.0.1:80
default_backend
: est une variable imposée, il spécifie le backend correspondant. La valeur donnée est le nom d’un backend qui a été défini
Backend
La définition d’un backend est comme suit :
backend myapp_back
server server1 10.0.0.1:80
Le mot clé backend
permet de définir un backend. Comme paramètre, on peut spécifier les serveurs qu’on aimerait lié avec le mot clé server
.
Dans le cas où on a plusieurs serveurs dans le backend, il est possible de spécifier un algorithme de loadbalancing avec le mot clé balance
. Dans cet exemple, nous allons utiliser un algorithme de Round Robin
On retrouve alors la configuration suivante :
backend myapp_back
balance roundrobin
server server1 10.0.0.1:80
server server2 10.0.0.2:5000
L’algorithme de Round Robin est l’algorithme par défaut utiliser lorsque ce paramètre n’est pas précisé.
Au final, nous obtenons le fichier suivant :
global
log /dev/log local5 debug
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
frontend myapp_front
bind *:80
default_backend myapp_back
backend myapp_back
balance roundrobin
server server1 10.0.0.1:80
server server2 10.0.0.2:5000