HA Proxy + et multiples serveurs http sur le port 80

Aujourd’hui j’ai une IP publique et je souhaite avoir prochainement des sites webs qui tournent sur des serveurs différents.
La solution, mettre HAProxy en front est dispatcher les requêtes qui arrivent sur le port 80, vers le bon serveur en fonction du nom de domaine demandé.

Donc j’arrête mon serveur Apache (J’aurai juré l’avoir remplacé par Lighttpd !)…

apache2ctl stop

… et je le reconfigure pour qu’il écoute sur le port 8080 en modifiant le fichier « ports.conf »

Listen 8080

… puis je reconfigure mes vhosts…

<VirtualHost *:8080>

… pour finalement le redémarrer…

apache2ctl configtest
apache2ctl restart

… « restart » c’est le mal (!) … « graceful » c’est le bien !
… et vérifie qu’il tourne bien sur le port 8080.

nmap 127.0.0.1
ORT     STATE SERVICE
...
...
8080/tcp open  http-proxy
...
...

Jusqu’ici tout va bien, mais nos sites sont inaccessibles !

Donc étape 2, on installe HAProxy par un petit…

apt-get install haproxy

… puis on l’active au démarrage de la machine en éditant le fichier « /etc/default/haproxy » en y ajoutant…

ENABLED = 1

…puis on le configure au travers du fichier « /etc/haproxy/haproxy.cfg » pour rediriger toutes les requêtes du port 80 vers le port 8080

...
...
# ============
# --- HTTP ---
# ============

listen FRONTEND_HTTP 192.168.1.11:80
        mode http
        log global
        option  httplog
        stats enable
        stats auth XXXXXXXXXX:XXXXXXXXXX
        balance roundrobin
        option httpclose
        option forwardfor
        option httpchk HEAD /check.txt HTTP/1.0
        capture request header Host len 20

        default_backend BACKEND_HTTP1

# ================
# --- BACKENDS ---
# ================

backend BACKEND_HTTP1
        cookie SERVERID insert indirect nocache
        server TB_001 127.0.0.11:8080 cookie tb001 weight 100 maxconn 100 check

…on crée le fichier « check.txt », avec n’importe quel contenu, à la racine de notre serveur web et on (re)démarre…

service haproxy restart

…et comme tout s’est magnifiquement bien passé, tous nos sites sont maintenant revenus en ligne ;)

Superbe tout ça … mais on a absolument pas avancé par rapport au titre de cette article !
Donc … à suivre…

Les logs HAProxy
Si celle-ci ne sont pas disponibles, vérifiez le contenu du fichier « /etc/rsyslog.d/49-haproxy.conf »

# Create an additional socket in haproxy's chroot in order to allow logging via
# /dev/log to chroot'ed HAProxy processes
$AddUnixListenSocket /var/lib/haproxy/dev/log

# Send HAProxy messages to a dedicated logfile
if $programname startswith 'haproxy' then /var/log/haproxy.log
&~

De mon côté j’ai du faire un…

rsyslog service restart

… pour que le fichier soit créé ;)

Les commentaires sont désactivés.