ekzman - Fotolia

Stockage objet : comment OpenIO est parvenu à atteindre 171 Go/s

En battant un record mondial sur les vitesses d’écriture, la startup française a surtout démontré que son stockage objet est le seul où l’ajout de nœuds fait croître d’autant les performances.

Le système de stockage objet OpenIO, mis au point par la startup française du mĂŞme nom, vient de battre un record mondial de vitesse en atteignant un dĂ©bit de 1,37 Tbit/s (environ 171 Go/s) en Ă©criture sur un cluster de 350 machines. Techniquement, la prouesse n’est pas tant le dĂ©bit total mesurĂ©, mais plutĂ´t le fait que la performance de ce système ne cesse de croĂ®tre quand on ajoute des nĹ“uds serveur.

En stockage objet, en effet, ajouter des machines Ă  un cluster ne fait d’ordinaire qu’augmenter sa capacitĂ©. La vitesse, elle, dĂ©pend du contrĂ´leur qui sert de passerelle entre les serveurs de calcul et ceux bardĂ©s de disques ; elle n’augmente a priori pas, ou alors faiblement en ajoutant des contrĂ´leurs.

« Jusqu’à prĂ©sent, personne n’associait le stockage objet Ă  la performance. Il s’agissait juste d’avoir le plus de place possible, Ă  faible coĂ»t, pour archiver des fichiers, Ă©ventuellement traitĂ©s en diffĂ©rĂ© par des applications documentaires. Mais la situation a rĂ©cemment changĂ© avec l’arrivĂ©e d’outils de messagerie compatibles. Dès lors, le stockage objet a basculĂ© dans une problĂ©matique d’usage en temps rĂ©el par des humains Â», explique au MagIT, Laurent Denel, PDG et co-fondateur d’OpenIO.

Il précise qu’avoir du stockage objet à la performance élastique présentera un avantage économique pour toutes les nouvelles applications d’analytique qui ont besoin d’écrire en temps réel de nouvelles informations parmi de grands volumes de données. Il cite l’IoT et les moteurs de Machine Learning. Le test mené par OpenIO a d’ailleurs été effectué sur des serveurs prêtés par Critéo, le champion français du ciblage publicitaire, qui utilise ce genre de logiciels.

Sous peu, l’hĂ©bergeur OVH devrait d’ailleurs proposer en ligne des clusters OpenIO dĂ©diĂ©s au Big Data et Ă  l’intelligence artificielle.

Chaque nĹ“ud est Ă  tour de rĂ´le la passerelle S3

La capacité de croître continuellement en vitesse dans OpenIO s’explique par une architecture qui dévie des modèles habituels. Ici, tous les composants fonctionnels s’exécutent depuis tous les nœuds du cluster.

Dans les systèmes de stockage objet courants, un nœud-passerelle présente aux serveurs applicatifs une API objet (S3, OpenStack Swift, etc.) afin qu’ils l’identifient comme le point d’accès pour lire et écrire leurs informations. Cette passerelle est épaulée par un certain nombre de services d’index et de métadonnées, qu’elle exécute elle-même ou qui sont confiés à des nœuds tiers, afin de répartir ou localiser l’information sur les disques les plus adéquats des nœuds présents dans le cluster de stockage. Plus les requêtes s’intensifient du côté des serveurs applicatifs, plus la passerelle fait office de goulet d’étranglement.

Dans OpenIO, chaque nĹ“ud serveur exĂ©cute un composant pour prĂ©senter l’API S3, un autre pour lire et Ă©crire les donnĂ©es et un dernier pour lire et Ă©crire les mĂ©tadonnĂ©es. La rĂ©partition des accès depuis les serveurs ne se fait plus dans le cluster lui-mĂŞme, mais en amont. Soit en incrĂ©mentant Ă  chaque requĂŞte l’adresse IP de la cible S3 dans le DNS, soit en demandant aux serveurs applicatifs eux-mĂŞmes de le faire.

Dans le cas prĂ©cis du benchmark effectuĂ© chez CritĂ©o, 2500 serveurs applicatifs dans un cluster Hadoop utilisaient ainsi la commande Apache DisCp (Distributed Copy) pour savoir sur quel nouveau nĹ“ud OpenIO envoyer leurs prochaines Ă©critures. Cette technique a surtout Ă©tĂ© utilisĂ©e pour permettre ici au système de stockage HDFS d’Hadoop de communiquer avec un stockage S3. Hors Hadoop, les nĹ“uds OpenIO exĂ©cutent eux-mĂŞmes un algorithme de Round-Robin pour informer le serveur DNS prĂ©sent sur le rĂ©seau de la nouvelle adresse IP du nĹ“ud S3.

« Nous parlons de “grille consciente” pour dĂ©crire notre architecture. Ă€ chaque cycle, la nouvelle adresse IP est issue d’un tirage alĂ©atoire. Mais si le nĹ“ud qui reçoit la requĂŞte est trop chargĂ©, il renvoie au serveur applicatif qui tente d’écrire une commande de redirection via l’API S3. Tout le gĂ©nie de notre système est que cette redirection pour Ă©galiser la charge reste efficace malgrĂ© le grand nombre de nĹ“uds dans le cluster OpenIO Â», indique Laurent Denel, qui explique que ses Ă©quipes ont dĂ©veloppĂ© le système en langage C pour ĂŞtre au plus proche du matĂ©riel.

Lors du test menĂ© chez CritĂ©o, l’équipe d’OpenIO a activitĂ© au fur et Ă  mesure des lots de 50 nĹ“uds jusqu’à atteindre un cluster de 350 serveurs de stockage. « Nous avons fait cette expĂ©rience pour montrer que, contrairement aux solutions concurrentes, l’ajout de nouveaux nĹ“uds ne conduit Ă  aucun re-brassage de la flotte disponible. La croissance de la capacitĂ© et le rééquilibrage de la charge sont immĂ©diats et, de fait, les performances grimpent de manière linĂ©aire Â», dit-il.

1,37 Tbit/s pour l’écriture et 2 Tbit/s pour l’erasure coding

Les nĹ“uds de stockage sur lesquels a Ă©tĂ© menĂ© le test de performance, sont des serveurs bi-sockets Xeon Gold 6140 (2x 18 cĹ“urs) dotĂ©s chacun de 384 Go de RAM, de 15 disques durs SATA de 8 To pour les donnĂ©es et d’un SSD pour le système. « C’est une configuration surdimensionnĂ©e en puissance de calcul. Un nĹ“ud OpenIO pilote gĂ©nĂ©ralement 24 disques de 12 Ă  14 To avec seulement 128 Go de RAM et 8 Ă  12 cĹ“urs. Nous avons mĂŞme des clients qui installent 60 disques par nĹ“uds. DailyMotion a le record, avec 90 disques par nĹ“ud. Ici, nous avons juste pris les serveurs que CritĂ©o mettait Ă  notre disposition Â», assure Laurent Denel. Il prĂ©cise que le système OpenIO supporte de fonctionner avec des nĹ“uds radicalement diffĂ©rents dans son cluster.

Un nĹ“ud OpenIO se contente d’une double connexion Gigabit Ethernet pour fonctionner. Les serveurs de CritĂ©o Ă©tant pourvus d’une double connexion 10 Gbit/s (redondante), la bande passante totale du cluster de 350 machines Ă©tait donc de 3,5 Tbit/s.

« Les 1,37 Tbit/s que nous avons mesurĂ©s sont la bande passante effective des Ă©critures en provenance des serveurs Hadoop sur le cluster OpenIO. Les 2 Tbit/s restants sont utilisĂ©s par nos nĹ“uds pour l’Erasure coding, c’est-Ă -dire pour rĂ©pliquer entre nĹ“uds des blocs d’information afin que les donnĂ©es ne soient jamais perdues Â», prĂ©cise le PDG. 

L’Erasure Coding est rĂ©glable Ă  volontĂ©. Dans le cadre de ce test, le nĹ“ud qui reçoit les donnĂ©es Ă  Ă©crire les tronçonne en 14 morceaux (des « chunks Â»), crĂ©e 4 chunks redondants, conserve l’un d’eux, puis envoie les 17 chunks restants vers 17 nĹ“uds. OpenIO ne gĂ©rant que des chunks d’un maximum de 100 Mo, les objets de plus de 1,4 Go subissent plusieurs cycles de tronçonnage. Ă€ l’inverse, les objets les plus petits ne sont pas tronçonnĂ©s, mais juste rĂ©pliquĂ©s quatre fois vers d’autres nĹ“uds.

Le fait de créer quatre chunks redondants ou de créer quatre répliques des objets plus petits signifie qu’aucune donnée ne sera perdue même si quatre nœuds tombent en panne en même temps.

Il est Ă  noter que le test menĂ© par OpenIo chez CritĂ©o ne mesure pas la vitesse de lecture. En thĂ©orie, celle-ci devrait ĂŞtre meilleure que la vitesse d’écriture, car le nĹ“ud interrogĂ© n’a qu’à rapatrier les 14 chunks essentiels d’un objet pour l’envoyer vers le serveur qui le demande. « Nous n’avons pas mesurĂ© la vitesse de lecture, car elle est suffisamment rapide sur l’ensemble des solutions de stockage objet. Seules les Ă©critures posent un problème de performances et c’est bien celui-ci que nous rĂ©solvons Â», conclut Laurent Denel.

Pour approfondir sur Editeurs