LightcodeSysadmin Open Source

Présentation d'OpenNebula

Après avoir parlé dans les précédents articles de Xen et de libvirt, nous allons découvrir un autre type d’outil pour la virtualisation, OpenNebula, qui permet entre autre une gestion globale d’un parc d’hyperviseurs et une gestion des ressources associées.

Présentation

Dans cet article, nous allons nous pencher sur un logiciel libre nommé OpenNebula et diffusé sous licence Apache 2. OpenNebula permet de gérer un parc d’hyperviseur et peut être utilisé par un fournisseur de service de proposer une plateforme de IaaS (Infrastructure as a Service). Concrètement, OpenNebula va vous permettre d’ajouter des hôtes, des réseaux, du stockage au sein d’un data center. Un système d’orchestration intégré au logiciel essaiera de répartir les VMs au sein de votre data center en fonction des ressources disponibles.

Je ne détaillerai pas le processus d’installation dans cet article. Pour information, j’ai choisi de l’installer avec une CentOS 6.5, avec comme hyperviseur KVM et mes réseaux virtuels sont gérés par Open vSwitch. OpenNebula est capable de gérer différentes plateformes comme Xen, KVM, VMware et EC2 (le cloud d’Amazon). Au moment du test, OpenNebula était en version 4.4.

Vous pouvez administrer votre cloud OpenNebula de plusieurs manières : la ligne de commande (CLI), l’interface web nommée Sunstone ou grâce à des APIs. OpenNebula prend également en charge le multiutilisateur, ainsi chaque utilisateur du cloud pourra gérer ses VMs. L’administrateur pourra associer les utilisateurs à des groupes. Il est également possible d’associer des utilisateurs à des vues.

La vue cloud est une vue simplifiée pour l'utilisateur final.

Nous allons maintenant voir quelles sont les possibilités offertes par OpenNebula en matière de gestion de cloud.

Gestion de l’infrastructure

Les clusters

Une des principales fonctionnalités d’OpenNebula est la gestion des clusters. Un cluster va rassembler plusieurs hôtes qui se partageront des réseaux virtuels et des espaces de stockage. Dans votre cluster, une machine nommée “frontend”, sera chargée de gérer le cluster. Dans l’interface vous devrez créer un cluster et ajouter les différents hôtes (ou “nodes") que composera votre cloud. Sur ces hôtes, vous installerez également “OpenNebula node” adapté à votre hyperviseur. Dans mon cas, j’ai installé le package opennebula-node-kvm.

Exemple avec le cluster VLS-1.

Ensuite, vous devrez ajouter un espace de stockage accessible par tous les hôtes de la même manière, vous devrez également ajouter au moins un réseau virtuel. Il faut savoir qu’OpenNebula ne s’occupera pas de créer les réseaux et la connexion au stockage pour vous, il faudra que vous les ajoutiez vous même sur votre serveur en vous y connectant en SSH par exemple.

Les clusters vous donnerons la possibilité d’avoir des VMs dîtes “HA” (haute disponibilité), mais pour bénéficier de cette fonction, il faudra modifier vous même la configuration d’OpenNebula. Enfin, il est possible de faire des clusters de frontend et rendre votre installation d’OpenNebula redondante.

Les réseaux virtuels

Les réseaux virtuels permettront de connecter les VM au réseau au niveau de la couche 2. Plusieurs types de réseau sont gérés, le pont, 802.1q, ebtables, Open vSwitch et les réseaux VMWare.

Interface de gestion des réseaux virtuels.

Bien que le réseau créé soit de niveau 2, OpenNebula va également gérer les adresses IP utilisées sur ce réseau. Les adresses IP sont attribuées lors de la création de la VM et non à l’aide de DHCP. Le mécanisme qui s’occupe de cette personnalisation est appelé dans OpenNebula la “contextualisation”. Il y a deux techniques pour ajouter les adresses IPs aux réseaux, soit en les assignant une par une soit en donnant un intervalle d’adresse à utiliser. La gestion des adresses IP par OpenNebula permet de créer des VMs bénéficiant d’une protection contre le spoofing d’adresse IP.

Affichage des informations sur les baux attribués par OpenNebula aux VMs.

OpenNebula propose la gestion de l’IPv6, il est possible d’ajouter deux préfixes : un de portée “Global” et un autre de type “Site”. Malheureusement, l’interface Sunstone ne permet pas de faire un réseau dual stack (IPv4 et IPv6). Il est alors possible de passer via la ligne de commande après un passage par la documentation. Après avoir créé le réseau manuellement, lors de mon test, j’ai réussi à créer une VM qui avait bel et bien son adresse IPv6, mais la contextualisation n’a pas ajouté l’adresse IPv4 dans la VM Debian. Reste à voir si ce problème peut être contourné.

Le stockage

La gestion du stockage dans OpenNebula permet de stocker les différents fichiers associés aux VMs. OpenNebula ne gère pas lui-même la connexion au stockage externe ni les points de montage. Il sera donc nécessaire de configurer manuellement la partie stockages sur chaque hôte puis ensuite de référencer dans OpenNebula l’espace de stockage.

La liste des différents datastores.

Il y a trois types de datastores (espace de stockage), le type “images” permet de stocker les disques durs des VMs. Le type “systems” contiendra les disques durs des VMs lorsqu’ils sont utilisés. En effet, lorsque vous démarrez une VM qui a un stockage “non-persistant”, l’image est clonée sur ce datastore. Enfin, le type “files” quant à lui contient fichiers de kernel notamment lorsque l’hyperviseur fait de la paravirtualisation.

Gestion des VM

La création de VM se fait en trois temps : on commence par ajouter une image disque qui contiendra le système d’exploitation de la VM. Ensuite, il faut définir un modèle sur lequel se basera notre VM, celle-ci sera créée lors de l’instanciation du template.

Les images

Une image est un disque dur virtuel contenant généralement le système d’exploitation de la VM. Il est bien entendu possible de créer ses propres images, si vous voulez installer votre propre système d’exploitation dessus, il peut être intéressant d’y installer le “context”. Le contexte permet à OpenNebula de personnaliser l’image lors de sa création, par exemple, en lui ajoutant une adresse IP.

Affichage de la liste des images.

Lorsque l’on créé ses propres VMs, il est conseillé d’installer la contextualisation, mais vous pouvez télécharger des images déjà prête grâce au Marketplace.

Le Marketplace.

Il existe deux types d’images : les images persistantes qui seront altérées lors de la création de la VM, il n’est possible d’utiliser une image persistante qu’avec une seule instance de VM. Les images non-persistantes sont quant à elles clonées, elles ne sont pas modifiées par la VM, par conséquent, il est possible de créer autant de VM que l’on veut en se basant sur cette image.

Les templates

Le template est un modèle sur lequel OpenNebula se basera pour créer une VM. Sur le template, on pourra configurer le CPU, la RAM, le réseau, le stockage… absolument tout ce qui concerne la VM. Une fois terminé, on pourra instancier une ou plusieurs VMs ayant les mêmes propriétés que le template. Le point noir est qu’en mode admin, l’interface Sunstone ne permet pas de modifier les paramètres de la VM lors de son instanciation. La VM restera identique au template. Il reste toutefois possible d’instancier une VM en surchargeant les paramètres du template, mais cela n’est possible qu’en ligne de commande. C’est cette technique qu’il faut utiliser pour créer une VM avec une IP personnalisée.

Les templates.

La contextualisation peut être également configurée dans le template. En effet, vous allez pouvoir paramétrer des variables qui viendront agir lors de la création de la VM. En plus de pouvoir configurer simplement une adresse IP, la contextualisation permet d’ajouter une clé SSH sur sa VM voire même y placer la clé SSH configurée dans le profil de l’utilisateur.

L’instanciation de VM

Pour ajouter une VM sur nos hypersiseurs, il faudra obligatoirement instancier un template, c’est la seule méthode utilisable dans Sunstone. Toutefois, grâce à la ligne de commande, il est possible de modifier des paramètres du template voire de la définir complètement de cette manière sans utiliser de template. Vous pouvez voir l’écran de la VM dans votre navigateur grâce à la console noVNC intégrée à l’interface Web.

L'affichage des VMs.

Lors de son instanciation, OpenNebula va choisir sur quel hôte la VM sera déployée en fonction des ressources disponibles. Vous pouvez faire en sorte que la VM se déploie uniquement sur des hôtes appartenant à un certain cluster ou alors fixer un hôte précis. Enfin, il vous est également possible de migrer une VM d’un hôte à un autre même lorsque celle-ci fonctionne.

Conclusion

OpenNebula convient très bien pour administrer un ou plusieurs serveurs de virtualisation et permet de gérer facilement les différentes ressources de son data center. Toutefois, l’interface web seule ne satisfera pas forcément tous vos besoins et il faudra passer par la ligne de commande et avoir des notions d’administration système pour profiter du logiciel. Le logiciel n’est donc pas “plug’n’play” mais permet de créer un cloud assez facilement. De plus, OpenNebula a été conçu pour pouvoir être modifié et complété à condition d’avoir quelques connaissances en Ruby et en Bash.

Je trouve qu’il est également dommage de ne pas pouvoir sélectionner facilement le datastore où la VM sera déployée dans le cas où l’on voudrait choisir de stocker certaines VM sur du SSD et les autres sur un stockage à base de disques durs. Selon moi, le plus gros problème est la difficulté voire l’impossibilité de modifier la configuration d’une VM ou un réseau après configuration. Si vous oubliez d’activer VNC, vous ne pourrez pas accéder à la console de votre VM depuis l’interface et je n’ai pas trouvé la possibilité d’activer la fonction après coup. De même, il n’est pas possible de changer une interface de la VM de réseau. Par contre, le déploiement de VM rapide est clairement un avantage.