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
entcp
,option
entcplog
.
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.