Actualités

[22/03/2017] Smile participe au salon Cloud Computing World Expo

Smile interviendra ce mercredi 22 mars au salon Cloud Computing World Expo pour présenter notre projet collaboratif OCCIware (plateforme standard outillée de connecteurs Cloud).

[22/03/2017] Smile vainqueur des IoT Awards 2017 !

Lors de l'IoT World à Paris, Smile a remporté l'IoT Award dans la catégorie "High-tech" pour son projet de cabine connectée avec Coved.

[17/03/2017] Smile dans le Journal de l'Emploi sur Demain TV

Géraldine Moreau-Luchaire, notre Responsable Recrutement, nous parle des 350 postes à pourvoir en 2017 !

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

       
zag
comment backuper les données swift ?
jeudi 18 avril 2013 @ 19:40
       

       
Allaedine El Banna
Bonjour zag,

il faut savoir que l'un des principes majeurs de "Swift" reste toujours en 2013, la réplication des conteneurs, des comptes ainsi que des objets est toujours effectuée.

Ainsi, votre object, conteneur ou compte est présent toujours plusieurs fois au sein de votre "Cloud" (selon le niveau de réplication fixé à la création de vos anneaux).

S'il vous importe d'avoir une copie supplémentaire par exemple d'un conteneur au sein-même de votre Cloud, vous pouvez utiliser l'une des nouvelles fonctionnalités de Swift, i.e la synchronisation Conteneur-à-Conteneur (
http://docs.openstack.org/developer/swift/overview_container_sync.html).

Si cette copie doit se trouver sur un espace de stockage qui n'a rien à voir avec Swift (bande magnétique, disque dur...) je vous suggère de récupérer régulièrement vos objets Swift en passant directement par l'API.

Je vous déconseille de backupper directement un noeud Swift étant donné que la restauration s'avère délicate... Swift vous permet de définir des zones géographiques afin justement de répartir les données au possible et de s'affranchir de l'inclusion de serveurs externes au "Cloud".

En espérant avoir répondu à votre question...
lundi 27 mai 2013 @ 8:00
       
Ecrire un nouveau commentaire