Découvrez dans cet article comment mettre en place un cluster de sessions web avec Apache Ignite et la suite e-commerce SAP Hybris.
Apache Ignite va garder les sessions web dans un cluster “In memory”. C’est à dire qu’elles seront partagées dans la mémoire de plusieurs serveurs web.
Ci-dessous, le schéma de ce qui va être mis en place :
Overview
Chaque instance Hybris va contenir une instance d’Ignite et on peut ajouter des instances séparées d’Ignite pour la redondance des données.
Mise en place
Premièrement, il faut mettre à jour le fichier pom.xml pour récupérer les dépendances.
Après, il faut définir la configuration. Dans cet exemple, je vais mettre en place une réplication complète des sessions et demander à Ignite de détecter les autres nœuds du cluster automatiquement.
Ensuite, il faut mettre à jour le fichier web.xml de l’extension storefront :
Ici on déclare un nouveau filtre qui va démarrer le serveur embarqué Apache ignite. Attention à ne pas oublier de mettre le chemin vers le fichier de config.
Finalement, la dernière chose à faire et de mettre à jour le fichier de sécurité Spring.
storefront/web/webroot/WEB-INF/config/spring-security-config.xml
Il faut changer
par
Maintenant, au démarrage d’Hybris on peut voir dans les logs qu’une instance d’Ignite est lancée.
En plus de l’instance dans Hybris, il faut aussi au minimum une deuxième instance pour répliquer les sessions web. Par exemple, une instance en mode standalone.
Voici, un exemple de docker-compose pour rapidement démarrer une instance d’Apache Ignite.
Pour tester
Pour vérifier que tout est fonctionnel :
- Aller sur le site web et s’identifier.
- Stopper le serveur web et le redémarrer.
- Quand l’instance web est à nouveau opérationnelle, vous devriez avoir gardé votre session et être toujours connecté.
Conclusion
Ici, l’exemple est très simple, mais les sessions étant partagées entre les nœuds et du coup les clusters, cela permet notamment de stopper un des cluster pour le mettre à jour,tout en maintenant les sessions sur les autres clusters .
Ressources:
https://ignite.apache.org/use-cases/caching/web-session-clustering.html