OpenIO Release 20.04

La release semestrielle d'OpenIO est disponible. La nouvelle version de notre « software defined storage » renforce la sécurité, ajoute quelques fonctionnalités réclamées par les utilisateurs et contient de nouvelles améliorations de performance.
This article is also available in English Read the English version
| @openio
Share

La release semestrielle d'OpenIO est disponible. La nouvelle version de notre « software defined storage » renforce la sécurité, ajoute quelques fonctionnalités réclamées par les utilisateurs et contient de nouvelles améliorations de performance.

Support du protocole TLS par le service Rawx

Le chiffrement des données à la volée côté serveur, réalisé au niveau de la gateway, à l’aide d’une clé privée fournie par l’utilisateur, est disponible depuis la version 18.10 d’OpenIO.

Cependant, le chiffrement est un procédé assez peu utilisé, en raison de son coût en termes de CPU et de la latence que les calculs de chiffrement / déchiffrement (réduction du débit traversant la gateway) induisent lors de l’écriture et de la lecture des données.

Pour améliorer la sécurité d’OpenIO, et éviter les attaques de type man-in-the-middle qui consistent à intercepter les communications entre les services internes d’une infrastructure et les gateways présentes sur un autre réseau, le service rawx, réécrit dans le langage Go depuis la release 18.10, supporte désormais le Transport Layer Security (anciennement SSL), qui permet d’établir des connexions sécurisées https.

Implémentation d’IAM (gestion des identités et des accès)

Pour la gestion des token d’authentification, OpenIO recourt à la brique Keystone du projet Openstack. En complément, et pour bénéficier d’une gestion plus granulaire des droits de chaque utilisateur (lecture / écriture / modification / accès aux métadonnées…), OpenIO est désormais compatible avec l’IAM S3 pour les besoins les plus répandus.
Il est maintenant possible de définir, pour chaque bucket, des stratégies de compartiment et des stratégies utilisateur (sur la base de groupes d’utilisateurs, auxquels on attribue une série de droits / restrictions).

Connaître la taille d’un bucket

Le bucket est « l’unité de compartimentation » d’un espace de stockage instaurée par l’API S3. Un bucket correspond en général à l’espace de stockage d’une application. OpenIO a été conçu en utilisant des « containers », soit des espaces traditionnellement affectés à un utilisateur. Pour être compatible avec l’API S3, OpenIO est capable de créer, de manière virtuelle, des buckets en fédérant un ensemble de containers selon les critères définis par l’administrateur de la plateforme. Il est maintenant possible, grâce à la commande openio bucket show <bucket-name> dans la CLI, de connaître la taille d’un bucket et le nombre d’objet qu’il contient. Des informations qui se révèlent utiles notamment pour suivre les usages et la consommation des différents utilisateurs / projets.

Implémentation du « Bucket Level Replication »

Jusqu’alors, la réplication asynchrone d’un cluster OpenIO sur un ou plusieurs sites impliquait la réplication du namespace dans son intégralité (soit l’ensemble des données contenues sur le cluster). Le service « Replicator » permet maintenant de choisir les buckets à répliquer, en fonction de leur criticité, ceci pour optimiser l’allocation de vos ressources et le coût de vos PRA/PCA.

Amélioration de la stack de Real-time monitoring et de la visualisation des données

Pour fournir des statistiques sur l’utilisation d’une plateforme OpenIO, nous avions mis en place un système basé sur plusieurs composants : des collecteurs (Netdata et Blackbox exporter) qui poussent les métriques des serveurs dans un agrégateur (Prometheus), lesquelles sont visualisées grâce à Grafana.

Nous utilisions jusque-là des plugins Netdata pour remonter les métriques spécifiques à OpenIO. Netdata excelle pour la remontée des statistiques système, mais le fonctionnement sous la forme de plugins était trop restrictif pour notre usage. Nous avons donc décidé de regrouper tout ce qui touche au monitoring et à la surveillance des briques OpenIO par un outil maison baptisé « OIO exporter ». Ainsi, la collecte de données de monitoring d'OpenIO est plus précise, plus complète et plus facilement évolutive. Nous en avons profité pour mettre à jour Grafana en version 7, et nous avons redesigné nos dashboards afin qu'ils soient plus complets et plus lisibles.

Mise à jour de la webUI

Au sein de la webUI, nous avons ajouté un dashboard regroupant les indicateurs clé du cluster, incluant notamment ceux utiles au capacity planning (projections basées sur la croissance de la plateforme). Nous comptons sur les utilisateurs pour enrichir et faire évoluer cette interface. N’hésitez pas à nous donner votre feedback ! Désormais, la webUI permet aussi de lancer en un clic des rebuilds et décommisionnements de Méta 2.

Optimisations de performance

Le multi-part upload (MPU) est de plus en plus utilisé par les applications, ceci pour paralléliser le dépôt de fichiers volumineux ou gérer les pertes de connexion côté utilisateur. En conséquence, nous avons optimisé la gestion du MPU en supprimant tous les appels non nécessaires au niveau de notre implémentation de l’API S3, ceci pour accélérer significativement les temps de téléversement des fichiers.

Pour finir, nous avons implémenté un cache pour les token Keystone, ceci pour diminuer significativement le volume de requêtes lors des opérations de transfert de données et ainsi améliorer les temps de réponse.