global
#option global a HAProxy
log 127.0.0.1 local0
#Definition des logs syslog
maxconn 4096
#Nombre de connexions Max que va accepté HAProxy
#Les connexions sont comprises
#au sens 'acceptation de connexion', donc il faut s'attendre en règle général à
#avoir un peu plus du double de sessions TCP que le maximum de connexions fixé.
#C'est important pour fixer le paramètre 'ulimit -n' avant de lancer le proxy.
#Pour comptabiliser le nombre de sockets nécessaires, il faut prendre en compte
#ces paramètres :
# - 1 socket par connexion entrante
# - 1 socket par connexion sortante
# - 1 socket par couple adresse/port d'écoute par proxy
# - 1 socket pour chaque serveur en cours de health-check
# - 1 socket pour les logs (tous serveurs confondus)
#Dans le cas où chaque proxy n'écoute que sur un couple adresse/port,
#positionner la limite du nombre de descripteurs de fichiers (ulimit -n) à
#(2 * maxconn + nbproxy + nbserveurs + 1). A partir des versions 1.1.32/1.2.6,
#il est possible de spécifier cette limite dans la configuration à l'aide du
#mot-clé global 'ulimit-n', à condition bien entendu que le proxy ait été
#démarré sous le compte root (ou avec des droits suffisants pour élever le
#nombre de descripteurs de fichiers). Cette solution met un terme au problème
#récurrent d'incertitude de l'adéquation entre les limites systèmes lors de la
#dernière relance du proxessus et les limites en nombre de connexions. Noter que
#cette limite s'applique par processus.
#Certaines doc donne 1Go de RAM pour 20k connexions
user haproxy
group haproxy
# User et groupe avec lequel HAProxy est lancé
stats socket /var/run/haproxy.stat level admin
#Création d'un socket de stats avec les droits admin
defaults
#Paramètres par défaut s'ils ne sont pas définis dans une section
log global
#on utilise les paramètres de log déclarés dans la section global
mode http
#on traite des requêtes HTTP
option httplog
#on génère de logs un peu plus verbeux que par défaut
option dontlognull
#ne log pas les sessions n'ayant pas donné lieu à un échange de données (requête ou réponse).
retries 3
#Nombre de reconnexion par serveur backend avant abandon de la connexion
option redispatch
#Cette option est utilisée lorsqu'il y a de la persistance de sessions,
#HAProxy renvoie vers un nouveau backend lorsque le serveur de backend initiale devient indisponible.
maxconn 2000
#Nombre de connexions max par defaut/frontend/backend/listen
contimeout 5000
#temps d'attente de l'établissement d'une connexion vers un serveur (en ms)
clitimeout 50000
#temps d'attente d'une donnée de la part du client, ou de la possibilité de lui envoyer des données (en ms)
srvtimeout 50000
#temps d'attente d'une donnée de la part du serveur, ou de la possibilité de lui envoyer des données (en ms)
listen IP_stats 192.168.5.17:80
#Déclaration d'un listen pour les statistiques
stats enable
stats uri /stats // Endroit où les stats seront consultables
stats auth pseudo:password // votre username : password
frontend ft_www
#Déclaration d'un frontend
bind 192.168.5.18:80
#IP et port d'écoute du frontend
mode http
#c'est une VIP HTTP
log global
#On utilise la configuration de log du mode global
option httplog
#Log verbeux HTTP
maxconn 4000
#Nombre de connexion max sur le frontend
default_backend bk_apache
#backend utilisé
backend bk_apache
#Déclaration du backend
balance roundrobin
#Algorithme de load balancing
mode http
#backend de type HTTP
server apache1 10.0.0.1:80 check cookie srv1
server apache2 10.0.0.2:80 check cookie srv2
server apache3 10.0.0.3:80 check cookie srv3
#Déclaration des backends