Comment les baies de stockage traditionnelles s’adaptent aux conteneurs
Les grands constructeurs de systèmes de stockage ont opté pour des stratégies différentes afin d’assurer l’intégration de leurs baies avec Docker. Certains ont choisi la voie des plug-ins Docker, tandis que d’autres, plus ambitieux, ont choisi de développer des frameworks d’intégration plus complets. D’autres enfin ont associé leur avenir à Flocker et à sa technologie open source d’orchestration de la persistance de données.
Face à la montée en puissance des architectures à base de conteneurs Docker, les acteurs historiques du stockage ont récemment adapté leurs offres afin de rendre accessibles leurs baies de stockage aux applications conteneurisées.
Cette « ruée vers les conteneurs » s’est toutefois opérée en ordre dispersé. Les plus ambitieux, comme Dell EMC ou IBM, se sont lancés dans le développement d’une architecture complète de stockage pour Docker tandis que d’autres ont préféré proposer un plug-in pour les volumes Docker.
Un grand nombre d’acteurs du monde du stockage traditionnel ont aussi choisi de s’appuyer sur la technologie de Flocker pour intégrer leurs baies avec Docker. Une voie qui semblait raisonnable en 2016, mais qui est aujourd’hui plus problématique. ClusterHQ, l’éditeur commercial créé pour supporter la technologie Flocker a en effet fermé ses portes en décembre2016. Flocker étant une technologie open source, la fin de Cluster HQ n’a pour l’instant aucun impact sur le bon fonctionnement des infrastructures utilisant la technologie. Mais nul ne sait vraiment quel sera son avenir.
Dell EMC joue la carte de l’open source avec Rex-Ray
Une fois n’est pas coutume, Dell EMC a choisi de s’attaquer au problème des conteneurs en développant une couche de stockage open source adaptée aux environnements Docker et Mesos. Lancé en 2016, le projet Rex-Ray fournit un mécanisme d’intégration entre certaines technologies de stockage du constructeur et les environnements de conteneurs, mais également les mécanismes nécessaires pour orchestrer le stockage dans ces environnements via des orchestrateurs comme Docker Swarm, Kubernetes ou Mesos Marathon. Pour Rex-Ray, Dell EMC a notamment mis l’accent sur le support de ses plates-formes de stockage distribuées ScaleIO et Isilon, l’intégration entre Docker et ses autres plates-formes de stockage s’effectuant via des plug-ins Flocker.
Les composants de Rex-Ray s’installent comme des services (SystemD ou System V selon les OS) sur les serveurs hôtes Linux d’un cluster de conteneurs et communiquent avec Docker via un plug-in.
Rex-Ray permet d’assurer la persistance de données des applications « stateful » s’exécutant dans des conteneurs tout en assurant une intégration avec les mécanismes d’orchestration de conteneurs comme Docker Swarm, Kubernetes ou Mesos Marathon.
L’une des caractéristiques les plus séduisantes de Rex-Ray est qu’il ne se limite pas au support des plates-formes Dell EMC. La technologie open source supporte aussi les environnements de stockage Amazon (EBS, EFS et S3), le stockage en mode bloc des clouds de Digital Ocean, Google et Microsoft, ainsi que Ceph RBD.
IBM mise sur Ubiquity pour les conteneurs
À l’instar d’EMC, Big Blue s’est lancé dans le développement de son propre projet open source pour la connexion de ses baies à Docker. Le résultat est le projet Ubiquity qui vise à créer un service Linux pour gérer l’accès aux ressources de stockage persistantes pour les conteneurs orchestrés par Docker Swarm ou Kubernetes.
Ubiquity est conçu comme un framework modulaire qui pourra, à terme, supporter une variété de stockage IBM.
Pour l’instant, la technologie supporte le stockage Spectrum Scale (ex-GPFS) en mode POSIX et NFS. Elle supporte aussi depuis peu l’accès à certains systèmes de stockage Flash d’IBM via un module pour Spectrum Control base Edition (SCBE), le logiciel de gestion de stockage de Big Blue.
L’ajout d’un module pour SCBE devrait progressivement permettre un large support des baies de stockage en mode bloc d’IBM par Ubiquity.
Flocker : une technologie prometteuse à l’avenir incertain
Développé par ClusterHQ, Flocker est une couche open source conçue pour orchestrer le mouvement des volumes Docker en parallèle des applications qu’ils servent. En assurant la migration des données en parallèle de celles des conteneurs au sein d’un cluster, Flocker permet de maintenir le lien entre les volumes et les conteneurs applicatifs qui les utilisent lorsque ces conteneurs se déplacent.
Mieux, la technologie fonctionne aussi bien lorsque les volumes sont stockés sur des hôtes locaux que sur des systèmes de stockage partagés (voir le schéma d’architecture de Flocker ci-dessous).
Flocker sait aussi interagir avec les outils d’orchestration du marché comme Docker, Kubernetes et Mesos et il offre un large support des systèmes de stockage, si bien qu’il est possible dans des infrastructures hétérogènes ou dans des architectures de cloud hybride de choisir le stockage le mieux adapté aux besoins de chaque application.
Côté OS, Flocker est certifié sur les grandes distributions Linux dont Ubuntu, CentOS 7, Red Hat Enterprise Linux 7 et CoreOS.
Adopté par de nombreux grands constructeurs Flocker a été fragilisé fin 2016 par le naufrage de ClusterHQ, la société qui portait les développements de la technologie. Dans un billet de blog, intitulé « ClusterF***ed », le CEO de la firme confirme la fermeture de la société, mais souligne aussi que le code de la technologie étant open source il restera disponible.
Il sera intéressant de voir comment les constructeurs qui avaient opté pour Flocker feront évoluer leur stratégie dans les mois à venir pour savoir si Flocker a toujours un avenir en matière de gestion de la persistance des données alors que Docker, Kubernetes et Mesosphere apportent chacun leur réponse au problème.
Les environnements de stockage supportés par Flocker
Baies de stockage supportées |
• AWS Elastic Block Storage (EBS) • Ceph (Expiremental) • ConvergeIO • Dell EMC ScaleIO, XtremeIO, VMAX, VNX/Unity, SC Series • Google Persistent Disk • Hedvig • HPE 3PAR StoreServ and StoreVirtual (avec OpenStack uniquement) • Huawei OceanStor • Kaminario • NetApp OnTap • NexentaEdge • OpenStack Cinder avec tout type de back-end de stockage • Pure Storage • Saratoga Speed • Tintri • VMware vSphere et vSAN |
Grands clouds supportés |
• AWS • OpenStack |
La voie des plug-ins pour Docker Volume
La dernière voie choisie par les constructeurs de stockage pour s’intégrer avec Docker est la voie des plug-ins pour Docker Volume. Les plug-ins pour volumes Docker Engine permettent à Docker Engine de tirer parti des capacités des baies de stockage externe, mais aussi de services de stockage en cloud pour la persistance de données.
Ils ne fournissent toutefois pas le niveau de richesse fonctionnelle de solutions comme Rex-Ray ou Flocker, notamment lorsqu’il faut orchestrer la mobilité de conteneurs et du stockage associé.
Nous avons inclus ci-dessous la liste à jour des plug-ins disponibles pour Docker Volume (telle que communiquée par Docker) ainsi qu’un résumé de leurs capacités.
Les principaux plug-ins pour Docker Volume
Plugin |
DESCRIPTION |
Permet de monter des partages Azure File Storge comme volumes dans Docker en utilisant le protocole SMB 3.0 (plug-in supporté sur Ubuntu Server). |
|
Un plug-in open source pour créer des volumes persistants sur le système de fichiers parallèle BeeGFS. |
|
Un plug-in open source qui supporte les environnements Ceph et NFS. |
|
Ce plug-in permet d’intégrer le stockage bloc de DigitalOcean avec Docker. |
|
Un plug-in qui permet à Docker de s’interfacer avec des volumes de stockage hautement disponibles délivrés par DRBD. |
|
Le plug-in Flocker permet à Docker de s’interfacer avec l’ensemble des baies de stockage supportées par Flocker. |
|
Un plug-in développé dans le cadre du projet OpenStack Kuryr et qui permet de créer des volumes Docker en s’appuyant sur Cinder, l’API de stockage en mode bloc d’OpenStack. |
|
Un plug-in permettant de créer des volumes sur le stockage en mode bloc de Google Cloud |
|
Un plug-in permettant à Docker de s’interfacer avec le stockage distribué GlusterFS (Red Hat Storage). |
|
Un plug-in pour interfacer les baies de stockage HPE 3Par et StoreVirtual avec l’API Docker Volume |
|
NetApp Plugin (nDVP) |
Un plug-in qui permet d’intégrer l’écosystème Docker avec les baies de stockage de NetApp. |
Un plug-in permettant d’intégrer Docker avec les baies de stockage de Nimble Storage d’HPE |
|
Le plug-in permettant à Portworx d’interfacer son stockage distribué avec Docker |
|
Un plug-in écrit en langage Go qui permet de supporter un grand nombre de plates-formes de stockage Cloud (VirtualBox, EC2, Google Compute Engine, OpenStack) ainsi que les baies Dell EMC ScaleIO et Isilon. |
|
Un plug-in pour le stockage distribué Virtuozzo Storage |
|
Un plug-in permettant d’intégrer le stockage vSphere avec Docker. |