Actualités

[22/05/2017] Des Smiliens récompensés lors du Hackathon Carrefour !

Notre équipe, composée en partie de Smiliens, a remporté le Prix du Code et celui de l'Incubation lors du Hackathon Carrefour, organisé ce week-end à Paris !

[18/05/2017] OpenShift, le nouveau livre blanc Smile !

Smile publie aujourd'hui un livre blanc dédié à OpenShift, le PaaS open source orienté DevOps. A télécharger dès maintenant !

[15/05/2017] Smile décroche le label HappyAtWork 2017 !

Pour la 2ème année consécutive, Smile obtient le label HappyAtWork for Starters qui récompense les entreprises où il fait bon débuter sa carrière !

Toutes les actualités picto
       

Vous avez besoin de mettre à jour votre Lecteur Flash Flash 7

Guillemet ouvrant l'actualité des solutions
et des technologies open source Guillemet fermant
picto

“Storage As A Service” avec OpenStack Swift

Parmi les multiples offres Amazon, on retient le très utilisé service Amazon S3 (“Simple Storage Service”) qui, pour faire court, met à disposition et sous contrainte de fortes disponibilités, un espace de stockage quasi-illimité.
Et si, là encore, le logiciel libre se faisait sa place ? C'est ce que propose l'alternative Swift, débutée en juillet 2010, du projet Openstack porté par le concurrent direct d'Amazon en matière de stockage en ligne, Rackspace.

Principes

L'objectif de Swift est de permettre l'accès à des fichiers de tout type (binaires, HTML, etc.) situés sur un espace “nuageux” fortement redondant et extensible. L'accès se fait via le protocole HTTP, en style REST.

Type de données

Swift gère trois types d'objets différents :

  • l'objet, soit le type de plus bas niveau. Il s'agit d'un fichier, auquel on associe son Etag (hash MD5 du contenu), et d'autres informations comme sa taille, sa date de dernière modification...ainsi que des méta-données diverses au goût de l'administrateur,
  • le conteneur, qui “contient” les objets. Pour être plus exact, il liste les objets qui lui sont rattachés, un peu à la manière d'un répertoire UNIX,
  • le compte, qui définit un ensemble de conteneurs rattachés. Il est comparable à un accès utilisateur.

On retrouve dans le conteneur une fonctionnalité similaire au fameux “bucket” dans Amazon S3.

Stockage distribué

En ce qui concerne l'implémentation, Swift est basé sur le concept d'”anneau”, qui représente une abstraction globale de stockage au sein d'un même réseau. Tout périphérique de stockage accessible d'une machine (disque simple, espace NFS ou SAN, clé USB...) peut être attaché à l'anneau constitué et est alors traité de la même manière que les autres espaces de stockage, moyennant :

  • l'appartenance à une zone de réplication, ce qui permet d'assurer qu'un fichier ne sera répliqué que dans des zones différentes. Par exemple, on peut envisager des zones basées sur les liaisons aux commutateurs ou la présence sur des sites distants,
  • la notion de poids, qui permet de gérer au mieux les disparités entre espaces disques disponibles sur chacun des espaces de stockage.

L'anneau maintient par la suite en continu, une table interne lui permettant de situer précisément où se trouve un fichier donné ainsi que ses répliques (le nombre de répliques est réglable par anneau). L'interrogation d'un anneau pour un fichier donné réussit tant qu'il reste au moins une réplique accessible.

Il y a ainsi généralement un anneau pour les objets “Swift”, ainsi que deux autres anneaux respectivement pour les conteneurs et les comptes. Les anneaux sont totalement indépendants les uns des autres et on peut y voir un moyen simple de séparer les données des méta-données.

Enfin, les anneaux sont aisément extensibles et il reste aisé de sortir ou faire rentrer un périphérique donné, en ne se souciant pas de la réplication nécessaire qui sera automatiquement assurée par la suite.

Architecture REST

L'accès à un fichier se fait par le biais d'un serveur proxy Swift, dédié à l'interrogation des anneaux constitués. Les requêtes d'accès à un fichier, de dépôt de fichier ou d'interrogation simple (listing de conteneur par exemple) se font en HTTP (méthodes PUT, GET, DELETE...) et suivent un schéma précis.

La liaison avec un serveur MemcacheD est native (librairie Python) tandis que le serveur d'authentification n'est qu'un serveur HTTP particulier suivant un protocole de style REST précis. La lecture ou l'écriture sur l'”anneau”, que ce soit pour éditer des conteneurs ou récupérer un fichier se déroulent de la même façon. Le serveur proxy connait la structure des anneaux et sait où récupérer un fichier si une réplique se fait subitement absente, ou lente à parvenir. Ce modèle est alors efficace dans le sens où, non seulement on pallie l'indisponibilité d'un noeud, mais également sa charge.

Le serveur proxy via le serveur d'authentification, autorise ou non l'accès au contenu.

Cohésion

Un cohésion globale est assurée dans l'ensemble de l'architecture :

  • les serveurs proxy peuvent être redondants et partager le même serveur memCacheD,
  • des processus réplicateurs se chargent, en continu, de surveiller que le nombre de répliques au sein d'un anneau est toujours atteint ; le cas échéant, une réplication Rsync est déclenchée.
  • des processus auditeurs procèdent en continu à une surveillance de l'accessibilité des fichiers (pour pallier les problèmes de “bit rot”, par exemple).

Nouveautés

Dans les récentes versions de Swift, on dénote des fonctionnalités très intéressantes :

  • une internationalisation/localisation de plus en plus développée,
  • l'implémentation de l'API Amazon S3 (de manière expérimentale), qui permettra de communiquer sans problèmes avec des clients et applications implémentés à l'origine pour S3,
  • la compression des requêtes HTTP et par la même, des transferts de données. Les taux de bande passante utilisée peuvent aussi être limités,
  • la possibilité de servir les fichiers statiques d'un site directement à partir d'un conteneur Swift, ce qui permet de gagner en rapidité et en sécurité.

Et après...

La dernière version d'Openstack Swift est parue en avril 2011 (Cactus Release), et est toujours basée sur des technologies standard et répandues (Rsync, Python 2.6, SQLite) : la simplicité de l'outil permet un déploiement rapide, une maintenance aisée et une customisation sans limites. Sans doute nous dirigeons-nous de plus en plus vers un standard même du “Storage As A Service”...

Allaedine El Banna
picto

Commentaires

Soyez la premiere personne à ajouter un commentaire sur cet article.
Ecrire un nouveau commentaire