cloud rapport

Upload: nepher38

Post on 13-Jul-2015

378 views

Category:

Documents


1 download

TRANSCRIPT

CLOUD COMPUTING

Yohan PARENT, Maxime LEMAUX Cyprien FORTINA, Hyacinthe CARTIAUX

LP ASRALL Anne universitaire 2010-2011

Universit Nancy 2 IUT Nancy-Charlemagne

Nous remercions Lucas Nussbaum, notre tuteur, et Sbastien Badia.Yohan pour les cafs et sa connexion Internet et Hyacinthe pour les croissants. Ainsi que Maxime et Cyprien pour leur bonne humeur...

2

Table des matires1. Introduction1.1. Le Cloud Computing . . . . . . . 1.2. Grid 5000 . . . . . . . . . . . . . 1.2.1. Infrastructure des sites . . 1.2.2. Environnement logiciel . . 1.2.3. Rseau . . . . . . . . . . . 1.3. Objectifs et rpartition du travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 . 6 . 6 . 8 . 9 . 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

2. Eucalyptus

2.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1. Composants d'Eucalyptus . . . . . . . . . . . . . . . . 2.1.2. Un fonctionnement modulaire . . . . . . . . . . . . . . 2.1.3. Interface Web . . . . . . . . . . . . . . . . . . . . . . . 2.2. Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1. La conguration matrielle recommande . . . . . . . 2.2.2. Installation fonde sur Ubuntu Enterprise Cloud . . . 2.2.3. Installation partir des paquets . . . . . . . . . . . . 2.2.4. Installation partir des sources . . . . . . . . . . . . . 2.3. Problmes rencontrs lors de l'installation et la conguration 3.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1. Aperu des partenaires d'OpenStack . . . . . . . . . . 3.1.2. Composants d'OpenStack . . . . . . . . . . . . . . . . 3.2. OpenStack Nova Compute . . . . . . . . . . . . . . . . . . . . 3.2.1. Prrequis . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2. Version actuelle et versions venir de Nova Compute 3.2.3. Installation de Nova Compute sur un seul serveur . . . 3.2.4. Installation sur plusieurs serveurs manuellement . . . 3.2.5. Installation scripte sur plusieurs serveurs . . . . . . . 3.3. Problmes rencontrs . . . . . . . . . . . . . . . . . . . . . . .

12

12 12 14 15 16 16 16 20 21 22

3. OpenStack

24

24 25 25 26 26 27 27 28 32 32 34 35 38 38 39 39 40 40 41 41 42 42 43 43 43 43 43 44 44

4. OpenNebula

4.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3. Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1. Installation du Frontend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.2. Conguration du Frontend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.3. Installation d'un nud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.4. Conguration d'un nud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.5. Problmes rencontrs pour l'installation et la conguration des environnements 4.4. Cration de machines virtuelles et chiers de dnition . . . . . . . . . . . . . . . . . . 4.4.1. Image disque de machine virtuelle . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.2. Fichier de dnition de machine virtuelle . . . . . . . . . . . . . . . . . . . . . 4.4.3. Fichier de dnition de rseau virtuel . . . . . . . . . . . . . . . . . . . . . . . 4.5. Dploiement automatis sur Grid 5000 . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.1. oargridsubON.sh : rservation de nuds sur plusieurs sites . . . . . . . . . . . 4.5.2. kadeployON.sh : dploiement avec kadeploy3 sur les machines rserves . . . . 4.5.3. pingON.sh : vrication de la connexion rseau des machines dployes . . . . . 4.5.4. congureON.sh : conguration automatique du frontend OpenNebula . . . . . 4.5.5. creationvmON.rb : cration des chiers de base pour une VM . . . . . . . . . . 4.5.6. deployvmON.sh : dploiement des machines virtuelles . . . . . . . . . . . . . .

34

5. Comparatif3

45

6. Conclusion 7. Bibliographie A. Annexe : Diagramme de Gantt B. Annexe : Commandes de base pour la soumission de jobB.1. B.2. B.3. B.4. B.5. B.6. tat des cluster . . . . . . . . . . . . . Informations sur les nuds . . . . . . Information sur les jobs . . . . . . . . Soumission de job . . . . . . . . . . . Autres commandes . . . . . . . . . . . Utiliser plusieurs clusters (oargridsub) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

47 48 49 5050 50 50 50 51 51 52 52 52 52

C. Annexe : Dployer et enregistrer un environnement avec kadeploy3C.1. C.2. C.3. C.4.

Rserver des noeuds pour le dploiement . . . . . . . . . . . . . . . . . . . . . . . . kaenv3 : gestion des environnements kadeploy . . . . . . . . . . . . . . . . . . . . . kadeploy3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . kaenv3 : Crer un nouvel environnement partir d'un environnement personnalis

52

D. Annexe : Scripts de synchronisation pour Grid 5000

D.1. sendsshkeys.sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 D.2. synctosite.sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

54

E. Annexe : Conguration des environnements OpenNebula

E.1. Conguration rseau : /etc/rc.local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 E.2. /etc/rc.bindhome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 F.1. F.2. F.3. F.4. F.5. F.6. F.7. oargridsubON.sh kadeployON.sh . pingON.sh . . . . congureON.sh . creationvmON.rb init.sh . . . . . . deployvmON.sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

56

F. Annexe : Scripts de dploiement automatis pour OpenNebula

57

57 57 57 58 58 59 60

G. Annexe : Scripts d'installation de Nova

G.1. Script d'installation sur un seul serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 G.2. Script d'installation du contrleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 G.3. Script d'installation du nud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

61

4

1. IntroductionLe Cloud Computing (informatique dans le nuage) est une technique permettant de grer des ressources (serveurs) et d'adapter trs rapidement une infrastructure des variations de charge de manire totalement transparente pour l'administrateur et les utilisateurs. Dans le nuage, le client n'a pas connaissance de la complexit de la gestion matrielle derrire son environnement logiciel.

Figure 1.1.: Un nuage, source Wikimedia Commons.Notre projet vise dployer des solutions de Cloud Computing sur plusieurs sites de Grid 5000.

1.1. Le Cloud ComputingLe Cloud Computing est un concept : dporter sur une infrastructure distante les applications et les donnes ; abstraire la gestion de l'infrastructure et des ressources matrielles aux clients. Il existe plusieurs types de cloud computing classs selon leur utilisation : SaaS : Software as a Service, le fournisseur maintient des applications que le client utilis de manire totalement transparente. Par exemple, les applications Google (doc, reader, gmail, etc). PaaS : Platform as a Service, le client maintient uniquement ses applications alors que le fournisseur maintient les serveurs et l'infrastructure logicielle (bases de donnes, scurit, stockage). Par exemple : Microsoft Azure. IaaS : Infrastructure as a Service. On met disposition des ressources composes par une infrastructure virtualise, dont la plus grande partie est localise distance dans des Datacenters. Notre projet tuteur porte sur cette dernire forme de cloud : l'IaaS. Un cloud (ou nuage) dsigne un ensemble de serveurs de virtualisation interconnects. L'apport des solutions de cloud provient de l' lasticit , il s'agit de simplier la gestion d'un parc de serveurs de virtualisation orant des ressources matrielles, et de permettre d'installer, de congurer et de migrer les machines virtuelles la vole en fonction des besoins. Nous allons comparer plusieurs solutions de cloud sous GNU/Linux : Eucalyptus Open Nebula Open Stack

5

Ces solutions n'ont d'intrt que pour une infrastructure de taille importante (plusieurs dizaines de serveurs). Nous avons ralis nos exprimentations sur Grid 5000.

1.2. Grid 5000Pour raliser notre projet tuteur, nous utilisons la plate-forme Grid 5000 1 . Grid 5000 est une infrastructure distribue sur 9 sites en France, pour la recherche dans les systmes parallliss grande chelle et les systmes distribus. Grid 5000 vise a runir 5000 processeurs sur 9 sites en France. Cette plate-forme est utilise dans le cadre de projets exprimentaux, dans le domaine de la recherche dans les systmes informatiques distribus et grande chelle.

Figure 1.2.: Architecture de Grid 5000, source grid5000.fr

1.2.1. Infrastructure des sitesChaque site hberge : un frontend, serveur permettant d'accder aux clusters disponibles ; un serveur de donnes, pour centraliser les donnes utilisateurs ; plusieurs clusters, c'est--dire des grappes de machines homognes, appeles nuds (nodes).

1. Site de grid5000, prsentation, documentation, tutoriels, etc

6

Figure 1.3.: Vue trs simplie de Grid 5000L'utilisateur de Grid 5000 accde chaque site par son frontend en utilisant SSH. Sur tous les serveurs du site, un rpertoire home, local chaque site, est mont avec NFS 2 . A partir du frontend, il est possible d'accder aux machines des clusters en eectuant des rservations. Nous avons pu visiter la salle serveurs du site de Nancy situe au Loria. Notre tuteur, M. Lucas Nussbaum et M. Sbatien Badia, nous ont fait une prsentation de la plate-forme (matriel utilis, connexions rseau, administration). Une description dtaille du site de Nancy est disponible sur le site de Grid 5000.

2. NFS : systme de chiers en rseau permettant de partager des donnes principalement entre systmes UNIX.

7

Figure 1.4.: Armoires de serveurs de Nancy

Figure 1.5.: Quelques serveurs du site de Nancy

1.2.2. Environnement logicielTous les serveurs de Grid 5000 fonctionnent sous Debian GNU/Linux. A partir du frontend, l'utilisateur peut rserver des machines en utilisant la suite de logiciels OAR ddie la gestion de ressources de clusters, et dployer ses propres images de systmes l'aide des outils kadeploy. Il y a deux types de rservation : par dfaut, pour des besoins de calcul avec OpenMPI ; pour le dploiement d'environnements (deploy ). Dans le cadre de notre projet, nous eectuons uniquement des rservations de type deploy. La commande oarsub nous permet de rserver des nuds sur un site (en crant un job). Voici un exemple d'utilisation d'oarsub, pour rserver 10 nuds pendant 3 heures en dploiement.$ oarsub I t deploy l nodes =5, w a l l t i m e=3

Aprs rservation, oarsub ouvre un shell dans lequel des variables d'environnements sont dnies comme $OAR_FILE_NODE, qui est le nom d'un chier avec la liste des nuds rservs, ou $OAR_JOB_ID.$ c a t $OAR_FILE_NODES | s o r t u paramount 24. r e n n e s . g r i d 5 0 0 0 . f r paramount 8. r e n n e s . g r i d 5 0 0 0 . f r paramount 9. r e n n e s . g r i d 5 0 0 0 . f r p a r a p l u i e 19. r e n n e s . g r i d 5 0 0 0 . f r p a r a p l u i e 26. r e n n e s . g r i d 5 0 0 0 . f r $ echo $OAR_JOB_ID 380540

Pour supprimer le job et librer les nuds, on utilise la commande oardel.$ o a r d e l 380540

8

Kadeploy permet de dployer des environnements personnaliss sur les noeuds rservs l'aide d'une commande simple. Lorsque la rservation est termine, le noeud est automatiquement restaur avec un environnement Debian. Pour dployer un environnement sur tous les noeuds rservs, il faut utiliser la commande kadeploy3$ kadeploy3 e lenny x64base f $OAR_FILE_NODES

1.2.3. RseauLes sites et toutes les machines qu'ils comprennent sont interconnects par RENATER 3 en 10Gbits/s. De plus, chaque site peut disposer de plusieurs rseaux locaux 4 : rseau en ethernet, 1 Gb/s rseaux hautes performances (Inniband 20 Gb/s ou 10 Gb/s, et Myrinet 20 Gb/s)

Table 1.1.: Rseau de production de chaque siteSite Bordeaux Grenoble Lille Lyon Nancy Orsay Rennes Toulouse Sophia DAS-3 Reims Luxembourg Porto Alegre Orlans Rseau de production 172.16.0.0/20 172.16.16.0/20 172.16.32.0/20 172.16.48.0/20 172.16.64.0/20 172.16.80.0/20 172.16.96.0/20 172.16.112.0/20 172.16.128.0/20 172.16.144.0/20 172.16.160.0/20 172.16.176.0/20 172.16.192.0/20 172.16.208.0/20

Selon le site, le serveur dhcp accessible par l'interface rseau de production attribuera une adresse comprise dans les rseaux ci-dessus.

Table 1.2.: Rseau pour les machines virtuelles sur chaque siteSite Bordeaux VPN nets Lille Lyon Nancy Orsay I Orsay II Rennes Toulouse Sophia DAS-3 Luxembourg Porto Alegre Grenoble Rseau 10.128.0.0/14 10.132.0.0/14 10.136.0.0/14 10.140.0.0/14 10.144.0.0/14 10.148.0.0/14 10.152.0.0/14 10.156.0.0/14 10.160.0.0/14 10.164.0.0/14 10.168.0.0/14 10.172.0.0/14 10.176.0.0/14 10.180.0.0/14 Passerelle 10.131.255.254 n/a 10.139.255.254 10.143.255.254 10.147.255.254 10.151.255.254 10.155.255.254 10.159.255.254 10.163.255.254 10.167.255.254 10.171.255.254 10.175.255.254 10.179.255.254 10.183.255.254 DHCP 10.131.255.253 n/a 10.139.255.253 10.143.255.253 10.147.255.253 10.151.255.253 10.155.255.253 10.159.255.253 10.163.255.253 10.167.255.253 10.171.255.253 10.175.255.253 10.179.255.253 10.183.255.253

Chaque site dispose donc de classes d'adresses IP rserves aux machines virtuelles, celles ci sont routables sur le rseau de grid 5000. De plus, chaque site dispose d'une passerelle avec le nom d'hte virtual-gw et d'un serveur dhcp.3. grid5000.fr : Network 4. grid5000.fr : Network interlink

9

Pour vrier que les IP de machines virtuelles sont bien routes, il est possible de tester uniquement les passerelles. Le script suivant eectue ce test pour tous les sites.1 #! / bin / bash 2 3 f o r i i n ` c a t l i s t e s _ d e s _ s i t e s ` ; do 4 ping c 1 v i r t u a l gw . $ i > / dev / n u l l 5 i f [ $ ? == 0 ] ; then 6 echo $ i >> s i t e s v i r t u a l gw 7 echo $ i : OK 8 else 9 echo $ i : KO 10 fi 11 done

Pour utiliser le serveur DHCP 5 et obtenir automatiquement une IP pour une machine virtuelle, il faut que l'adresse mac de l'interface rseau soit prxe par 00 :16 :3e. A l'avenir, grid5000.fr : KaVLAN, outil de gestion de VLAN sur Grid 5000 sera disponible sur tous les sites de Grid 5000 pour permettre de rserver des IP et d'utiliser simplement des VLAN. Cette solution sera alors privilgier pour simplier la conguration rseau et le dploiement d'un cloud.

1.3. Objectifs et rpartition du travailLes objectifs l'issue du projet sont de produire : des images d'environnements, des scripts et documentations pour dployer rapidement des solutions de cloud sur Grid 5000 ; des expriences grande chelle des retours d'expriences An de travailler plus ecacement, nous avons mis en place de nouveaux outils en combinant les outils Google Code et Google Groups : un dpt SVN ; un wiki ; une mailing list ; un rpertoire partag via Dropbox. A Nous avons galement appris L TEXpour rdiger notre rapport.

Figure 1.6.: Notre projet sur Google Code

5. grid5000.fr : Virtual Network Conguration (DHCP)

10

Figure 1.7.: Diagramme de Gantt de l'organisation de notre projetLors de la premire semaine, nous avons mis en place nos outils de travail collaboratif, et commenc dcouvrir l'environnement oert par Grid 5000 en suivant des tutoriels. Nous avons galement congur nos machines (SSH) pour tre plus ecace. Pour cette tche, nous avons crit quelques scripts, un premier pour copier nos cls ssh d'un site vers tous les autres, et un deuxime pour synchroniser le rpertoire personne (/home/user/) vers d'autres sites. Ces scripts sont en annexe. Arriv la deuxime semaine, nous nous sommes partags le travail quitablement : Cyprien et Yohan se sont occups de Eucalyptus et OpenStack, Maxime et Hyacinthe se sont concentrs sur OpenNebula. Les premiers tests de Eucalyptus ont t eectus sur des machines en salle 501, et un environnement minimal Ubuntu Lucid a t cr sur le site de Nancy de Grid 5000. Cet environnement a servi de base pour le dploiement de Eucalyptus et OpenNebula. Pendant la 3me semaine, nous avons cr une image disque contenant une installation de Debian Squeeze l'aide de qemu, ainsi que les environnements pour dployer Eucalyptus et OpenNebula sur Grid 5000. Nous dployons pour la premire fois des machines virtuelles ttylinux sur un cloud OpenNebula, mais nous rencontrons des problmes de conguration rseau. De plus, les environnements ne sont pas encore totalement fonctionnels. Dans la 4me semaine, Yohan et Cyprien ont recr une image de Ubuntu Lucid Enterprise Cloud depuis un accs physique aux machines du site de Nancy en esprant rsoudre leurs problmes. Du cot de OpenNebula, le travail se concentre sur la conguration rseau (bridge et DHCP pour les machines virtuelles) et l'amlioration des environnements (problme d'espace disque disponible dans la partition racine des nuds pour les images de machines virtuelles). La 5me semaine est celle des vacances, Yohan et Cyprien arrtent de travailler sur Eucalyptus et se lancent sur OpenStack. Nous commenons le rapport dans ses grands axes pour se faire une ide du contenu de ce dernier. Pendant la 6me semaine, Yohan et Cyprien travaillent toujours corriger les problmes de conguration rseau pour les machines virtuelles sous OpenStack. L'autre groupe nalise les environnements pour OpenNebula, et commence crire des scripts pour automatiser le dploiement d'un cloud sur plusieurs sites de Grid 5000 et la conguration rseau des machines virtuelles. Lors de la 7me semaine, les problmes concernant OpenStack ne sont toujours pas rgls (apparemment lis la conguration rseau) et nous nalisons notre travail sur OpenNebula. Les principaux problmes viennent de notre manque de prvision par rapport l'htrognit de Grid 5000. En eet, OpenNebula se base par dfaut sur la technologie KVM qui ncessite un support matriel de la virtualisation, or le support n'est pas activ sur tous les clusters. La 8me semaine a t essentiellement ddie l'criture du rapport et la ralisation de la prsentation.

11

2. Eucalyptus

2.1. IntroductionEucalyptus est un ensemble d'outil disponible sous Licence BSD 1 qui permet de mettre en place une infrastructure de type cloud computing sur une grappe de serveurs. Cet outil est donc open source et a t dvelopp par une quipe de chercheurs de l'universit de Californie partir de 2007. Son nom fait rfrence l'acronyme Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems qui peut se traduire en Utilitaire d'Architecture informatique lastique pour relier vos programmes des systmes fonctionnels . Depuis 2009, il est intgr dans la distribution GNU/Linux Ubuntu 9.04 Jaunty Jackalope. Eucalyptus est devenu trs populaire et est considr comme l'une des principales solutions open-source pour la mise en place de systmes de type cloud. Cependant, il est un peu dlaiss actuellement au prot de la solution OpenStack. Il existe galement un packaging appel Ubuntu Enterprise Cloud, UEC en abrg, ralis par Canonical et fourni avec Ubuntu Server Edition. UEC comprend Eucalyptus avec un certain nombre d'autres logiciels open source pour faciliter l'installation et la conguration de ce genre d'architecture.

2.1.1. Composants d'EucalyptusUne conguration de cloud fonde sur Eucalyptus se compose de cinq types de composants principaux. chines virtuelles qui sont dployes. Les machines virtuelles fonctionnant sur l'hyperviseur sont appeles des instances. Eucalyptus permet aussi d'utiliser d'autres types d'hyperviseurs comme XEN 3 , mais Canonical a fait le choix de privilgier KVM. Le contrleur de nud fonctionne sur chaque nud et est charg de vrier le cycle de vie des instances en cours d'excution sur le nud. Il interagit avec le systme d'exploitation et l'hyperviseur en cours d'excution sur le nud d'un ct et le contrleur de cluster (CC) de l'autre ct. Le contrleur interroge le systme d'exploitation s'excutant sur le nud de an de dcouvrir les ressources physiques du nud (le nombre de curs, la taille de la mmoire, l'espace disque disponible et aussi de s'informer sur l'tat des instances VM en cours d'excution sur le nud et propage ces donnes au contrleur de cluster.)1. La licence BSD est une licence libre utilise pour la distribution de logiciels.http://www.freebsd.org/copyright/license.

Contrleur de nud (NC) Le rle du nud est d'hberger KVM 2 , il sert ainsi d'hyperviseur pour les ma-

2. KVM (Kernel-based Virtual Machine) est une solution de virtualisation libre pour Linux. Elle fonctionne sur les architectures x86 disposant des technologies Intel VT ou AMD SVM (AMD-V). 3. Xen est un logiciel libre de virtualisation, plus prcisment un hyperviseur de machine virtuelle. Son dveloppement a dbut sous la forme d'un projet de recherche de l'universit de Cambridge au Royaume-Uni. La socit XenSource a par la suite t cre et en a poursuivi le dveloppement. Xen permet de faire fonctionner plusieurs systmes d'exploitation virtuels (invits) sur une seule machine hte.

html/

12

Contrleur de cluster (CC) Ce contrleur sert dployer et grer les dirents contrleurs de nuds. Il sertgalement grer la mise en place du rseau entre les instances des dirents nuds. C'est lui qui communique l'ensemble des informations au contrleur du cloud. Il a 4 fonctions principales : Il reoit les requtes de dploiement des instances du contrleur de cloud . Il dcide sur quel contrleur de nud les instances seront dployes. Il contrle le rseau virtuel entre les instances. Il collecte les informations des contrleurs de nuds enregistrs et les rapporte au contrleur de cluster.

Contrleur de stockage Walrus (WS3) Il est appel : Walrus Storage Controller (WS3). WS3 fournit un service de stockage persistant simple l'aide des API REST 4 et SOAP 5 et compatible avec les API S3. 6 Il assure 3 fonctions principales : Le stockage des images de machines virtuelles. Le stockage des images prises en fonctionnement un instant prcis. Stocker des chiers et les service en utilisant l'API S3. En fait, WS3 peut tre considr comme un simple systme de stockage de chiers. Contrleur de stockage (SC) Ce contrleur fournit un service de stockage persistant pour les instances. C'est similaire au service Elastic Block Storage (EBS) 7 d'Amazon. Il a donc 3 fonctions essentielles : La cration de dispositifs EBS persistants. Fournir le systme de stockage de blocs aux instances. Autoriser la cration d'images des volumes pour permettre leurs sauvegardes. Contrleur du cloud (CLC) C'est un programme Java qui sert de Frontend l'infrastructure. Il ore, d'un ct une interface de gestion et de contrle conforme aux services ec2/s3, une vritable bote outils complte, et de l'autre ct, permet d'interagir avec les autres composants de l'infrastructure. Il est galement possible d'avoir une interface web qui permet aux utilisateurs de grer certains aspects de l'infrastructure. Il a 3 rles principaux : Surveiller la disponibilit des ressources sur les direntes composantes de l'infrastructure du cloud. L'arbitrage des ressources - C'est dire dcider quel cluster sera utilis pour la virtualisation des instances. Monitorer les instances en cours d'excution. En rsum, le CLC a une connaissance approfondie de la disponibilit et l'utilisation des ressources dans le nuage et permet de surveiller son tat.L'exemple d'une architecture avec l'ensemble des composants d'Eucalyptus :

4. REST (Representational State Transfer) est une manire de construire une application pour les systmes distribus comme le World Wide Web. Le terme a t invent par Roy Fielding en 2000. REST n'est pas un protocole ou un format, c'est un style d'architecture, c'est le style architectural original du Web. 5. SOAP (ancien acronyme de Simple Object Access Protocol) est un protocole de RPC orient objet bti sur XML. Il permet la transmission de messages entre objets distants, ce qui veut dire qu'il autorise un objet invoquer des mthodes d'objets physiquement situs sur un autre serveur. Le transfert se fait le plus souvent l'aide du protocole HTTP, mais peut galement se faire par un autre protocole, comme SMTP. 6. Simple Storage Service, un service de stockage via service web d'Amazon. Amazon S3 est un service de stockage pour Internet. Il est pens pour simplier l'accs l'informatique l'chelle du web, pour les dveloppeurs. Amazon S3 ore une simple interface de services web utiliser pour stocker et rcuprer n'importe quelle quantit de donnes, tout moment, de n'importe o sur le web. Il permet aux dveloppeurs d'accder la mme infrastructure hautement volutive, able, sre, rapide, et peu coteuse qu'Amazon utilise pour faire fonctionner son propre rseau mondial de sites. Le service vise maximiser les avantages d'chelle et les transmettre aux dveloppeurs. 7. Le stockage extensible (Amazon EBS) fournit des volumes de stockage en mode bloc utiliser avec les instances AmazonEC2. Les volumes EBS Amazon sont des stockages hors instances qui persistent indpendamment de la vie d'une instance. Amazon Elastic Block Store fournit des volumes de stockage hautement disponible et able qui peuvent tre annexs une instance Amazon EC2 en cours d'excution et exposs comme un priphrique au sein de l'instance. EBS Amazon est spcialement adapt aux applications qui ncessitent une base de donnes, un systme de chier ou un accs un stockage brut en mode bloc.

13

Figure 2.1.: Composants Eucalyptus, Eucalyptus Beginner's Guide - UEC Edition.

2.1.2. Un fonctionnement modulaireCe qui fait la force d'une architecture fonde sur Eucalyptus est sa grande modularit. En eet, les composants Eucalyptus ont des interfaces bien dnies (via WSDL 8 , car se sont des services web) et peuvent donc tre facilement changs pour des composants personnaliss. Eucalyptus est exible et peut tre install sur une conguration trs minime. Pourtant, il peut tre install sur des milliers de curs et des traoctets de stockage. Et il peut le faire comme une superposition une infrastructure existante. Le fonctionnement en sous-ensemble qui forme chacun un cluster distinct permet de faciliter son dploiement sur une infrastructure multi-sites comme c'est le cas pour le Grid5000. L'ensemble tant ensuite gr au niveau du contrleur du cloud, le Walrus assurant la communication avec les contrleurs de stockages. Ce fonctionnement est parfaitement illustr sur le schma ci-dessous.

8. Le WSDL dcrit une Interface publique d'accs un Service Web, notamment dans le cadre d'architectures de type SOA (Service Oriented Architecture). C'est une description fonde sur le XML qui indique comment communiquer pour utiliser le service

14

Figure 2.2.: Architecture Eucalyptus, Documentation ociel Eucalyptus.Sur le schma, on constate que le contrleur de cloud (CLC) et le Walrus sont des composants de haut niveau, avec un de chaque dans une installation de cloud computing. Ensuite les autres composants sont rparties sur les dirents clusters que l'on veut utiliser. Il existe 3 faons principales de dployer Eucalyptus : Installation partir des sources. Installation partir des paquets. Installation l'aide de la distribution Ubuntu Enterprise Cloud. Nous avons test ces 3 types d'installation et nous allons vous les dtailler dans la partie suivante.

2.1.3. Interface WebUn des gros point fort d'Eucalyptus, c'est qu'il inclut une interface web pour la gestion des utilisateurs, du cloud et des machines virtuelles. Cette interface est trs simple d'utilisation et intuitive et nous avons pu la tester en salle ASRALL. Sur Grid5000 nous n'avons pas pu l'utiliser car elle est hberge sur le contrleur de cloud, que nous n'arrivons pas contacter comme prcis plus loin dans la partie "Problme rencontrs", mais le service web est pourtant fonctionnel car nous avons install le navigateur Lynx pour nous connecter l'interface web et cela fonctionne.

15

Figure 2.3.: Source :UEC PackageInstallhttps://help.ubuntu.com/community/UEC/PackageInstall

2.2. Installation2.2.1. La conguration matrielle recommandeL'installation des composants suivants : le contrleur de cloud (clc) le contrleur de cluster (cc) le walrus le contrleur de stockage (sc) demande au minimum la conguration matrielle suivante : CPU 1GHz RAM 2GB Disque Dur 5400rpm IDE Espace Disque 40GB Rseau 100Mbps Les nuds demandent quant eux, la conguration minimum suivante : CPU VT extensions RAM 1GB Disque Dur 5400rpm IDE Espace Disque 40GB Rseau 100Mbps Le point cl est surtout le support de la virtualisation puisque ce sont eux qui accueilleront les instances des machines virtuelles.

2.2.2. Installation fonde sur Ubuntu Enterprise CloudLa faon la plus simple d'installer Eucalyptus est d'utiliser la distribution Ubuntu Server qui intgre de base une srie d'outils dont Eucalyptus et qui porte le nom : Ubuntu Enterprise Cloud (UEC). La socit de Mark Shuttleworth, Canonical LTD, a dvelopp une srie de services destination des professionnels an que ces derniers dveloppent leur solution d'informatique distribue. Baptis Ubuntu Enterprise Cloud (UEC), cette solution se base sur la technologie open source d'Eucalyptus qui permet aux entreprises de dployer leur propre solution de cloud computing tout en communicant avec l'interface de programmation

16

d'Amazon Elastic Compute Cloud (EC2). En intgrant UEC directement au sein d'Ubuntu Server Edition, Canonical devient le premier diteur proposer une solution de Linux professionnelle qui s'ouvre sur la programmation sur nuages de serveur. UEC se complte d'outils permettant de contrler, de dployer et de grer ces serveurs, l'objectif principal de Canonical est de faciliter au maximum le dploiement des solutions de cloud computing. Nous avons en eet constat la facilit d'installation d'Eucalyptus grce cette distribution. La premire tape consiste simplement tlcharger l'image ISO 9 de Ubuntu Server sur le site ociel Ubuntu. Ensuite, il sut de se laisser guider par l'interface d'installation. L'installation est illustre par les captures d'cran suivantes, elle se rsume en 5 tapes : Slection "Installation Ubuntu Enterprise Cloud". Choix de l'adresse IP du contrleur de cloud. Choix des dirents composants installer sur la mme machine. (Pour le test, nous n'avons utilis que 2 machines). Choix du nom du cluster pour le contrleur de cluster. Choix d'une plage d'adresses IP pour le rseau des instances.

Figure 2.4.: Installation UEC - cran d'accueil, Documentation ociel Eucalyptus.

9. Une image ISO est une image d'un disque (CD, DVD ou disque dur) sous forme de chier, crer avec un logiciel de gravure.

17

Figure 2.5.: Installation UEC - tape 1, Documentation ociel Eucalyptus.

Figure 2.6.: Installation UEC - tape 2, Documentation ociel Eucalyptus.

18

Figure 2.7.: Installation UEC - tape 3, Documentation ociel Eucalyptus.

Figure 2.8.: Installation UEC - tape 4, Documentation ociel Eucalyptus.Aprs avoir install le contrleur de cloud, il sut de refaire la mme installation d'Ubuntu server sur chaque contrleur de nud. A l'exception, qu'il sura l'tape 2, de choisir "Node Controller". L'installation a t teste sur deux machines en salle ASRALL et fonctionnait parfaitement, ce qui montre qu'Eucalyptus est utilisable tant que nous ne sommes pas sur une architecture particulire et que nous suivons la lettre l'installation classique. Les choses se sont nettement compliques quand nous sommes passs la phase d'exprimentation sur Grid 5000. Nous ne dtaillerons pas ici la conguration puisque ce sera la mme mthode que sur Grid 5000, sur laquelle nous allons revenir plus en dtail an de prciser les dicults rencontres.

19

2.2.3. Installation partir des paquetsCette installation consiste partir de l'environnement Ubuntu Server 10.04 LTS Ludic Lynx d'installer les dirents paquets qui permettent l'installation et l'utilisation d'Eucalyptus. Nous avons galement test cette installation en local de la mme manire que prcdemment mais nous ne dtaillerons que l'installation sur Grid 5000, ce qui tait l'objectif principal du projet. Nous commenons par dployer l'environnement Ubuntu Server. Puis, nous mettons jour le systme pour partir de la version la plus rcente sur l'ensemble des machines que nous voulons utiliser pour constituer notre cloud. La premire chose penser est que si le noyau est mis jour et que nous voulons utiliser la dernire version, il faut redmarrer l'environnement, le soucis, c'est que le chier de description de ce dernier contient en dur le nom du noyau charger, pour remdier cela, nous avons utilis un lien symbolique, ainsi nous pouvions facilement utiliser et donc booter sur le noyau mis jour.$ sudo apt g e t update $ sudo apt g e t d i s t upgrade

Sur le Front end Installation des paquets ncessaires eucalyptus-cc et eucalyptus-cloud :$ sudo apt g e t i n s t a l l e u c a l y p t u s cloud e u c a l y p t u s cc e u c a l y p t u s walrus e u c a l y p t u s s c

Au cours de cette tape, nous rpondons quelques questions lors de l'installation des dirents paquets, comme le nom du cluster et la plage d'adresse Ip du rseau.

Sur les nuds Le paquet eucalyptus-nc est ncessaire.$ sudo apt g e t i n s t a l l e u c a l y p t u s nc

C'est la seule tape d'installation pour les nuds. Il convient alors d'eectuer la conguration du bridge l'aide du script suivant :1 2 3 4 5 6 7 8 9 10 11 i n t e r f a c e=eth0 b r i d g e=br0 sudo sed i " s /^ i f a c e $ i n t e r f a c e i n e t \ ( . \ ) $/ i f a c e $ i n t e r f a c e i n e t manual\n\ nauto br0 \ n i f a c e $ b r i d g e i n e t \1/" / e t c / network / i n t e r f a c e s sudo t e e a / e t c / network / i n t e r f a c e s C a l l i n g node c l u s t e r 1 node 1 0 . 1 . 1 . 7 5 2010 04 08 15 : 46 : 3 6 0 5: 0 0 | 24243 > euca_conf r e g i s t e r nodes r e t u r n e d 0 2010 04 08 15 : 48 : 4 7 0 5: 0 0 | 25858 > C a l l i n g walrus Walrus 1 0 . 1 . 1 . 7 1 2010 04 08 15 : 48 : 5 1 0 5: 0 0 | 25858 > euca_conf r e g i s t e r walrus r e t u r n e d 0 2010 04 08 15 : 49 : 0 4 0 5: 0 0 | 26237 > C a l l i n g c l u s t e r c l u s t e r 1 1 0 . 1 . 1 . 7 1 2010 04 08 15 : 49 : 0 8 0 5: 0 0 | 26237 > euca_conf r e g i s t e r c l u s t e r r e t u r n e d 0 2010 04 08 15 : 49 : 1 7 0 5: 0 0 | 26644 > C a l l i n g s t o r a g e c l u s t e r 1 s t o r a g e 1 0 . 1 . 1 . 7 1 2010 04 08 15 : 49 : 1 8 0 5: 0 0 | 26644 > euca_conf r e g i s t e r s c r e t u r n e d 0

Sur le grid5000, nous n'avons jamais russi avoir cela, pourtant en local, lors de nos tests en salle ASRALL, nous n'avons pas rencontr de dicults particulires.

2.2.4. Installation partir des sourcesIl est galement possible d'installer directement Eucalyptus partir des sources disponibles sur le site ociel. Eucalyptus est compatible avec les distributions suivantes : CentOS 5 Debian squeeze OpenSUSE 11 Fedora 12 Nous avons test cette manire de l'installer sur l'environnement Debian pour essayer de rgler le problme de non reconnaissance du contrleur de cloud qui est dtaill dans la partie suivante. Cette installation partir des sources ne prsente aucun aspect particulier mais ncessite les pr-requis suivants pour se drouler correctement : Compilateurs C Java Developer Kit (SDK) version 1.6 ou suprieur Apache 1.6.5 Fichiers de dveloppement libc Fichiers de dveloppement pthreads Fichiers de dveloppement libvirt Fichiers de dveloppement Axis2C et rampart (inclus dans l'archive Eucalyptus obtenu sur le site ociel) Fichiers de dveloppement Curl Fichiers de dveloppement openssl Fichiers de dveloppement zlib Malheureusement, cette installation n'a pas non plus rgl le problme. 21

2.3. Problmes rencontrs lors de l'installation et la congurationL'ensemble des outils ne sont pas installs par dfaut Lors de l'installation des paquets et de la publication des cls SSH, nous avons eu des messages d'erreur qui expliquait un problme de synchronisation, conrms lors du test de la commande :$ sudo euca_conf d i s c o v e r nodes

En tudiant, les logs du contrleur de cloud, nous constatons rapidement qu'il manque certains paquets : rsync et wget. Un simple :$ sudo apt g e t i n s t a l l r s y n c wget

a rsolu ce petit soucis.

Aucun nom pour le contrleur de cloud Un autre problme qui nous a occup une bonne semaine est le fait

que peu importe la manire dont on entrait le nom d'hte du contrleur de cloud, il reprenait toujours le nom localhost.localdomain. Nous avons donc essay de refaire notre environnement de dpart en vriant l'ensemble des paramtres de conguration et en utilisant kaconsole3, qui permet d'obtenir une console et d'observer le boot de son environnement. Nous avons tudi dirents chiers de logs lors de l'installation et la conguration, et nous avons constat un bug d'Eucalyptus : il arrive parfois que les chiers de logs ne soient pas gnrs correctement durant l'installation. En recherchant sur le site ociel, et plus prcisment sur le bug tracker, nous observons que c'est un bug encore non corrig. Il est donc assez dicile de dbuguer un outil sans log ! ! Nous nous sommes alors connect sur le salon IRC de eucalyptus hberg sur le serveur Freenode, mais nous n'obtenons pas plus d'informations. Enn, nous sollicitons l'aide de Sbastien Badia, et il constate que le problme est en fait un bug sur le site de Nancy. Comme son habitude, trs ecace, il le rsout ds le lendemain et nous pouvons donc reprendre nos tests. Le soucis des logs n'est quant lui toujours pas rgl.

Le contrleur de cloud est introuvable Le principal problme rencontr et qui nous a empch de poursuivreavec Eucalyptus est qu'une fois les direntes tapes d'installation et de conguration ralises, au moment d'utiliser le cloud et de dployer des images, le contrleur de cloud est introuvable ! En eet, nous obtenons l'erreur suivante :ERROR: you need to be on the CLC h o s t and the CLC needs to be running .

Nous avons d'abord pens que les services taient mal lancs. Nous avons donc test de les redmarrer, et nous n'avons constat aucun problme, ceux-ci fonctionnant bien. Mais en observant de plus prs et en particulier les logs de dmarrage des services... quand ils existent (cf. le problme prcdent), nous constatons qu'il arrive que le contrleur de cloud s'arrte brutalement sans raison apparente. Nous constatons galement une erreur lors de l'installation des paquets lorsqu'il dmarre les instances, il y a le message suivant :Unknow i n s t a n c e :

Cette erreur vient du fait qu'il lance les services de la mauvaises faon, puisque Ubuntu utilise dsormais upstart 10 . Aprs avoir parcouru la documentation, le bug tracker et fait de nombreux tests, nous arrivons la dduction que cela pourrait tre un problme li la version de Java installe. Nous avons donc test d'installer le paquet ociel de Java : Sun-Java6-jre et mme la version OpenSource : openjdk-6-jre mais cela n'a rien chang. Nous avons galement essay de recrer un environnement Ubuntu Server partir de l'accs physique au cluster du Grid5000 dans les locaux du LORIA 11 , grce Sebastien Badia...mais en vain, cela n'a pas rgl le soucis. Nous avons poursuivi les exprimentations et les analyses pour essayer d'isoler au mieux le problme. Je tiens prciser que nous avons essay d'obtenir de l'aide de la communaut Eucalyptus et la seule rponse concrte que nous avons eu est que c'est sans doute le fait de notre plate forme particulire et que l'on peut toujours essayer de dbugger le code source en Java. En essayant plusieurs manipulations, nous nous confrontons constamment ce type d'erreur :10. Upstart est un remplaant du daemon init qui se base sur les vnements. Il a t crit par Scott James Remnant, un employ de Canonical Ltd. Upstart fonctionne de manire asynchrone. De la mme manire qu'il gre le lancement des tches et daemons au dmarrage et leur arrt l'arrt de la machine, il les supervise pendant que le systme tourne. 11. Laboratoire Lorrain de Recherche en Informatique et ses Applications

22

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

[ error :0215] j a v a . l a n g . NoClassDefFoundError : groovy / l a n g / GroovyObject at j a v a . l a n g . ClassLoader . d e f i n e C l a s s 1 ( Native Method ) at j a v a . l a n g . ClassLoader . d e f i n e C l a s s ( ClassLoader . j a v a : 6 3 4 ) at j a v a . s e c u r i t y . S e c u r e C l a s s L o a d e r . d e f i n e C l a s s ( S e c u r e C l a s s L o a d e r . j a v a : 1 4 2 ) at j a v a . net . URLClassLoader . d e f i n e C l a s s ( URLClassLoader . j a v a : 2 7 7 ) at j a v a . net . URLClassLoader . a c c e s s $ 0 0 0 ( URLClassLoader . j a v a : 7 3 ) at j a v a . net . URLClassLoader$1 . run ( URLClassLoader . j a v a : 2 1 2 ) at j a v a . s e c u r i t y . A c c e s s C o n t r o l l e r . d o P r i v i l e g e d ( Native Method ) at j a v a . net . URLClassLoader . f i n d C l a s s ( URLClassLoader . j a v a : 2 0 5 ) at j a v a . l a n g . ClassLoader . l o a d C l a s s ( ClassLoader . j a v a : 3 2 1 ) at sun . misc . Launcher$AppClassLoader . l o a d C l a s s ( Launcher . j a v a : 2 9 4 ) at j a v a . l a n g . ClassLoader . l o a d C l a s s ( ClassLoader . j a v a : 2 6 6 ) at com . e u c a l y p t u s . b o o t s t r a p . SystemBootstrapper . i n i t ( SystemBootstrapper . j a v a : 1 2 8 ) Caused by : j a v a . l a n g . ClassNotFoundException : groovy . l a n g . GroovyObject at j a v a . net . URLClassLoader$1 . run ( URLClassLoader . j a v a : 2 1 7 ) at j a v a . s e c u r i t y . A c c e s s C o n t r o l l e r . d o P r i v i l e g e d ( Native Method ) at j a v a . net . URLClassLoader . f i n d C l a s s ( URLClassLoader . j a v a : 2 0 5 ) at j a v a . l a n g . ClassLoader . l o a d C l a s s ( ClassLoader . j a v a : 3 2 1 ) at sun . misc . Launcher$AppClassLoader . l o a d C l a s s ( Launcher . j a v a : 2 9 4 ) at j a v a . l a n g . ClassLoader . l o a d C l a s s ( ClassLoader . j a v a : 2 6 6 ) . . . 12 more [ e r r o r : 0 3 9 0 ] S e r v i c e e x i t with a r e t u r n v a l u e o f 1

Eucalyptus est cens fonctionner et tre intgr la distribution Ubuntu Server, mais son dploiement sur Grid 5000 est tonnamment dicile. Au nal, nous n'avons pas russi nous sortir de ce problme, Lucas Nussbaum nous a donc conseill de passer l'tude d'OpenStack.

23

3. OpenStack

3.1. IntroductionOpenStack est un projet de cloud computing priv et public sous licence Apache 1 . Initialement dvelopp par la NASA, l'agence gouvernementale qui a en charge la majeure partie du programme spatial civil des tatsUnis 2 . et Rackspace Cloud, un fournisseur de plate-forme de cloud computing 3 partir de juillet 2010, ces deux socits ont ensuite t rejointes par Cloud.com, Citrix Systems, Dell, enStratus, NTT Data, PEER 1, RightScale, Cloudkick, Zenoss, Limelight, Scalr, AMD, Intel, Spiceworks, Canonical et Cisco pour le dveloppement d'OpenStack. L'objectif d'OpenStack est de rendre le Cloud simple mettre en uvre et trs extensible. Ubuntu, l'une des distributions Linux les plus populaires, a annonc que sa version 11.04, baptise Natty Narwhal, supportera nativement OpenStack.

1. La licence Apache est une licence de logiciel libre et open source.http://www.apache.org/licenses/LICENSE-2.0.html 2. La National Aeronautics and Space Administration.http://www.nasa.gov/ 3. Rackspace Cloud :http://www.rackspace.com/cloud/

24

3.1.1. Aperu des partenaires d'OpenStack

Figure 3.1.: Source

openstack-compute/admin/content/

:

OpenStack

Compute

Administration

Guide

http://docs.openstack.org/

3.1.2. Composants d'OpenStackOpenStack Swift OpenStack Swift permet de crer un service de stockage dans une architecture de cloud computing. Il permet de grer une large capacit de stockage volutive avec une redondance ainsi que le basculement entre les dirents objets de stockage. OpenStack Nova Compute OpenStack Compute permet d'administrer un contrleur pour une applicationIaaS. Cela permet de grer des machines virtuelles pour des utilisateurs ou des groupes. On peut l'utiliser pour congurer le rseau des machines virtuelles d'un projet. ages de machines virtuelles.

OpenStack Imaging Service OpenStack Imaging Service est un systme de rcupration et de recherche d'im-

Exemple de l'utilisation des trois applications :

25

Figure 3.2.: Source

openstack-compute/admin/content/

:

OpenStack

Compute

Administration

Guide

http://docs.openstack.org/

Pour notre projet nous utilisons OpenStack Nova Compute.

3.2. OpenStack Nova Compute3.2.1. PrrequisHardware : Les composants d'OpenStack sont destins fonctionner sur du matriel standard. Systme d'exploitation : OpenStack tourne actuellement sur Ubuntu, la version utiliser pour les grands

dploiements est, de prfrence, la 10.04 LTS. Les membres de la communaut OpenStack ont test d'installer Nova sur CentOS et RHEL, ils ont document leurs dmarches sur le wiki d'OpenStack. Pour ces autres distribution GNU/Linux, une installation sur CentOS 6 semble la solution la plus viable car elle ne soure pas de problmes de dpendances.

Rseaux : Un dbit de 1000 Mbps est suggr. Pour OpenStack Compute, le rseau est congur sur desinstallations multi-noeuds entre les machines physiques sur un seul sous-rseau.

Base de donnes : Pour OpenStack Compute, nous pouvons installer soit PostgreSQL ou MySQL commebase de donnes lors du processus d'installation d'OpenStack Compute.

26

3.2.2. Version actuelle et versions venir de Nova ComputeOpenStack est un projet trs rcent, la dernire version baptise "Bexar" est sortie le 3 Fvrier 2011, la prochaine baptise "Cactus" est prvu pour le 15 Avril 2011.

Figure 3.3.: Source

openstack-compute/admin/content/

:

OpenStack

Compute

Administration

Guide

http://docs.openstack.org/

3.2.3. Installation de Nova Compute sur un seul serveurInstallation scriptePour nos premiers pas sur Nova Compute nous nous sommes bass sur le wiki d'OpenStack 4 . Nous avons donc essay la premire installation que le wiki nous propose : une installation via un script sur un seul serveur. Nous avons d'abord lu la documentation technique qui prsente ce script construit en trois tapes principales, en fonction de l'argument que l'on donne au script : "branch" cre un accs au Bazaar d'OpenStack 5 . Si par exemple nous excutons la commande suivante :# . / nova . sh branch l p : nova / bexar

Nous obtenons un accs au Bazaar de Bexar 6 . "install" Installe les paquets pour l'installation d'une base, la cration des utilisateurs et la cration d'un chier de conguration prt tre utilis pour faciliter l'installation d'OpenStack. "run" Dmarre le rseau utilis par Nova. Le but de ce script est de crer une architecture de Nova de ce type :

4. http://wiki.openstack.org/InstallInstructions 5. Bazaar (bzr en ligne de commande) est un systme de gestion de versions libre sponsoris par Canonical Ltd. Il appartient la catgorie des systmes de gestion de version dcentraliss http://fr.wikipedia.org/wiki/Bazaar_%28logiciel%29 6. Bexar est la version d'OpenStack sortie le 3 Fvrier 2011

27

Figure 3.4.: Source : OpenStack Tutorial IEEE CloudCom http://salsahpc.indiana.edu/CloudCom2010/slides/PDF/tutorials/OpenStackTutorialIEEECloudCom.pdf

Nous avons donc test cette installation qui s'est bien droule, mais pour pouvoir dployer des machines virtuelles aprs l'utilisation du script, nous devons congurer le rseaux utilis par nos machines virtuelles. Nous avons ensuite abandonn l'installation d'OpenStack Compute car nous voulions utilis une architecture avec un contrleur et un nud. Nous pouvons toutefois conclure que l'installation sur un seul serveur nous permet de tester rapidement l'installation d'OpenStack Compute.

3.2.4. Installation sur plusieurs serveurs manuellementInstallation du contrleur Obtention des paquetsOpenStack est crit en Python, il faut donc installer au pralable les python-software-properties. Nous utilisons Ubuntu 10.04 Lucid Lynx pour l'installation d'Openstack. Ubuntu ne supporte pas encore nativement Openstack, il faut donc que l'on rajoute le PPA 7 de Nova : https://launchpad.net/~nova-core/+archive/trunk

On rentre donc les commandes suivantes :

# apt g e t i n s t a l l python s o f t w a r e p r o p e r t i e s # addapt r e p o s i t o r y ppa : nova c o r e / trunk # apt g e t update

On installe les principaux paquets de Nova :

$ sudo apt g e t i n s t a l l python g r e e n l e t python mysqldb python nova novacommon novadoc nova a p i novanetwork nova o b j e c t s t o r e nova s c h e d u l e r novacompute e u c a 2 o o l s unzip

7. Les Personal Package Archives (abrgs PPA) sont des dpts de paquets logiciels oerts aux individus et aux quipes de dveloppeurs dsireux de proposer facilement leurs logiciels pour les utilisateurs d'Ubuntu..http://doc.ubuntu-fr.org/ppa

28

Conguration du chier nova.confLe chier principal de conguration de Nova se nomme nova.conf, il se situe dans /etc/nova/ Aperu de nova.conf :1 2 3 4 5 6 7 8 s q l _ c o n n e c t i o n=mysql : / / r o o t : nova@/nova s3_host= rabbit_host= ec2_host= ec2_url=http :// :8773/ s e r v i c e s / Cloud network_manager=nova . network . manager . VlanManager fixed_range= network_size=

correspond l'adresse IP du contrleur sql_connection : L ou se situe la base de donnes s3_host : L ou se situe le service qui contient les images des machines virtuelles rabbit_host : L ou se situe le serveur de messagerie rabbit AMQP ec2_url : L ou se situe l'interface nova-api network_manager : Correspond au type de communication qu'utilise le contrleur pour parler aux machines virtuels. Il en existe 3. nova.network.manager.FlatManager FlatDHCPManager nova.network.manager.VlanManager xed_range= : Correspond au rseaux des machines virtuelles network_size= : Correspond au nombre d'adresses IP utilises pour hberger nos machines virtuelles On cre le groupe et l'utilisateur nova pour ne pas avoir de problmes de droits :# addgroup nova # chown R r o o t : nova / e t c / nova # chmod 644 / e t c / nova / nova . c o n f

Installation et conguration de MySql# # # # # # # bash MYSQL_PASS=nova c a t mykey . p r i v # chmod 0600 mykey . p r i v

Dploiement des machines virtuelles Maintenant que toutes les tapes ont t ralises, nous pouvons dployer nos machines virtuelles bases sur l'image d'Ubuntu prcdemment cite :# euca d e s c r i b e images # euca run i n s t a n c e s $emi k mykey t m1 . t i n y

8. http://open.eucalyptus.com/wiki/Euca2oolsGuide_v1.1

31

3.2.5. Installation scripte sur plusieurs serveursPrsentation des scripts Les dveloppeurs d'OpenStack ont prvu des scripts d'installation pour le contrleuret le nud. Le principal soucis des scripts est que cela ne nous explique pas l'installation et la conguration de Nova en dtail. Pour l'installation par scripts, on doit lancer le script du contrleur, en annexe. Celui-ci installe les paquets de Nova et congure le chier nova.conf ainsi que l'environnement euca2ools. Ensuite, on doit copier le nova.conf sur le nud et on peut lancer le script d'installation de l'environement du nud, en annexe.

3.3. Problmes rencontrsChoisir le type d'installation d'OpenStack Le site d'Openstack nous propose plusieurs types d'installationpour Nova : installer Nova sur une seule machine installer Nova sur plusieurs machines avec les outils de dploiements d'OpenStack installer Nova sur plusieurs machines manuellement installer Nova sur plusieurs machines par des scripts Un des premiers problmes que nous avons rencontr tait de choisir le type d'installation de Nova. Notre but tait de crer un systme du mme type que Eucalyptus : c'est dire un contrleur et un nud, mais au vu des problmes que nous a pos ce type de solution pour Eucalyptus, nous avons voulu essayer une installation sur une seule machine. Le problme est que OpenStack propose plusieurs types d'installation sur une seule machine : installation via des scripts installation via les packages installation via l'utilitaire Bexar Ces direntes installations prsentent l'avantage de pouvoir installer Nova rapidement mais il n'y a aucune explication sur ce que les scripts installent et sur la conguration de Nova. Pour mieux comprendre l'installation de Nova, nous avons donc choisi une installation manuelle sur plusieurs serveurs.

Problmes de PPA et de cration de bridge Lors de l'installation de Nova Compute, nous avons rencontr plusieurs problmes. L'ajout du PPA nous renvoyait un message d'erreur de ce type :# addapt r e p o s i t o r y ppa : nova c o r e / trunk Error r e a d i n g h t t p s : / / launchpad . net / a p i /1.0/~ nova c o r e/+a r c h i v e / trunk :

Nous avons essay d'ajouter le PPA sur une autre image et il n'y avait pas ce message. Aprs avoir compar les chiers de conguration d'APT sur les deux environnements, nous nous sommes rendu compte que le PPA avait bien t ajout : mme avec ce message d'erreur, le PPA est ajout. Le second problme que nous avons rencontr se situe lors de la cration du brigde. Aprs avoir dit le chier /etc/network/interfaces, nous devions redmarrer le service networking mais nous avons eu le message d'erreur suivant :1 # / e t c / i n i t . d/ networking r e s t a r t 2 R e c o n f i g u r i n g network i n t e r f a c e s . . . unknown i n t e r f a c e eth0=eth0 . 3 I n t e r n e t Systems Consortium DHCP C l i e n t V3 . 1 . 3 4 Copyright 2004 2009 I n t e r n e t Systems Consortium . 5 All rights reserved . 6 For i n f o , p l e a s e v i s i t h t t p s : / /www. i s c . org / s o f t w a r e /dhcp/ 7 8 SIOCSIFADDR : No such d e v i c e 9 br100 : ERROR w h i l e g e t t i n g i n t e r f a c e f l a g s : No such d e v i c e 10 br100 : ERROR w h i l e g e t t i n g i n t e r f a c e f l a g s : No such d e v i c e 11 Bind s o c k e t to i n t e r f a c e : No such d e v i c e 12 F a i l e d to b r i n g up br100 . Ignoring

32

Notre bridge nous permet de relier une interface rseau physique une interface rseau virtuelle, pour pouvoir le crer nous avons install le paquet bridge-utils qui permet de crer et grer des bridges. Mme avec ce paquet notre bridge n'tait pas cr... Nous avons tudi les journaux du systme avec les commandes syslog 9 et modprobe 10 qui nous ont indiqu qu'il manquait un module 11 intitul "bridge-module" au niveau du noyau. Un petit schma pour mieux comprendre :

Figure 3.5.: Source

modules_linux

: Les modules Linux http://doc.ubuntu-fr.org/tutoriel/tout_savoir_sur_les_

Vu que nous tions en retard au niveau de notre planning, nous n'avons pas essay de corriger cette erreur et nous avons donc essay de crer un bridge sur un autre environnement, ce qui a fonctionn. En fait le principal problme tait de crer un environnement Kadeploy Ubuntu sous lequel nous pouvions crer un bridge et ajouter le PPA.

La mise en rseau des machines virtuelles Lorsque nous dployons nos machines virtuelles sur Grid 5000, elles n'ont pas d'adresse IP. Si nous xcutons la commande suivante :# euca d e s c r i b e i n s t a n c e s

Nous obtenons le rsultat suivant :# euca d e s c r i b e i n s t a n c e s RESERVATION r kow5gx5o t o t o d e f a u l t INSTANCE i 00000001 ami 7b006df8 . t i n y 2011 03 25T09 : 2 1 : 0 8 Z nova

networking

mykey ( toto , l o c a l h o s t . l o c a l d o m a i n ) 0

m1

Sur Grid5000, les machines virtuelles sont sur un rseau rserv exclusivement pour la virtualisation. Ce rseau utilise un DHCP qui attribue des addresses IP aux machines virtuelles si elles comportent une adresse mac avec un prxe valide. Pour rsoudre notre problme nous supposons que nous devons crer nos propres images de machines virtuelles en local pour leur attribuer un prxe mac. Vu le manque de temps ce problme n'a pas t rsolu pour l'instant.

org/wiki/Syslog

9. Syslog est un protocole dnissant un service de journaux d'vnements d'un systme informatique.http://fr.wikipedia.

savoir_sur_les_modules_linux

10. modprobe permet de charger des modules du noyau Linux dynamiquementhttp://doc.ubuntu-fr.org/tutoriel/tout_

11. Un module est un morceau de code permettant d'ajouter des fonctionnalits au noyau : pilotes de priphriques matriels, protocoles rseaux, etc. . . http://doc.ubuntu-fr.org/tutoriel/tout_savoir_sur_les_modules_linux

33

4. OpenNebula

4.1. IntroductionOpenNebula est un projet Open Source de cloud computing de type IaaS. Le projet a t lanc en 2005, la premire version stable est sortie en 2008. Le projet est sous licence Apache 2 1 . Le projet a pour but la gestion de machines virtuelles grande chelle sur des infrastructures distribues ou de cluster, et supporte plusieurs technologies d'hyperviseur : Xen, KVM et VMware. OpenNebula permet aussi de combiner les infrastructures locales et publiques, ce qui ore une grande modularit aux environnements hbergs. OpenNebula est intgr dans Debian Sid, Ubuntu Natty et OpenSuse. OpenNebula 2.2 Bta 1 est sortie le 02/06/2011. Dans le cadre du projet, nous avons utilis la dernire version stable disponible, la 2.0 parue le 24/10/2010. La documentation, assez fournie, mais parfois assez brute de fonderie, est disponible sur le site ociel : documentation gnrale : http://opennebula.org/documentation:documentation rfrence : http://opennebula.org/documentation:references

Figure 4.1.: Aperu des dirents partenaires, utilisateurs et projets vedettes de OpenNebula

1. La licence Apache est une licence de logiciel libre et open source.http://www.apache.org/licenses/LICENSE-2.0.html

34

4.2. FonctionnementDans le cadre du projet, nous utilisons OpenNebula pour crer un cloud priv. Pour dployer ce type de cloud, OpenNebula adopte une architecture classique de type cluster-like avec un frontend et un ou plusieurs nuds qui excutent et hbergent les machines virtuelles, avec un rseau physique reliant le frontend aux nuds.

FrontendLe frontend est la machine qui gre toutes les autres : les nuds ou les VM. Toute la gestion du cloud se fait sur cette machine.

Figure 4.2.: Illustration du frontendLe frontend permet de grer tous les service du cloud, notamment celui qui gre le cycle de vie des VM ou encore les sous-systme comme les rseaux virtuels, le stockage et les nuds. L'administration du cloud se fait avec le compte utilisateur oneadmin. Pour la cration d'une VM, il faut au minimum un chier .one de dnition de cette VM. Dans ce chier on trouve notamment le chemin de l'image(chier img, qcow2...), la spcication des interfaces rseaux, les informations de contextualisation, etc.

NudsLes nuds sont les machines qui hbergent les machines virtuelles, c'est dire des serveurs htes de virtualisation.

Figure 4.3.: Illustration d'un nudChaque nud dispose des trois lments suivants : un hyperviseur, c'est l'hyperviseur qui permet la virtualisation de plusieurs machines virtuelles sur une seule machine physique. Les hyperviseurs utiliss par OpenNebula sont Xen, KVM et VMware ; un bridge, le bridge permet de relier les interfaces rseaux virtuelles des VM au l'interface rseaux physique de la node ; un serveur ssh, OpenNebula utilise ssh notamment pour copier les images des machines virtuelles.

35

FonctionnementDans un premier temps, on doit renseigner le frontend en lui indiquant les nuds qu'il va pourvoir utiliser. Pour la gestion des nuds on utilise la commande onehost. Cette commande permet d'ajouter des nuds au cloud, de les lister ou de les supprimer. Ajouter un nud au cloud :$ onehost add node01 im_kvm vmm_kvm tm_ssh

Cette commande permet d'ajouter le nud node01 au cloud, im_kvm et vmm_kvm prcise que l'on utilise kvm comme hyperviseur et tm_ssh indique que l'on copie les images des VM par ssh. Ces trois paramtres sont en fait le nom des drivers que l'ont souhaitent utiliser. Lister les nodes :$ onehost l i s t

Supprimer une node.$ onehost d e l e t e node01

Figure 4.4.: Une structure compose d'un frontend et de nudsAprs avoir pris connaissance des nuds, on peut alors dployer des VM. Pour la gestion des VM, on utilise la commande onevm. Cette commande permet de crer des VM, de les lister, de donner des informations complmentaires ou de les supprimer. Cration d'une VM :$ onevm c r e a t e m a c h i n e _ v i r t u e l l e . one

La rpartition des VM sur les nuds se fait de manire automatique, OpenNebula va dployer la VM sur un nud disposant de susamment de ressources pour l'hberger. machine_virtuelle.one est un chier descriptif de la VM, vous trouverez plus d'information sur ce chier dans l'annexe "Cration de machines virtuelles et chiers de dnition" . Lister les VM :$ onevm l i s t

Rcuperer des information sur une VM :$ onevm show ID_VM

36

L'ID de la VM est donn par la commande onevm list. Supprimer une VM :$ onehost d e l e t e ID_VM

Figure 4.5.: Dploiement de VMs par SSH sur les nudsPendant le dploiement d'une VM sur une node, une image disque est copie du frontend vers un nud, une interface rseau virtuelle est cre et attache au bridge puis la VM est dmarre.

37

Figure 4.6.: Dploiement nalisPour aller plus loin, d'autres commandes sont disponibles : oneimage : permet d'enregistrer des images de machines virtuelles avec leur conguration ; onevnet : permet d'administrer des rseaux virtuels ; onecluster : permet de regrouper des machines pour former des clusters.

4.3. InstallationPour dployer OpenNebula 2 nous avons dcid d'utiliser comme support une Ubuntu Lucid Lynx 10.04 LTS. Pour cela nous sommes parti d'une image de Ubuntu Karmic disponible sur le Grid que nous avons mise jour et fait passer en Lucid. Nous avons dcid d'utiliser cette distribution car elle supportait plus facilement Eucalyptus et permettait galement d'installer OpenNebula via un PPA. Les deux groupes sont donc parti de cette image mise jour comme support.

4.3.1. Installation du FrontendIl existe plusieurs faons d'installer OpenNebula : par une archive disponible sur le site ociel ou par les paquets disponibles pour Ubuntu. Dans le cadre du projet nous avons donc dcid de passer par les paquets, ce qui nous a rendu la tche d'installation beaucoup plus aise (aucun problme de dpendances, pr et postconguration automatique, etc.) Les chiers README inclus aux paquets Debian opennebula 2 et opennebula-node Fichier README du paquet Debian opennebula-node nous ont t d'une trs grande aide pour l'installation. Premirement, OpenNebula 2 est packag dans un PPA pour Ubuntu Lucid, nous avons donc ajout le PPA dans le chier /etc/apt/sources.list :deb http : / / ppa . launchpad . net / opennebula ubuntu/ppa/ ubuntu i n t r e p i d main

Puis nous avons install le paquet opennebula :#apt g e t i n s t a l l opennebula 2. Fichier README du paquet Debian opennebula

38

Voici la liste des dpendance du paquet opennebula : libruby1.8 libsqlite3-ruby libsqlite3-ruby1.8 libxmlrpc-c3 libxmlrpc-core-c3 opennebula-common ruby ruby1.8 Attention, il se peut qu'une dpendance ncessaire pour contextualiser les machines virtuelles soit manquante : mkisofs

4.3.2. Conguration du FrontendLors de l'installation, un compte utilisateur oneadmin est cr. C'est depuis ce compte que toutes les commandes pour grer le Cloud sont lances. Il nous faut maintenant le congurer en ditant le chier /var/lib/one/one_auth.# su oneadmin $ v i $HOME/ . one /one_auth

Dans ce chier, entrez la ligne suivante en changeant le mot de passe :oneadmin:< password>

Dans un premier temps, nous avions oubli de crer ce chier, ce qui occasionnait l'erreur suivante :/ u s r / l i b / one / ruby /OpenNebula . rb : 7 7 : i n ` i n i t i a l i z e ' : ONE_AUTH f i l e not p r e s e n t ( RuntimeError ) from / u s r / l i b / one / ruby / c l i e n t _ u t i l i t i e s . rb : 2 3 9 : i n ` new ' from / u s r / l i b / one / ruby / c l i e n t _ u t i l i t i e s . rb : 2 3 9 : i n ` get_one_client ' from / u s r / bin / onehost : 3 4 3

Par dfaut, le service opennebula ne dmarre pas automatiquement. Nous avons donc fait les actions suivantes. Rendre excutable le script /etc/init.d/opennebula :# chmod +x / e t c / i n i t . d/ opennebula

Ajouter le service en dmarrage automatique pour tous les runlevels :update r c . d opennebula d e f a u l t s

Nous avons par la suite congur le serveur SSH pour dsactiver la vrication strictes des cls des serveurs prsentes dans le chier $HOME/.ssh/known_hosts. Par dfaut, SSH est en mode "ask", ce qui demande une interaction de la part de l'utilisateur, causant problme pour l'excution de scripts automatiss. Dans le chier $HOME/.ssh/congHost StrictHostKeyChecking no

Par dfaut, lors de la copie via scp d'une image disque de machine virtuelle du frontend vers un nud, OpenNebula tente de se connecter son serveur SSH local et demande le mot de passe. Pour supprimer cette interaction, il faut ajouter la cl publique du compte oneadmin au chier authorized_keys.# su oneadmin $ cd $HOME/ . s s h / $ c a t id_rsa . pub >> authorized_keys

Aprs avoir suivi toute ces tapes, nous avons enregistr un environnement sous le nom lucid-opennebulafrontend pour pouvoir la redployer avec kadeploy3 et travailler sur le Grid.

4.3.3. Installation d'un nudComme pour le contrleur, nous avons ajout le dpot PPA correspondant :deb http : / / ppa . launchpad . net / opennebula ubuntu/ppa/ ubuntu i n t r e p i d main

Puis nous avons install le paquet opennebula-node# a p t i t u d e i n s t a l l opennebula node

Il faut aussi installer les paquets pour le serveur ssh et la manipulation de bridge si ncessaire (bridge-utils ).#a p t i t u d e i n s t a l l l i b v i r t 0 openssh s e r v e r

39

4.3.4. Conguration d'un nudVricationsChaque nud est un serveur de virtualisation, devant disposer d'un hyperviseur. Il nous faut vrier que l'hyperviseur choisi fonctionne correctement sur les nuds, dans notre cas nous utilisons KVM 3 . Pour cela, il faut que le processeur supporte la virtualisation (vmx pour Intel, svm pour AMD, normalement disponible sur tous les nuds de grid5000).# egrep ' (vmx | svm ) ' / proc / c p u i n f o

Il faut vrier que les modules noyau kvm et kvm-intel ou kvm-amd sont bien chargs :# lsmod | grep "kvm \ ( . \ ) "

Conguration SSHPour autoriser les connexions SSH du contrleur vers la node, il faut copier la cl publique SSH du compte oneadmin du frontend dans le chier authorized_keys du compte oneadmin de la node. La documentation Debian nous indique les commandes suivantes :r o o t @ c o n t r o l l e r > su oneadmin oneadmin@controller > c a t $HOME/ . s s h / id_rsa . pub root@node01> su oneadmin oneadmin@node01> v i $HOME/ . s s h / authorized_keys

Arriv ce point, un nud est correctement congur. Nous avons enregistr l'environnement sous le nom lucid-opennebula-node. Il reste cependant crer un bridge, et y attacher l'interface rseau ethernet principale. OpenNebula reliera les interfaces rseaux virtuelles de chaque machine virtuelle ce bridge, leur permettant de communiquer avec le rseau.

4.3.5. Problmes rencontrs pour l'installation et la conguration des environnementsIl nous a t dicile de crer un environnement fonctionnant bien sur tous les sites de Grid 5000 cause de quelques particularits, nous allons les expliquer ici.

Accs au dpt PPANous avons rencontr des problmes lors de l'ajout des PPA, en eet un problme de proxy nous empchait de tlcharger les paquets de OpenNebula. Nous avons donc ouvert un bug dans le Bugzilla pour demander son ouverture.

Dpt PPA Ubuntu obsolte, passage Debian SIDLors de nos tests, nous avons rencontrs des bugs de OpenNebula. Aprs recherche, ceux-ci taient dj corrigs dans une version plus rcente de OpenNebula. Nous sommes alors passs Debian SID et nous avons enregistr deux nouveaux environnements naliss et fonctionnels : sid-opennebula-frontend et sid-opennebula-node.

Conguration rseau des nuds : cration du bridge et interface rseauL'interface utilise pour le rseau de production change d'un site l'autre. Une des solutions est d'ajouter un chier de conguration rseau dans la postinstall 4 de notre environnement. Il est alors possible d'utiliser la variable NET_DEV (interface rseau principale) an de crer une conguration rseau universelle incluant un bridge. Cependant, cette solution tait en cours de dploiement 5 . Nous alors avons choisi une solution de contournement, congurer le rseau dans le chier /etc/rc.local (cf. Annexes). Ce script est excut aprs tous les autres scripts dans tous les runlevel. Il dtecte l'interface rseau principale utilise, puis crer un bridge nomm br0 et y attache cette interface avec la commande brctl.

3. KVM : Kernel-based Virtual Machine, technologie de virtualisation intgre au noyau Linux. 4. grid5000.fr : Prepost 5. Rapport de bug sur le bugzilla concernant la variable NET_DEV

40

Problmes d'espace disque disponibleL'espace disque disponible la racine de chaque serveur est uniquement de quelques Go, ce qui occasionne rapidement des problmes d'espace disque lors du dploiement de multiples machines virtuelles volumineuses sur le mme nud. Nous avons rsolu le problme rapidement en ajoutant un script /etc/rc.bindhome (cf. Annexes) pour contourner ce problme. Celui-ci monte avec l'option bind le rpertoire /tmp/one dans le rpertoire o sont places les images disques (/var/lib/one). Ce script doit obligatoirement tre excut avant celui lanant le service opennebula dans le runlevel 2.

4.4. Cration de machines virtuelles et chiers de dnitionPour la cration de VM (commande onevm create ) et de rseaux (commande onevnet create ), il faut crer avant tout une image disque avec un systme install et des chiers de dnitions.

4.4.1. Image disque de machine virtuelleCration d'une image disqueNous avons utilis deux solutions, la premire, faire une installation classique avec qemu, et la deuxime, utiliser vmbuilder.

Qemu Avec qemu-img, on cre une image de 4Go au format qcow2. Le format qcow2 apporte des avantages sur le format raw dont la compression.qemuimg c r e a t e debian_squeeze . qcow2 4G

On lance ensuite qemu, avec cette image disque et l'iso du CD d'installation de Debian pour faire une installation standard.qemusystem x86_64 hda debian_squeeze . img cdrom debian 6.0.0 amd64 . i s o boot once=d m 512

VM Builder VMBuilder 6 est un utilitaire crit en Python permettant de crer rapidement des images mini-

males de machines virtuelles. Il gre Debian et Ubuntu, cependant le support de Debian ne semble pas jour et son utilisation est beaucoup plus simple pour Ubuntu. Pour nos essais, nous avons donc cr une image de Ubuntu Lucid de cette faon :ubuntuvm b u i l d e r kvm l u c i d arch amd64 addpkg=openssh s e r v e r r o o t p a s s=g r i d 5 0 0 0

Les premiers paramtres sont l'hyperviseur cible (kvm), puis la distribution (ubuntu lucid). Nous ajoutons ensuite un paquet : le serveur openssh. L'option rootpass permet de spcier un mot de passe root.

CongurationEn premier lieu, il faut supprimer les chiers de rgles udev concernant les interfaces rseaux (situes dans /etc/udev/rules.d ). Celles-ci xent les interfaces rseaux en fonction des adresses MAC, ce qui est problmatique pour une image de machine virtuelle gnrique. Il faut ensuite permettre la contextualisation de la machine virtuelle pour OpenNebula. Il s'agit d'une fonctionnalit permettant de personnaliser les machines virtuelles, en leur attachant un nouveau disque disposant d'un systme de chiers au format ISO 9660. Celui-ci contient un script init.sh pour paramtrer la machine virtuelle et des chiers complmentaires (chier de variables context.sh, cls SSH) Attention, quelque soit le priphrique cible donn par OpenNebula pour l'iso de contexte, le systme dtecte un lecteur optique cause du systme de chier, et le nomme sr0 (/dev/sr0).1 2 3 4 5 6 7 mount t i s o 9 6 6 0 / dev / s r 0 /mnt i f [ f /mnt/ c o n t e x t . sh ] ; then . /mnt/ i n i t . sh fi umount /mnt 6. SitedeVMBuilder:https://launchpad.net/vmbuilder

41

4.4.2. Fichier de dnition de machine virtuelleCe chier permet de dnir une machine virtuelle. On peut ensuite l'instancier avec la commande onevm create chier.one. Il contient des variables gnrales. Celles-ci sont listes dans la documentation de OpenNebula 7 .1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 NAME = myUbuntu CPU = 0.5 MEMORY = 400 DISK = [ source = "/ var / l i b / one / l u c i d /ubuntu l u c i d . qcow2 " , target = " sda " , r e a d o n l y = "no " , d r i v e r = "qcow2" ] OS = [ ARCH = "x86_64" ] NIC = [ BRIDGE = " br0 " ] FEATURES = [ a c p i="no" ] CONTEXT = [ f i l e s = "/ var / l i b / one / l u c i d / i n i t . sh / var / l i b / one / . s s h / id_rsa . pub " , i d = "$VMID" , t a r g e t = "hdc " , root_pubkey = " id_rsa . pub " , username = " oneadmin " , user_pubkey = " id_rsa . pub" ]

NAME : nom de la VM CPU : nombre de processeurs, 0.5 correspond 50% d'un processeur MEMORY : mmoire alloue en Mo DISK : dnition de l'image disque du systme, du nom du priphrique dans /dev, etc. Il faut aussi spcier une variable driver pour utiliser un autre format d'image (comme qcow2). NIC : dnition du rseau, possibilit d'utiliser un rseau virtuel existant de OpenNebula (NETWORK), ou de dnir uniquement une interface avec un bridge auquel relier l'interface de la VM. OS : information sur l'OS contenu dans l'image disque, il est ncessaire de prciser l'architecture. CONTEXT : section permettant la contextualisation de la machine virtuelle. La contextualisation de la machine virtuelle est une fonction essentielle de conguration. Elle permet de spcier un script excuter au lancement de la VM, et de lui passer des paramtres. Pour ce faire, les chiers contenus dans la variable les sont archivs dans un chier iso. Ce chier iso est mont au lancement de la VM, et le script init.sh est appel. Ce script dispose en variable d'environnement de toutes les variables dnies dans le chier de dnition de la VM. Il va alors xer lui mme l'adresse IP et la conguration rseau, les cls SSH, etc.

4.4.3. Fichier de dnition de rseau virtuelIl est possible (et facultatif), de crer un rseau virtuel dans OpenNebula, pour lui dlguer la gestion de la conguration et rseau et l'attribution automatique d'IP chaque VM. La commande utiliser pour crer le rseau est onevnet create mon_reseau.net1 2 3 4 5 NAME = TYPE = BRIDGE = NETWORK_SIZE = NETWORK_ADDRESS= " BigNetwork " "RANGED" " br0 " 250 "10.144.0.0"

Ce chier de dnition est trs court et dnit une conguration rseau pour un groupe de VM. NAME nomme le rseau. TYPE peut avoir deux valeurs : RANGED et FIXED. RANGED permet de dnir un bloc d'IP et les deux variables suivantes en dpendent. La valeur FIXED permet de dnir une liste d'adresses IP. NETWORK_SIZE, nombre de machines dans le rseau NETWORK_ADDRESS, adresse du rseau utiliser Avec cette conguration, OpenNebula va attribuer une IP dans le rseau 10.144.O.0 chaque VM utilisant le rseau BigNetwork. Voici un exemple pour un rseau de type FIXED.7. opennebula.org : Virtual Machine Denition File 2.0

42

1 NAME = " Small network " 2 TYPE = FIXED 3 4 BRIDGE = br0 5 LEASES = [ IP = " 1 9 2 . 1 6 8 . 0 . 5 " ] 6 LEASES = [ IP = " 1 9 2 . 1 6 8 . 0 . 6 " ] 7 LEASES = [ IP = " 1 9 2 . 1 6 8 . 0 . 7 " ]

Les IP disponibles sont listes dans LEASES.

4.5. Dploiement automatis sur Grid 5000Nous avons crit des scripts pour automatiser chaque tape du dploiement d'un cloud OpenNebula. Le prrequis est d'avoir transfr deux environnements et les enregistr avec kaenv3 sur tous les sites. Ces deux environnements se nomment : sid-opennebula-frontend : frontend OpenNebula sid-opennebula-node : nud OpenNebula Tous les scripts suivants sont fournis dans les annexes. L'idal est de les enregistrer et de les excuter dans un rpertoire identique.

4.5.1. oargridsubON.sh : rservation de nuds sur plusieurs sitesCe script permet de rserver des noeuds sur plusieurs sites et dirents cluster. Il lit le chier cluster-test dans le rpertoire courant pour avoir la liste des cluster et le nombre de nuds souhaits par cluster. Voici un exemple de ce chier :sagittaire ;1 griffon ;3 paradent ; 1 0 pastel ;5 violette ;3

Chaque ligne est un couple associant le nom d'un cluster ou d'un site un nombre de nuds. Il est possible de changer la valeur de la variable DURATION En rsultat, il lance la commande oargridstat. Celle-ci retourne un GRID_JOB_ID en cas de russite. Notez qu'il est possible de prciser des proprits ncessaires aux nuds souhaits. Il est ainsi possible de spcier que nous souhaitons uniquement des nuds supportant la virtualisation. La syntaxe de la commande oargridsub ressemblerait donc ceci :o a r g r i d s u b w \ ' 0 2 : 0 0 : 0 0 \ ' v i o l e t t e : r d e f =/nodes =3: prop=v i r t u a l ='amdv ' OR v i r t u a l =' i v t ' , p a s t e l : r d e f =/nodes =5: prop=v i r t u a l ='amdv ' OR v i r t u a l =' i v t ' , paradent : r d e f =/nodes =10: prop=v i r t u a l ='amdv ' OR v i r t u a l =' i v t ' , g r i f f o n : r d e f =/nodes =3: prop=v i r t u a l ='amdv ' OR v i r t u a l =' i v t ' , s a g i t t a i r e : r d e f =/nodes =1: prop=v i r t u a l ='amdv ' OR v i r t u a l =' i v t ' t deploy

Cependant, nous n'avons pas pu tester cette fonctionnalit.

4.5.2. kadeployON.sh : dploiement avec kadeploy3 sur les machines rservesCe script prend en unique paramtre le GRID_JOB_ID. Il tablit une liste des machines rserves dans le chier tmp_gridstat. Il dploie ensuite avec kadeploy3 un environnement pour le frontend OpenNebula sur une machine, et un environnement pour les noeuds sur toutes les autres. Toutes les commandes sont lances par SSH sur les sites auxquels appartiennent les nuds viss.

4.5.3. pingON.sh : vrication de la connexion rseau des machines dployesCe script ache une liste des nuds dploys et leur tat. Il est trs souvent ncessaire d'attendre plusieurs minutes pour que tous les nuds rcuprent une adresse IP par DHCP.

4.5.4. congureON.sh : conguration automatique du frontend OpenNebulaCe script se contente d'ajouter tous les nuds OpenNebula au cloud, en excutant sur le frontend une srie de commandes "textitonehost create node im_kvm vmm_kvm tm_ssh. Il est ncessaire de modier la valeur de la variable sshpubkey par le chemin de votre cl publique SSH. Lors de la premire connexion SSH au frontend en root, il sera ncessaire de taper le mot de passe : grid5000

43

4.5.5. creationvmON.rb : cration des chiers de base pour une VMCe script permet de crer une archive contenant l'image de la VM, le chier de description de la VM et le script init.sh.

Contextualisation et init.sh La dicult est la conguration rseau qui n'est pas xe sur tous les sites (rseaux

pour les machines virtuelles et passerelles) ce qui pose problme pour un dploiement sur plusieurs sites. Auparavant, nous utilisions les capacits de gestion de rseau intgres OpenNebula pour l'attribution automatique des IP (vnet), et nous dnissions la passerelle dans le script de contexte (init.sh). Mais chaque site possde sa propre conguration rseau spcique, et OpenNebula n'est pas assez souple pour grer le cas d'un Cloud distribu sur plusieurs sites htrognes. La solution que nous avons trouv est d'utiliser le DHCP de chaque site. Le DHCP attribue une IP automatiquement aux machines virtuelles, et donnent galement le reste de la conguration rseau comme la passerelle par dfaut. Pour cela nous avons modi le script init.sh pour spcier une adresse mac correspondant l'ID de la machine virtuelle et pour qu'il fasse une requte DHCP sur le rseau de production.

4.5.6. deployvmON.sh : dploiement des machines virtuellesCe script interactif copie l'archive gnre par le script creationvmON.rb sur le frontend et dploie les VM en excutant sur une srie de commandes onevm create cher.one.

44

5. ComparatifStockage Eucalyptus Trs bien : un contrleur principal walrus et des contrleurs de stockage sur chaque nud. OpenStack Bien : juste l'essentiel, espace de stockage partag. OpenNebula Neutre : par dfaut, copie des machines virtuelles par SSH, gestion d'un rpertoire partag via NFS et possibilit d'utiliser une solution complmentaire comme un systme de chiers distribu. Xen, KVM, VMware Avantages et inconvnients, automatis pour un rseau simple, manuel via contextualisation sur un rseau complexe. Cloud priv Neutre, prvu pour des utilisateurs de conance (besoin d'accs au frontend pour l'administration via libvirt ou les commandes one*) Manuelle, installation facile sur les distributions supportes (dont Debian et Ubuntu). Avance, deuxime version stable, solution supporte par Debian. Complte, documentations, rfrences de tous les chiers de conguration, exemples. Manque d'aide sur un environnement complexe. Sympathique, de nombreuses prsentations disponibles, et aide sur le canal IRC #opennebula@freenode. Excellente, OpenNebula est crit en Ruby de faon lgante, et facilement extensible via une architecture base de drivers. Excellente, au prix d'une conception trs pure en n'intgrant que le minimum. OpenNebula s'avre trs exible et donne beaucoup de possibilits l'utilisateur en lui laissant des possibilits de congurations trs proches de celles des hyperviseurs supports.

Hyperviseur Rseau

Xen, KVM Limit, non prvu pour un dploiement sur un rseau complexe. Cloud public et priv Bien, chaque contrleur est authenti par cl SSH et chiers de permission pour authentier toutes les transactions. Problmatique, dpend de l'environnement rseau et matriel, dicult en environnement htrogne. Aboutie, solution intgre Ubuntu Server, produit complet avec une interface de gestion web fonctionnelle.

Xen, KVM Sans opinion, nos tests ne nous ont pas permis d'mettre un avis. Cloud public et priv Trs bien, authentication utilisateur par cl, utilisation des Euca2ools. Facile, installation automatise et documente. Jeune, mais prometteur. Soutenu par de grands acteurs de dirents secteurs (informatique, aronautique, etc). Excellente, site bien fourni et facile d'accs avec la fois un wiki contenant l'essentiel et une documentation ocielle disponible et trs dtaille. Accueillante, la communaut ne cesse de grandir et est toujours prte rpondre aux questions. Sans opinion, OpenStack est crit en Python et est premire vue simple d'accs. Bonne, OpenStack se dcline en deux versions : une version oriente stockage et une version oriente applications, ce qui permet d'adapter le cloud ses besoins.

Orientation Scurit

Installation

Maturit

Documentation Correcte, complte mais pas toujours jour.

Communaut

Extensibilit

Flexibilit

Ferme et peu accueillante, quipe de chercheurs peu disponible pour rpondre aux problmes. Dicile, Eucalyptus s'appuie sur le SDK Java et le code est peu accessible. La solution est compatible avec les API Amazon EC2. Trs bonne, tant que l'on reste dans une architecture classique, sa grande modularit est un atout qui permet de facilement le dployer sur une architecture multi-sites et permet galement de l'tendre la demande.

45

Simplicit

Mitig, lorsque l'on reste dans un cadre d'utilisation classique, la solution est simple mettre en uvre, en revanche, sur une architecture complexe, le dploiement devient un casse-tte.

Bonne, en eet, grce la documentation et les scripts d'installation fortement comments, tout se passe bien en suivant le pas--pas du wiki.

Moyenne, les fonctions de base sont simples utiliser, le passage un environnement complexe l'est moins.

Eucalyptus est une solution mature et qui permet l'installation d'une infrastructure de type cloud assez facilement tant que l'on reste dans les clous de son fonctionnement. Cependant, le but du cloud computing est de faciliter l'volution ce qu'Eucalyptus ne permet pas. C'est donc pour cela qu'il est actuellement dlaiss pour d'autres solutions. OpenNebula est une autre solution de cloud, exible et mature. Sa conception est trs pure, et laisse une grande libert l'administrateur qui souhaiterait dployer cette solution au prix d'un eort d'intgration pouss au rseau et d'autres solutions complmentaires pour le stockage. Dans cette optique, OpenNebula est une solution adapte Grid 5000. OpenStack est une solution encore jeune, mais qui a un potentiel trs important par rapport son architecture et sa communaut ainsi que le support de ses partenaires. Il s'agit donc d'une solution surveiller car nous pensons qu'elle peut devenir la rfrence des solutions de cloud computing libre.

46

6. ConclusionL'objectif de ce projet tait de dployer et d'valuer les direntes solutions libre permettant de mettre en place un cloud priv sur la plateforme Grid 5000. Cet objectif est partiellement atteint. En eet, nous avons pu tester trois solutions de cloud : Eucalyptus, OpenNebula et OpenStack. Ce projet tant trs ambitieux, nous nous sommes vite heurts de nombreux problmes, que ce soit d aux solutions de cloud ou leur intgration sur le Grid 5000, notamment en ce qui concerne le rseau. Tous ces problmes nous ont montr la complexit d'utiliser une telle plate-forme, et leurs rsolutions nous a souvent retard mais nous ont appris investiguer. Ce projet nous a galement apport une exprience de travail en quipe sur un projet de longue dure, en le dcoupant en tches et en rpartissant le travail, ce qui nous a prpar au travail dans le monde professionnel et notre stage. Ce projet a t pour nous une chance de dcouvrir un environnement aussi complexe que Grid 5000, ce qui nous a permis d'acqurir de l'exprience en administration systmes et rseaux et d'approfondir nos connaissances dans le domaine de la virtualisation et du cloud computing.

47

7. BibliographieL'ensemble des dnitions ont t trouvs principalement sur le site Wikipdia : http://fr.wikipedia.org/ Les documentations ocielles des solutions testes : Eucalyptus : http://open.eucalyptus.com/ UEC : https://help.ubuntu.com/community/UEC OpenStack : http://www.openstack.org/ OpenNebula : http://opennebula.org/ Le livre "book eucalyptus beginners guide uec edition 1" rdig par Johnson D., Kiran Murari, Murthy Raju, Suseendran RB., Yogesh Girikumar, le 25 mai 2010 disponible au format pdf en tlchargement sur les sites de distributions d'ebooks comme celui-ci : http://ebookbrowse.com/search/eucalyptus-beginners-guide-uec-edition1 Les sites ociels suivants : Debian http://www.debian.org/ Ubuntu-fr http://ubuntu-fr.org/ Ubuntu http://www.ubuntu.com Le site de Grid 5000 en particulier pour ses nombreux tutoriels : https://www.grid5000.fr/ Le site personnel de Pierre Riteau, thsard a l'universit de Rennes qui a test le dploiement de Nimbus sur Grid 5000 http://perso.univ-rennes1.fr/pierre.riteau/ et les slides techniques