HAproxy

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

Accédez aux statuts d'un serveur HAproxy via une interface Web intégrée dans un espace dédié à l'état en temps réel de votre serveur.

Ce guide est testé sur:

  • Debian 6.0 Squeeze
  • Debian 7.0 Wheezy

Prérequis

Ce guide nécessite:

Paramètres

Renseignez le domaine d'accès aux statuts du serveur:

DOMAIN="status.domain.com"

Installation

Détectez le fichier de configuration du site de statut:

STATUS_VHOST="$(command grep -rl \
    "STATUS PAGES CONFIGURATION END" \
    '/etc/apache2/sites-available')"

Détectez le chemin d'installation utilisé:

if [ -n "${STATUS_VHOST}" ]; then
INSTALL_PATH="$(command grep "DocumentRoot" "${STATUS_VHOST}" \
| command sed -e 's/^[ \t]*//;s/[ \t]*$//' -e 's/[ \t]*[ \t]/ /g' \
| command cut --delimiter=" " --field=2)"
fi

Détectez l'éventuel sous-dossier des pages de statut:

if [ -n "${STATUS_VHOST}" ]; then
SUB_FOLDER="$(command grep -E "^[ \t]*Alias[ \t].*[ \t]${INSTALL_PATH}" "${STATUS_VHOST}" \
    | command sed -e 's/^[ \t]*Alias[ \t]*\([^ \t]*\)[ \t].*$/\1/')"
fi

Configurez les pages de statistiques de HAproxy:

if [ -e '/etc/haproxy/haproxy.cfg' ]; then
  if [ -z "$(command grep 'listen stats 127.0.0.1:18080' '/etc/haproxy/haproxy.cfg')" ]; then
    echo "# HAproxy usage statistics
listen stats 127.0.0.1:18080
    mode http
    stats enable
    stats hide-version
stats refresh 5s
    stats realm Haproxy\ Statistics
    stats uri ${SUB_FOLDER}/haproxy
    # stats auth Username:Password" \
        >> '/etc/haproxy/haproxy.cfg'
  fi
fi

Activez le module proxy d'Apache 2:

command a2enmod proxy proxy_http

Configurez Apache pour servir les statuts de HAproxy:

if [ -n "${STATUS_VHOST}" -a -e '/etc/haproxy/haproxy.cfg' ]; then
command sed -i -e "/STATUS PAGES CONFIGURATION END/i\\
  # HAproxy statistics.\\
  ProxyPassReverse  ${SUB_FOLDER}/haproxy http://localhost:18080${SUB_FOLDER}/haproxy\\
  ProxyPass ${SUB_FOLDER}/haproxy  http://localhost:18080${SUB_FOLDER}/haproxy\\
" "${STATUS_VHOST}"
fi

Rechargez la configuration de HAproxy:

if [ -n "$(which service)" ]; then
  service haproxy restart
  service apache2 force-reload
else
  /etc/init.d/haproxy restart
  /etc/init.d/apache2 force-reload
fi

Ajoutez le lien correspondant à la page d'accueil du domaine.

if [ -e "/etc/haproxy/haproxy.cfg" ]; then
command sed -i -e '/<\/ul>/i\
<li><a href="./haproxy">HAproxy statistics</a></li>' \
  "${INSTALL_PATH}/index.html"
fi

Vous pouvez maintenant accéder aux statistiques de HAproxy.