HA Proxy

HA Proxy

HAProxy permet de faire du Load Balancing.

Le Load Balancing permet de créer des replicas du serveur d’application afin de répartir la charge entre ces replicas.

Le Load Balancing peut être implémenté au niveau de :

  • la couche 4 d’OSI, c’est-à-dire au niveau du protocole TCP ou UDP,
  • la couche 7 d’OIS, c’est-à-dire au niveau applicatif avec les protocoles HTTP, SMTP ou DNS.

Installons HAProxy :

sudo apt-get update
sudo apt-get install haproxy

Pour être sûr de bien installer la dernière version de HAProxy, utilisez le repository ppa:vbernat en précisant la version de haproxy- que vous souhaitez :

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:vbernat/haproxy-1.6
sudo apt-get update && apt-get install haproxy

Activons le démarrage automatique de HAProxy au boot en modifiant la valeur de ENABLE en 1 du fichier /etc/default/haproxy.

Configurons maintenant HAProxy comme frontend pour un cluster de serveurs d’application.

Créons une copie du fichier de configuration /etc/haproxy/haproxy.cfg :

cd /etc/haproxy
sudo cp haproxy.cfg haproxy.cfg.copy

Dans le fichier haproxy.cfg, dans la section defaults, modifier la valeur des attributs :

  • mode en tcp,
  • option en tcplog.

Configurons HAProxy pour oécouter l’adresse IP publique sur le serveur HAProxy. Ajoutez l’attribut frontend pour recevoir les requêtes :

frontend www
   bind 57.105.2.204:80    # haproxy public IP
   default_backend as-backend    # backend used

Configurons une adresse IP privée pour les serveurs d’application. HAProxy communiquera avec eux à travers l’interface réseau privée afin de réduire au maximum la latence réseau. Pour cela, ajoutons les serveurs d’application de backend et spécifions l’algorithme de load balancing leastconn :

backend as-backend
   balance leastconn
   mode tcp
   
server as1 10.0.2.71:80 check    # application srv 1
server as2 10.0.2.72:80 check    # application srv 2

HAProxy supporte plusieurs algorithmes de load balancing algorithms, dont :

  • round-robin (par défaut) : il répartit la charge d’une manière “round robin”,
  • leastconn : il sélectionne le serveur backend avec le moins de connexions,
  • source : il utilise le hash de l’adresse IP du client et l’associe au backend afin de s’assurer qu’un utilisateur soit toujours traité par le même serveur de backend.

Configurez rsyslog pour accepter les logs de HAProxy sur UDP en décommentant dans le fichier /etc/rsyslog.conf les paramètres :

$ModLoad imudp
$UDPServerRun 514

Créez un fichier /etc/rsyslog.d/haproxy.conf contenant l’emplacement du fichier de log HAProxy :

local2.*  /var/log/haproxy.log

Rédémarrez le service rsyslog :

sudo service rsyslog restart

Redémarrez HAProxy:

sudo service haproxy restart

Vous pouvez maintenant accéder au backend.

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×