Gestion de session avec un cluster redis

Voyons comment mettre en pratique les deux articles précédents (ici et ici).

Les choses n’étant pas encore très évolués du cote de spring-data-redis pour le mode cluster, je suis revenu sur la version de session-webapp utilisant une valve tomcat.

Les seules modifications apportées sont la suppression de l’image redis (je vais utiliser la version cluster) et l’utilisation d’une nouvelle image docker de base pour les serveurs Tomcat.

En effet, j’ai modifié la valve pour utiliser la nouvelle classe JedisCluster à la place de Jedis.
Mais pour que cela fonctionne, j’ai du utilisé la version 3.0.0-SNAPSHOT de jedis. La version releasée actuelle n’implémente pas les commandes binary par la lecture/ecriture.

J’ai du également modifié l’image docker pour le cluster redis car par default, le cluster est configuré en 127.0.0.1. Mais quand le client java essaye de découvrir la topologie du cluster, il obtient ces ips, et ne peux pas se connecter aux autres noeuds. La modification permet d’établir la connexion sur l’ip du conteneur.

Il ne reste plus qu’à lancer tout ce petit monde:

redis:

tomcat & haproxy

 

Lorsque je crée une session, je la vois bien sur un noeud redis et sur un autre noeud, je vois bien le message de redirection:

 

 

 

Les sources sont ici:
tomcat-session-manager
webapp
docker-redis-cluster