Installer HAproxy sur Debian
HAproxy est un serveur de répartition de charge HTTP conçu pour être placé devant une ferme de serveurs HTTP. Ce guide facilite son installation sur Debian.
Ce guide est testé sur:
- Debian 7.0 Wheezy
Prérequis
Ce guide nécessite:
- la mise en place des dépôts backports, comme décrit par Configurer les dépôts Debian Backports.
Paramètres
Renseignez le nom de la grappe haute disponibilité:
CLUSTER_NAME="cluster"
Renseignez l'adresse et le port d'écoute de la grappe haute disponibilité:
CLUSTER_BIND="*:8080"
Renseignez les membres de la grappe de répartition de charge (hôte:port, un hôte par ligne):
MEMBERS="http1.domain.com:8080
http2.domain.com:8080"
Installation
Récupérez le nom de la distribution:
DEBIAN_VERSION=$(command lsb_release -cs)
Préparation de l'environnement
Installez les logiciels nécessaires:
command apt-get -t "${DEBIAN_VERSION}-backports" install "haproxy"
Activez le serveur:
command sed -i -e 's/^ENABLED=.*$/ENABLED=1/' '/etc/default/haproxy'
Ajustez la configuration du proxy:
if [ -z "$(command grep 'option httpclose' '/etc/haproxy/haproxy.cfg')" ]; then
command sed -i \
-e '/dontlognull/a\
maxconn 20000
option httpclose\
option abortonclose\
option httpchk\
option redispatch\
timeout check 10s' \
'/etc/haproxy/haproxy.cfg'
fi
Si nécessaire, augmentez les timeouts:
command sed -i \
-e 's/contimeout.*/timeout connect 600s/' \
-e 's/clitimeout.*/timeout client 180s/' \
-e 's/srvtimeout.*/timeout server 180s/' \
'/etc/haproxy/haproxy.cfg'
Configuration
Créez la configuration du frontend de la grappe:
CONFIG="
### Setup for cluster ${CLUSTER_NAME}
frontend ${CLUSTER_NAME}-in
bind ${CLUSTER_BIND}
default_backend ${CLUSTER_NAME}
backend ${CLUSTER_NAME}
balance roundrobin"
Créez la configuration de la grappe:
for MEMBER in ${MEMBERS}; do
MEMBER_HOST="$(command echo "${MEMBER}" | command cut --delimiter=':' --fields=1)"
MEMBER_PORT="$(command echo "${MEMBER}" | command cut --delimiter=':' --fields=2)"
MEMBER_IP="$(command getent ahostsv4 "${MEMBER_HOST}" \
| command cut --delimiter=" " --fields=1 \
| command tail -n 1)"
CONFIG="${CONFIG}
server ${MEMBER_HOST} ${MEMBER_IP}:${MEMBER_PORT} check"
done
Mettez en place la configuration générée:
echo "${CONFIG}" >> '/etc/haproxy/haproxy.cfg'
Rechargez la configuration:
service haproxy reload
Remerciements
- Merci aux développeurs de HAproxy (en).
- Merci à VaLouille (fr) pour Installer HAproxy sous Debian Wheezy (fr).
- Merci à Elizabeth Leddy (en) pour HAProxy Quick Config (en).