Vous êtes ici : Accueil / Debian GNU/Linux / Serveurs / HTTP / Installer HAproxy sur Debian

Installer HAproxy sur Debian

Par Pierre-Yves Landuré Dernière modification 07/02/2014 12:29

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:

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