Par Arx One 12 novembre 2021
Il y a quelques mois nous avons inauguré une nouvelle infrastructure dédiée au fonctionnement de notre service de partage de fichiers, Seafile. Cette infrastructure est organisée en cluster pour vous proposer une disponibilité et des performances optimales lors de l’utilisation de notre offre de partage collaboratif.
Présentation générale
Seafile, qui est un logiciel open source, utilise un certain nombre de composants et services pour fonctionner :
- Le service Seafile lui-même, qui gère la communication avec l’agent de synchronisation (Client Seafile) comme avec le lecteur virtuel (Seadrive) et anime le portail web (Seahub)
- Une base de données, pour stocker toutes vos informations utilisateurs, droits et l’historique des données
- Un système de stockage, pour accueillir les fichiers et stocker leur historique
- Un gestionnaire de cache pour assurer une homogénéité des sessions sur l’ensemble de la grappe de services
Chacun de ces services est indispensable au fonctionnement de Seafile et nécessite donc d’être sécurisé afin de proposer la meilleure disponibilité possible.
Organisation du cluster
Nous nous sommes appuyés sur la documentation officielle quant à la mise en place d’un cluster. Voici un schéma qui résume l’organisation générale du cluster Seafile :
- Equilibrage de charge : notre grappe de firewalls assure les fonctions d’équilibrage de charge et de basculement (failover) vers nos serveurs frontaux Seafile. Cela permet de fluidifier les opérations en répartissant la charge de travail et d’assurer la résilience du service en cas d’indisponibilité d’un des serveurs.
- Virtualisation des serveurs Seafile : les serveurs frontaux Seafile et le serveur de maintenance (chargé de l’indexation des fichiers et de vous envoyer les mails de suivi, entre autres choses) sont des machines virtuelles fonctionnant sur un cluster de machines physiques Hyper-V. Le point d’entrée du service est donc assuré par plusieurs machines virtuelles et physiques. Cela permet là encore d’assurer la résilience même en cas de panne ou de maintenance logicielle sur une des machines.
- Gestion des sessions : là encore, même si cette partie est moins critique, la gestion des sessions utilisateurs sur le portail Seafile est assurée par un groupe de machines virtuelles, toujours pour des raisons de disponibilités du service.
- Cluster de base de données : Comme pour les autres composants du système, nous avons virtualisé les serveurs membres de la grappe de base de données. Plusieurs machines sont actives simultanément et réparties sur différentes machines physiques, le tout en synchronisation temps réel.
- Le service de stockage distribué a été réalisées un peu différemment : le stockage est réparti sur une grappe de disques, elle-même éclatée sur plusieurs machines physiques. L’objectif est double :
- Être résilient à la perte de disques ou de machine physique
- Etendre le stockage par simple ajout de disques ou de machines
Dans les grandes lignes, nous avons suivi les préconisations de la documentation officielle bien que cette dernière fasse preuve de certaines lacunes… Nous avons ajouté deux choses principales à cette grappe de services qui nous paraissaient aussi importantes qu’absentes :
- La couche de virtualisation avec réplication sur différentes machines physiques
- La logique de répartition de charge et de basculement sur l’ensemble des services de la grappe
Bonus !
Quitte à faire évoluer l’infrastructure, c’était une belle opportunité pour ouvrir notre service de partage collaboratif à d’autres applications…
Nous avons ajouté deux composants :
- Un serveur OnlyOffice permettant l’édition en ligne des documents directement depuis le portail Seahub.
- L’ouverture du protocole Webdav, permettant de connecter des applications tierces au service Seafile, comme du partage de notes, par exemple…
Mais tout cela fera l’objet de futurs articles 😊
N’hésitez pas à nous contacter si vous avez des questions ou besoin d’aide sur la mise en œuvre d’un cluster Seafile.