RousselTMLEARNING

Proxy & réseau

Persistance de session (Stickiness)

Comprendre comment garantir qu'un utilisateur reste sur le même serveur backend durant toute sa session.

1. Persistance par Cookie #

La méthode la plus fiable pour les applications HTTP.

Insertion de Cookie #

HAProxy insère un cookie dans la réponse du serveur. Au retour, il lit ce cookie pour savoir vers quel serveur diriger la requête.

backend app_servers
    balance roundrobin
    cookie SERVERID insert indirect nocache
    server s1 10.0.0.1:80 check cookie s1
    server s2 10.0.0.2:80 check cookie s2

2. Persistance par IP Source #

Utilisée quand l'application ne gère pas les cookies ou pour du trafic non-HTTP.

L'algorithme source #

L'IP de l'utilisateur est hachée pour désigner un serveur. Simple, mais problématique si beaucoup d'utilisateurs partagent la même IP (ex: entreprise via un proxy).

backend app_servers
    balance source
    server s1 10.0.0.1:80 check

3. Les Stick-Tables #

La mémoire interne de HAProxy pour une persistance avancée.

Stockage en mémoire #

Les stick-tables permettent de stocker des informations (IP, ID de session) et de les partager entre plusieurs nœuds HAProxy via Peers.

backend myapp
    stick-table type ip size 100k expire 30m
    stick on src

Conclusion #

Maintenir l'état utilisateur.

Choisir la bonne méthode #

Le cookie est privilégié pour le Web, tandis que l'IP source ou les stick-tables sont indispensables pour les flux persistants complexes (TCP, RDP, etc.).

Pour aller plus loin