“Enfin !” diront certains, cela faisait un moment (plusieurs mois en fait) que j’avais prévu de me lancer dans un PoC ScaleIO, surtout depuis qu’EMC le fournit gratuitement (mais sans support) en version complète. Voici donc le premier article d’une série qui devrait en compter 2 ou 3 en fonction des tests et fonctions que j’aurais le temps d’évaluer.
Dans ce billet, je vous propose de découvrir l’installation initiale, c’est à dire la partie cluster SDS proprement dite, depuis le téléchargement de la distribution jusqu’au lancement de l’interface d’administration.
1. Présentation rapide de ScaleIO
ScaleIO est, stricto sensu, un système SDS pur de type grid : aucun hardware particulier n’est en effet nécessaire pour pouvoir exploiter la solution. D’autre part, et contrairement à beaucoup d’autres logiciels de ce type, ScaleIO est basé exclusivement sur un système propriétaire de drivers et de protocole réseau : le back-end est constitué de noeuds sur lequel on a installé un serveur ScaleIO participant à la construction et l’activité du cluster SDS ; le front-end, lui n’est accessible que via un client ScaleIO (il en existe pour beaucoup de plateformes). Pas de NFS, ou de iSCSI ici.
On pourrait croire a priori que cela constitue un inconvénient par rapport à ses nombreux compétiteurs. Certes, la nécessité d’installer un logiciel spécifique sur chaque machine susceptible d’utiliser les volumes ScaleIO est une contrainte, mais c’est également un gros avantage pour le fonctionnement de l’ensemble ScaleIO lui-même. En effet, il n’est nul besoin de se préoccuper des problèmes de résilience ou de répartition de charge, tout est automatiquement géré entre clients et serveurs, qui se partagent les tâches d’une manière parfaite. Une perte de chemin vers un des serveurs back-end survient, pas de souci, le client ScaleIO connait l’ensemble des machines du cluster et peut directement re-router l’IO sur un des noeud serveurs. De même, la gestion de l’équilibrage de charge entre les noeuds back-end est assurée via la communication interne du cluster client/serveur. Enfin, le fait que le client discute directement sans conversion protocolaire avec le back-end réduit mécaniquement la perte de latence des IO, celles-ci étant interprétées et transmises nativement aux serveurs. En somme, ce que l’on perd en préparation, on le gagne en administration et fonctionnement quotidien.
Si vous souhaitez avoir plus d’information sur la compatibilité de ScaleIO (client et serveur) avec les divers OS, rendez-vous dans le User Guide chez EMC. En substance, les OS “récents” de Windows et Linux sont supportés, ainsi que les hypervieurs Xen, Kvm et bien sûr ESXi (5.5 et 6.0).
Une autre spécificité de ScaleIO est relative à la tolérance aux pannes de certains membres back-end du cluster. Sur le papier, ScaleIO ne suppporte la perte que d’un noeud simultanément au sein d’un pool. Je dit “sur le papier” car dans la pratique, il existe de nombreuses fonctions qui permettent de réduire énormément le risque de perte de données à cause de la “faiblesse” intrinsèque du système. Je ne rentrerai pas dans le détail ici, mais si vous voulez en savoir plus, je vous recommande la lecture de ce PDF chez EMC. En substance et pour résuler, la reconstruction d’une donnée est extrêmement rapide car répartie sur l’ensemble des noeuds du cluster (et non pas concentrée sur un seul axe, comme sur les baies classiques basées sur des disques de spare) et il est possible de “segmenter” son cluster ScaleIO pour regrouper les noeuds les plus susceptibles de tomber simultanéement via des systèmes de “Fault Sets” (exemple : perte d’une baie complète contenant plusieurs noeuds d’un même cluster).
1. Préparation des noeuds
Après cette présentation rapide, rentrons dans le vif du sujet. Pour pouvoir construire un cluster “minimal”, il nous faut au moins 3 machines. J’ai choisi de déployer trois machines virtuelles dédiées pour ce PoC, tournant toutes les trois sous CentOS 6.7. Je vous fais grâce de leur préparation, sachant que la seule contrainte pour ScaleIO est de disposer de disques dédiés pour son activité. Chaque machine est donc conforme à ces spécifications :
Linux CentOS 6.7
2 Go de RAM
2 CPU
1 disque système de 10 Go pour le Linux (/dev/sda)
1 disque dédié à ScaleIO non partitionné de 100 Go (/dev/sdb)
Les pré-requis logiciels sur les distributions linux sont succincts :
– Les packages numactl et libaio doivent être présents pour les noeuds back-end (serveurs de stockage)
– Mutt et Python 2 doivent être installés pour la partie MDM (serveur de méta-data)
Une fois ces vm préparées, j’ai suivi tout simplement la documnetation “Quickstart guide” fournie dans le package ScaleIO, disponible directement à la fameuse “adresse magique” d’EMC : http://www.emc.com/products-solutions/trial-software-download/index.htm.
2. Installation du service Gateway
Le service Gateway est le premier élément à installer pour préparer votre cluster ScaleIO. Il consiste en un mini serveur web fournissant les fonctions de base de déploiement et configuration initiale. C’est une sorte de gros assistant, dont on se sert uniquement lors de l’installation et lors des maintenances/upgrade.
Pour l’installer, il suffit d’utiliser RPM et de procéder à l’installation du package correspondant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@ionode1 ~]# GATEWAY_ADMIN_PASSWORD=xxxxxxx rpm -U EMC-ScaleIO-gateway-1.32-3455.5.noarch.rpm Running pre installation verifications /usr/bin/java found the Java executable in PATH version 17 /usr/bin/keytool found the keytool executable in PATH Running post install operations iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ] /usr/bin/java /usr/bin/keytool hostname: Unknown host Certificate stored in file [root@ionode1 ~]# |
De mon coté, j’ai choisi d’installer le service Gateway sur le premier noeud, mais techniquement, vous pouvez l’installer sur une machine dédiée ou à peu près n’importe où. Il faut seulement que la machine sur laquelle vous allez le placer ne dispose pas déjà d’un serveur web opérationnel… forcément :)
Le service Gateway installé, vous pouvez directement vous connecter dessus via l’url “http://IP-de-la-machine” avec le user “admin” et le mot de passe indiqué dans la variable d’environnement “GATEWAY_ADMIN_PASSWORD” remplie précédemment :
3. Installation des noeuds back-end SDS
Ensuite, on s’attaque à l’installation des services SDS sur chaque noeud, le coeur back-end de ScaleIO. Tout se fait à partir du service Gateway, comme prévu. La première étape consiste à uploader les différents packages. Cela se fait très simplement via l’onglet “Packages” :
Une fois les packages montés, on passe à l’onglet “Install”. Vous disposez de deux façons pour intégrer l’ensemble de vos machines. Soit la méthode interactive (qui est celle qui est proposée dans le quickstart guide) où vous rentrez à la main et au fur et à mesure les données de vos serveurs, soit la méthode “batch” où vous fournissez en entrée un fichier CSV contenant les données en question pour un traitement automatisé. Comme j’ai l’esprit mal tourné, j’ai choisi la méthode “batch”. J’ai utilisé pour cela le modèle de fichier CSV fourni par EMC que j’ai modifié pour qu’il soit conforme à mon PoC. Une fois le fichier CSV uploadé, l’installeur vous demande des informations générales complémentaire (passwords divers, emails de contact etc. …). Enfin, vous pouvez commencer l’installation.
La préparation des noeud se déroule en 4 phases distinctes que vous pouvez suivre dans l’onglet “Monitor” :
– Query : on vérifie si les pré-requis des machines sont bien remplis et si elles sont bien accessibles
– Upload : chargement des packages précédemment uploadés dans la section “package”
– Install : installation des packages proprement dits
– Configure : configuration des noeuds
A l’issue de la phase de configuration, si tout s’est bien passé, vous obtenez un cluster ScaleIO totalement opérationnel. Il reste juste à installer le client d’administration pour pouvoir enfin commencer à jouer :)
4. Installation de l’interface de gestion sous Windows
L’installation est simplissime sous Windows, en mode “Install->suivant->suivant->terminer”. Lancez l’interface et connectez-vous sur le noeud MDM primaire (si vous êtes sur 3 noeuds, c’est sans doute le premier)… et hop, c’est magique, vous atterrissez sur un beau dashbord, un peu vide pour le moment, mais normalement, tout est là !
5. Conclusion
En substance et à chaud, j’ai été très agréablement surpris par la facilité de l’installation en général et en particulier le service “Gateway” : c’est clair, sans être trop long, aucun souci technique, bref que du bonheur. A tel point que je vous conseille vraiment de vous essayer à monter un petit environnement, vous passerez plus de temps à préparer les machines hôtes qu’à monter le cluster ScaleIO lui même ;)
C’est terminé pour cette première partie. Le second billet sera quant à lui consacré à l’installation de quelques clients (un ESXi, un Linux … et peut-être un Windows, si je suis courageux :) ) et la configuration du back-end.
Post-scriptum : Pour toutes les distributions ScaleIO (client, serveur, docs, pour tous les OS supportés), une seule adresse :
http://www.emc.com/products-solutions/trial-software-download/scaleio.htm
EDIT du 07/01.2016 : les trois autres Billets du PoC
PoC ScaleIO, partie 2 : découverte avec un SDC Linux
PoC ScaleIO, partie 3 : Intégration vSphere 6
PoC ScaleIO : conclusion et perspectives