Flocker est un système de gestion de volumes et de conteneurs Docker basé sur ZFS. Il permet à des conteneurs stateful, tels que les bases de données, d'être déplacés entre des serveurs virtuels ou physiques. Cela donne une capacité qui est analogue aux caractéristiques de la migration à chaud de certains hyperviseurs de machines virtuelles. La version 0.1 a été publiée par ClusterHQ comme un projet open source sous licence Apache 2.0.
Les deux éléments clés de Flocker sont un proxy réseau en front-end et les volumes basés sur ZFS en back-end. Le proxy peut acheminer les demandes pour les services à n'importe quel hôte exécutant le conteneur actif. Lorsqu'un conteneur est migré entre les hôtes, le volume de données ZFS est tout d'abord synchronisé et un transfert a lieu à partir du conteneur actif vers le conteneur replica de sorte que celui-ci puisse devenir actif. Il y a une courte pause dans la disponibilité pendant que le transfert a lieu, et un objectif déclaré du projet est de permettre aucun temps d'arrêt lors des migrations entre les conteneurs.
L'architecture de Flocker hérite de HybridCluster, qui a également fait usage d'un proxy frontal et de stockage ZFS. Outre l'accent mis sur Docker, l'autre principal changement est d'utiliser ZFS sur Linux (plutôt que FreeBSD). En raison de préoccupations concernant la propriété intellectuelle découlant de ses origines de Sun, et l'acquisition subséquente par Oracle, ZFS a un parcours troublé avec Linux. Fondateur et chef de la direction de ClusterHQ, Luc Marsden a déclaré :
ZFS est un système de fichiers très mature, stable et novateur. ZFS sur Linux (ZOL) est maintenant un module de noyau natif (pas de FUSE) et est en voie de préparation à la production à la fois en termes de stabilité et de performances. Il gère déjà de nombreux pétaoctets de données dans des institutions comme Lawrence Livermore National Laboratory et a résisté à nos propres stress tests pendant bien des mois sans blocages du noyau. La question de l'octroi de licences est un non-problème et Oracle n'a pas de prise sur le projet d'OpenZFS (voir la FAQ ZOL). ClusterHQ a récemment embauché Richard Yao, le deuxième contributeur le plus actif sur le projet Zol, pour aider à accélérer les corrections finales requises pour faire Zol un roc incroyablement solide. Richard rédigera l'état de Zol sur le blog ClusterHQ en détail dans les prochaines semaines.
La version 0.1 ne supporte pas les liens ("link") entre les conteneurs, et le système de liens natif de Docker n'est pas au courant du proxy Flocker et ne peut donc pas en profiter. Cela peut être contourné en passant des variables d'environnement pointant vers le proxy plutôt que vers un conteneur spécifique. Flocker utilise déjà certaines parties du projet geard de Red Hat, et l'équipe ClusterHQ prévoit de mettre en oeuvre des liens style geard dans une version ultérieure. Sur le thème du proxy, Marsden a dit :
Afin d'être en mesure de fabriquer des conteneurs portables, nous croyons que les conteneurs doivent être adressés par l'intermédiaire d'une couche de proxy avec une certaine connaissance du type de protocole qu'ils servent. Il est très souhaitable d'être en mesure d'accéder au même conteneur via une adresse IP publique dans un cluster de noeuds, car cela permet le basculement efficace basé sur IP et la portabilité entre les DNS par la simple publication de plusieurs enregistrements A. Par conséquent, l'adresse d'un conteneur devrait être par exemple (https, "clusterhq.com") s'il s'agit d'un serveur Web HTTPS. Ou peut-être (tcp, 1234) pour un service TCP générique qui devrait être disponible sur toutes les adresses IP d'un cluster en cours d'exécution.
Pour le moment, Flocker ne s'intègre pas bien avec d'autres composants de l'écosystème Docker tels que Fig, Deis ou Panamax. Assurer une gestion robuste de l'état des conteneurs qui, autrement, seraient utilisés uniquement pour les systèmes stateless, est d'une grande utilité. L'intégration Flocker pourrait devenir une cible intéressante pour d'autres projets. Flocker fonctionne également que pour des migrations planifiées telles que celles liées à la gestion des capacités. Étant donné que l'équipe de ClusterHQ a déjà fourni des infrastructures résilientes pour des hébergeurs, il est raisonnable de s'attendre à ce que des fonctionnalités similaires trouvent leur chemin dans Flocker (ou des offres commerciales construites basées sur Flocker), et même "configuration automatique, réplication continue et failover" sont sur la feuille de route.
Les développeurs qui souhaitent essayer Flocker peuvent suivre le guide de démarrage, qui utilise Vagrant et VirtualBox pour exécuter des machines virtuelles avec des démos Flocker utilisant MongoDB et PostgreSQL. Une récente présentation de Marsden au meetup Edinburgh Docker concernant "Le clustering Docker orienté données" est également disponible sur YouTube.