Vous êtes ici : Accueil / 2010 / Mai / Plone fonctionne avec Neoppod !

Plone fonctionne avec Neoppod !

écrit le 15/06/2010 Par Gaël Le Mignot
Pilot Systems participe au projet Neoppod permettant d'avoir une architecture distribuée et redondée pour la ZODB. Dans ce cadre, Pilot Systems a fait fonctionner Plone sur Neoppod et vous livre ses impressions.

Introduction : ZODB et ZEO

Le serveur d'application Zope utilise une base de données objets, nommée la ZODB, et non une base de données relationnelle. Les avantage d'une base de données objets sont nombreux : ils permettent notamment une écriture de code beaucoup plus naturelle, une représentation simplifiée des champs multivaluées, des structures arborescentes etc.

Dans l'implémentation "simple" de la ZODB, nommée FileStorage, la base de données est un fichier Data.fs, qui est chargé directement par l'instance. Ce mode de fonctionnement est simple à mettre en place, mais ne permet pas de solutions de répartition de charges ou de tolérance de pannes.

Il existe une solution pour y remédier : le ZEO. Le ZEO permet d'avoir un serveur ZEO, qui gère la ZODB, et des clients ZEO, qui sont des instances Zope avec une configuration particulière. Toute la logique applicative se trouve dans les clients ZEO, qui peuvent être répliqués, éventuellement sur des machines différentes, afin de mettre en place de la répartition de charge et de la tolérance de pannes.

Les objectifs de NEO

Cependant, si la partie applicative peut bénéficier de tolérance de panne et de répartition de charge, ce n'est pas le cas du serveur ZEO, qui lui, reste unique. Il reste donc un SPOF (Single Point Of Failure) dans l'architecture, qui peut paralyser l'ensemble du site s'il venait à tomber (suite à une défaillance matérielle par exemple). Et d'autre part, lors d'une configuration à forte volumétrie, le serveur ZEO peut devenir un goulot d'étranglement.

Il existe des solutions au niveau système, comme drbd qui permettent de répondre à la tolérance de panne, mais ce sont des solutions assez lourdes à déployer et à maintenir, et le goulot d'étranglement reste entier.

Le projet Neoppod, lancé par la société Nexedi en partenariat avec des laboratoires de recherche (LIP6 et LIPN), une grande école (l'École des Mines) et Pilot Systems, et subventionné par la Région Ile-de-France et l'Union Européenne, a été lancé afin de pallier à ces problèmes.

L'objectif est d'avoir une architecture totalement distribuée capable de gérer des milliers de nœuds, avec de la réplication et de la tolérance de pannes, tout en restant compatible avec l'API de la ZODB, permettant donc de réutiliser toutes les applications Zope, dont Plone.

Plone et Neoppod

Dans le cadre de la collaboration de Pilot Systems avec le projet Neoppod, nous avons mis en place sur notre infrastructure Power-On-Demand Platform différentes configurations de NEO (en faisant varier le nombre de nœuds de stockage et de nœuds frontaux, ainsi que le nombre de copie de chaque donnée à conserver).

Sur cette infrastructure, nous avons installé Plone, et effectué des tests. Le projet NEO étant encore en cours de développement, nous avons constaté un certain nombre de dysfonctionnements, qui ont été corrigés en collaboration entre nous et le reste des acteurs du projet. Suite à cette correction, nous avons pu valider le fonctionnement de Plone sur toutes les configurations, y compris des configurations à plusieurs nœuds frontaux et plusieurs nœuds de stockage. Nous avons également pu tester la tolérance de failles, y compris en détruisant purement et simplement l'une des machines virtuelles impliquées.

L'étape suivante va consister en une série de tests de performances, dans des conditions divers, et une comparaison des performances de Zope seul, ZEO et NEO dans différents contextes et sur différents types d'opération.

Neoppod sur Objectis ?

Objectis, la plateforme d'hébergement gratuite de sites Zope/Plone réalisée par Pilot Systems, utilise actuellement une série d'instances Zope avec pour chacune une ZODB locale. Chaque instance possède jusqu'à 600 sites, et les instances Zope sont elles réparties, à la main, sur plusieurs machines virtuelles.

Ce mode de fonctionnement nous permet de servir des milliers de sites pour un coût réduit, mais comporte des limitations, en particulier, la répartition de charge n'est pas homogène (une instance peut avoir des sites très actifs tandis qu'une autre non), et la tolérance de pannes est assez réduite.

Nous envisageons d'intégrer Neoppod sur Objectis, en transformant cette gestion manuelle des instances par un cluster de nœuds de stockage et de traitement NEO. Ainsi, sur le principe du Cloud Computing, l'ensemble de la charge sera répartie de manière transparente sur les serveurs, et la tolérance de panne sera grandement accrue.

Lire également l'article sur Neoppod sur Pilot Systems.

Actions sur le document