Académique Documents
Professionnel Documents
Culture Documents
Typographie
Les termes suivis dun asterisque (*) seront definis dans le glossaire.
License
Ce document est sous license Creative Commons
By-NC-SA 2.0 .
cloud . . . . . . . . . . . . . . . . . . . . . . . . . . .
Interet du
cloud . . . . . . . . . . . . . . . . . . . . . . .
Le logiciel libre . . . . . . . . . . . . . . . . . . . . . . . . .
Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 D
efinition des concepts
10
1.1
Cest quoi ? . . . . . . . . . . . . . . . . . . . . . . . .
10
1.2
Usages du
cloud . . . . . . . . . . . . . . . . . . . .
11
1.3
Les autres . . . . . . . . . . . . . . . . . . . . . . . . .
12
1.4
Caracteristiques . . . . . . . . . . . . . . . . . . . . . .
12
1.5
13
2 Offres commerciales
16
2.1
Historique . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.2
Offres . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3 Points n
egatifs du
cloud
20
3.1
Probl`emes ethiques . . . . . . . . . . . . . . . . . . . .
20
3.2
Inconvenients politiques . . . . . . . . . . . . . . . . .
21
3.3
21
3.4
Stress test . . . . . . . . . . . . . . . . . . . . . . . . .
23
4 Solutions libres
4.1
24
Cote client . . . . . . . . . . . . . . . . . . . . . . . . .
24
4.2
Services de base . . . . . . . . . . . . . . . . . . . . . .
24
4.3
Applications . . . . . . . . . . . . . . . . . . . . . . . .
24
4.4
Plateforme . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.5
Infrastructure . . . . . . . . . . . . . . . . . . . . . . .
25
5 Virtualisation
26
5.1
Concept . . . . . . . . . . . . . . . . . . . . . . . . . .
26
5.2
Solutions majeures . . . . . . . . . . . . . . . . . . . .
26
6 Etude
du framework Vertebra
27
6.1
Fonctionnement . . . . . . . . . . . . . . . . . . . . . .
27
6.2
Interface . . . . . . . . . . . . . . . . . . . . . . . . . .
28
6.3
Interets . . . . . . . . . . . . . . . . . . . . . . . . . .
28
7 Mise en place
29
7.1
Pre-requis . . . . . . . . . . . . . . . . . . . . . . . . .
29
7.2
Serveur frontal . . . . . . . . . . . . . . . . . . . . . .
29
7.3
Machines virtuelles . . . . . . . . . . . . . . . . . . . .
30
7.4
Compatible libre ? . . . . . . . . . . . . . . . . . . . . .
31
8 Communication
32
8.1
XMPP . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
8.2
Message passing . . . . . . . . . . . . . . . . . . . .
35
8.3
. . . . . . . . . . . .
37
8.4
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . .
41
9 Load Balancing
42
9.1
42
9.2
44
9.3
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . .
46
Conclusion
48
Glossaire
52
53
Bibliographie
54
Introduction
Le cloud computing , ou informatique dans les nuages, est un paradigme assez
recent. La premi`ere enonciation de ce concept date de 1960 (John McCarthy), mais
sa reelle mise en application a pris place au debut des annees 2000 et le web 2.0
(1999 pour Google et Yahoo). Le cloud consiste en une communication entre le
serveur frontal et un ensemble de machines virtuelles qui hebergent une ou plusieurs
applications. Ainsi, le visiteur a acc`es a` des applications dont lexecution ne depend
pas du serveur web, et qui ninfluent donc theoriquement pas sur son temps de
reponse.
La contre-partie est que le client na pas directement acc`es a` ses donnees. Il depend
donc totalement du fournisseur et doit lui faire enti`erement confiance pour ce qui
est de leur confidentialite et de leur sauvegarde.
Le probl`eme est donc de savoir :
quels sont les avantages reels du cloud du point de vue du fournisseur ;
quelles sont les solutions techniques disponibles et leur methode de tarifications ;
quelles sont les critiques (ethiques et legales) liees au cloud computing et
comment y remedier.
Le
cloud
Figure 1 Fonctionnement du
Inter
et du
cloud
cloud
Enfin, le cloud peut reposer enti`erement sur des technologies libres comme par
exemple :
Xen ou KVM pour les machines virtuelles ;
Syst`eme GNU/Linux pour les OS (Debian) ;
Serveur web libre (Apache) ;
Serveur dapplications libre (framework dependant du langage utilise) ;
Base de donnees MySQL ;
Firefox comme explorateur.
Le logiciel libre
Le but de ce document etant detudier la possibilite et linteret du cloud computing dans une societe developpant du logiciel libre, il faut dabord definir cette
notion.
Le mouvement du logiciel libre a debutte au debut des annees 80 a` linitiative de
Richard Stallman qui lance la Free Software Foundation. Selon Stallman, un logiciel
est dit libre sil permet les quatres libertes fondamentales :
0. La liberte dexecution quelquen soit le but.
1. La liberte detudier le fonctionnement du programme et de le modifier pour
quil se conforme a` ses besoins.
2. La liberte de redistribuer le programme dans un but dentraide.
3. La liberte dameliorer ou simplement de modifier le programme et de pouvoir redistribuer les versions modifiees au profit de la communaute.
Un logiciel offrant ces quatre libertes est dit libre, sinon, il est dit privateur. Selon la
license proposee par le projet GNU (le syst`eme dexploitation lance par Stallman et
qui utilise actuellement le noyau Linux), un logiciel sous license libre doit le rester,
cest `a dire que les versions modifiees et redistribuees doivent garder une license libre
(ce nest pas le cas de la license BSD).
Le terme de Free est ambigu car il signifie `a la fois libre et gratuit .
Sa reelle signification est libre , ce qui veut dire que lon peut faire commerce du
logiciel (vendre les binaires compiles dun programme par exemple), de meme que
fournir un service payant base sur lutilisation de logiciel libre.
Parmis les noms les plus connus du monde du libre, on peut citer le syst`eme GNU/Linux (et ses distributions reputees telles que Debian, Ubuntu ou Red Hat), lexplorateur Firefox (produit et developpe par la societe Mozilla et qui rattrape petit `a
petit Internet Explorer, son concurrent privateur developpe par Microsoft), le lecteur
multimedia VLC, ou le serveur web Apache (largement majoritaire sur le marche de
lhebergement).
Les interets de lutilisation de logiciels libres sont nombreux. Pour un particulier, ils fournissent lassurance, meme sil ne peut pas lui-meme le verifier, que les
developpeur ne cherchent pas a` introduire des fonctions malveillantes dans leur code.
Ils permettent aussi une evolution constante, que ce soit au niveau des performances,
de lergonomie ou de la securite, grace a` une communaute tr`es active. Pour des professionnels, un logiciel libre est une assurance de perennite car il ne depend pas
ou peu de letat financier dune societe. De plus, malgre la croyance populaire, un
logiciel libre ne presente pas plus de probl`emes de securite quun logiciel privateur.
En effet, la posibilite, y compris pour la societe qui utilise ce type de logiciel, de
pouvoir etudier le code source permet une meilleure reactivite face `a deventuelles
failles, de meme que la possibilite de le modifier et donc de corriger ces failles.
En ce qui concerne le cloud , la majorite (voir la totalite) des solutions sont
privatrices ou Open Source au mieux (le client ne dispose que de la liberte 0). Il est
donc interessant detudier si une proposition enti`erement libre est envisageable.
Objectifs
Plusieurs objectifs ont motive la creation de ce document :
Donner une explication claire du concept de cloud computing , de son
utilite et de ses inconvenients ;
fournir les donnees concernant les offres commerciales qui existent actuellement ;
definir les technologies et les logiciels a` utiliser pour une offre de cloud ,
faire des comparatifs pour regler certaines concurences entre eux ;
Expliquer la mise en place de ce service avec les outils choisis.
1
1.1
D
efinition des concepts
Cest quoi ?
10
Le
1.2
Usages du
cloud
que soit lordinateur quil utilise (plus besoin dinstaller des logiciels equivalents a`
ceux propose sur chacun de ses ordinateurs), sans soucis de versions car lapplication fonctionne de mani`ere identique sous GNU/Linux, Mac, Windows ou tout
autre syst`eme disposant dun explorateur internet (Freerunner, iPhone, Android,
Blackberry, PDA, ...).
1.3
Les autres
1.4
Caract
eristiques
Le but dun cloud est de creer un syst`eme totalement decentralise (par exemple
BitTorrent ou Skype), meme si la plupart se basent encore sur des grids ou des
utilities et sont donc encore centralis
es.
Les offres commerciales permettent de faire payer au client en fonction des ressources
utilisees (forfait bases sur lelectricite ou sur le materiel utilise)
12
Comme le client na pas de controle direct sur le materiel, il peut rapidement y avoir
une sur-utilisation des ressources disponibles, meme si une bonne bande passante
permet theoriquement le meme temps de reponse quun syst`eme centralise clasique.
La plupart des architectures utilisees pour le cloud computing sont des datacenters et des serveurs avec plusieurs niveau de virtualisation.
1.5
14
Figure 3 VM
15
2
2.1
Offres commerciales
Historique
16
2.2
Offres
17
AgathonGroup
Stockage, Ruby, PHP ;
50 $ par mois pour 0,25 CPU, 384 Mo de RAM, 15 Go de stockage ;
380 $ par mois pour 3 CPU, 4 608 Mo de RAM, 180 Go de stockage ;
980 $ par mois pour 8 CPUs, 12 288 Mo de RAM, 480 Go de stockage.
ElasticHosts
Stockage ;
Possibilite de developper (tous langages confondus) ;
De 0.04 par heure a` 29 par mois ;
comparatif.
Flexiscale
Stockage ;
Possibilite de developper (tous langages confondus) ;
96 pour 1 Go de RAM, 1 CPUs, 200 Go de stockage.
GoGrid
Stockage
1,52 $ par heure pour 6 CPUs, 8 Go de RAM, 480 Go de stockage
RackspaceCloud
Stockage
10,95 $ par mois pour 10 Go de stockage et 256 Mo de RAM ;
21,90 $ par mois pour 20 Go de stockage et 512 Mo de RAM ;
43,80 $ par mois pour 40 Go de stockage et 1 024 Mo de RAM ;
87,60 $ par mois pour 80 Go de stockage et 2 048 Mo de RAM ;
175,20 $ par mois pour 160 Go de stockage et 4 096 Mo de RAM ;
350,40 $ par mois pour 320 Go de stockage et 8 192 Mo de RAM ;
700,80 $ par mois pour 620 Go de stockage et 15 872 Mo de RAM.
NewServers
Stockage
Possibilite de developper en Java
0,11 $ par heure pour 1 CPU, 1 Go de RAM, 36 Go de stockage
0,17 $ par heure pour 2 CPUs, 2 Go de RAM, 146 Go de stockage
0,25 $ par heure pour 4 CPUs (1 x E5405), 4 Go de RAM, 250 Go de
stockage
0,38 $ par heure pour 8 CPUs (2 x E5405), 8 Go de RAM, 1 To de stockage
0,53 $ par heure pour 4 CPUs (1 x E5450), 4 Go de RAM, 600 Go de
stockage
18
Aptana
Stockage ;
Possibilite de developper en Rails et PHP ;
35 $ par mois pour 256 Mo de RAM et 5 Go de stockage ;
72 $ par mois pour 512 Mo de RAM et 10 Go de stockage ;
137 $ par mois pour 1024 Mo de RAM et 15 Go de stockage ;
267 $ par mois pour 2048 Mo de RAM et 25 Go de stockage.
Heroku
Stockage
Possibilite de developper en Ruby
15 $ par mois pour 50 Mo de stockage.
50 $ par mois pour 500 Mo de stockage.
200 $ par mois pour 1 CPU et 500 Go de stockage.
400 $ par mois pour 5 CPUs et 1 To de stockage.
1600 $ par mois pour 20 CPUs et 2 To de stockage.
19
3
3.1
Points n
egatifs du
cloud
Probl`
emes
ethiques
La principale critique du cloud computing est que le client ne poss`ede pas physiquement le stockage de ses donnees et laisse donc le controle total au fournisseur.
Le London Times a par exemple compare cette technique aux syst`emes centralises des annees 50-60 (connexion depuis un dumb-terminal a` un superordinateur ). En effet, le client ne peut pas installer de nouveaux logiciels et a
besoin de lautorisation du fournisseur pour la plupart des taches dadministration.
De plus, en cas de probl`emes techniques de la part du fournisseur, le client na plus
aucun moyen dacceder a` ses donnees.
Sur le meme ton, Richard Stallman condamne cette technologie par laquelle lutilisateur confie aveuglement ses donnees privees `a un fournisseur qui peut alors le
pieger en le forcant `a utiliser des logiciels privateurs et en augmentant ses forfaits.
Just like non-free software, software as a service is incompatible with
your freedom.
(Comme les logiciels privateurs, les logiciels comme services ne sont
pas compatibles avec votre liberte)
Richard M. Stallman
En effet, il est impossible, pour les utilisateurs et dans la plupart des cas pour le
client lui-meme, de pouvoir verifier lattitude reelle des machines virtuelles qui accueillent les applications car ils ny ont pas acc`es. Le probl`eme des logiciels privateurs
quenonce Stallman est que lutilisateur, par lusage de ces logiciels, doit avoir une
confiance aveugle envers le developpeur. Dans le cas du cloud computing , il doit
accorder la meme confiance non seulement au developpeur mais aussi `a lhebergeur,
ce qui rend le cloud encore plus dangeureux que le logiciel proprietaire.
20
3.2
Inconv
enients politiques
Aux Etats-Unis,
les syst`emes de cloud se confrontent par exemple au Patriot Act,
qui interdit aux societe les proposant de stocker certaines donnees sur des serveurs
hors du territoire americain, de meme quil leur faut bloquer par defaut certaines
requetes (par exemple en ce concerne le syst`eme bancaire ou celui de sante).
On peut supposer que des societes comme Google ou Microsoft arriveront facilement
a` saccomoder de ces legislations, mais la plupart des hebergeurs se retrouvent dans
des positions difficiles (comme par exemple lorganisation bancaire internationnale
SWIFT, qui veut mettre en place un datacenter en Suisse mais ne peut y faire traiter
que les donnees bancaires europeenne).
De plus, des reglementations comme le Stored Communications Act (encore aux
Etats
Unis), permettent aux gouvernements davoir un acc`es direct aux messages de
leur concitoyens et sont donc rebutes par des hebergements dans dautres pays.
3.3
Comme vu plus haut, les facturations des service de cloud sont aleatoires et assez
floues. En effet, et cela concerne surtout les societe proposant du cloud Open
Source, le nombre de clients et dutilisateurs est difficile (voire impossible) `a obtenir,
les tarifs sont fixes sur des bases peu fiables et ne permettent pas pour un client
devaluer clairement le prix reel quil aura `a payer.
Le probl`eme est que deux types de facturations sont disponibles, la facturation par
nombre dutilisateurs et la facturation par ressources utlisees.
21
Les tarifs qui prec`edent sont des evaluations rapides de ce que devra payer la societe,
mais ils ne prennent pas en comptes de nombreux param`etres difficiles a` evaluer
(nombre de connections total pour envoyer les donnees, nombre dappel `a la base de
donnees, utilisation des CPUs, etc).
On peut cependant voir la complexite pour une entreprise devaluer ses factures sur
un moyen ou long terme ainsi que de definir lhebergeur qui lui sera le plus rentable
en fonction de ses besoins.
3.4
Stress test
Une recente etude a` montre que les plus grands syst`emes de cloud (ceux dAmazon, de Microsoft et de Google) presentent des variations du temps de reponse dun
facteur 20, suivant lheure dacc`es. Cette meme etude met en evidence de graves
probl`emes lies a` ces variations. Par exemple, le syst`eme de Google ne permet pas
doperations depassant 30 secondes. De plus, les syst`emes de monitoring(*) ne permettent pas detudier precisemment les origines de ces ralentissements.
Ainsi, la promesse des hebergeurs de fournir un acc`es au moins aussi rapide a` un
cloud qu`
a un syst`eme autre peut rapidement se reveler fausse en cas de grande
utilisation.
En effet, le stress test a revele des taux derreurs montant jusqu`a 12%, comme on
peut le voir sur leurs resultats :
http ://backoffice.ajb.com.au//images/news/amazonunswerrors.gif.
http ://backoffice.ajb.com.au//images/news/googleunswerrors.gif.
23
Solutions libres
La plupart des hebergeurs proposent des solutions basees sur des logiciels Open
Source. Cependant, il est regrettable de constater un manque evident de transparence au niveau des forfaits proposes. Dans loptique de fournir un service base sur
des logiciels libres, il faut maintenant sinteresser aux differents outils disponibles
pour chacun des composants du cloud . Evidemment, lensemble du code produit
doit etre publie sous license libre (GPL v.3, License BSD), et ne sappuyer que sur
des protocoles et des biblioth`eques libres.
4.1
C
ot
e client
On ne peut evidemment pas forcer un client `a utiliser un logiciel libre pour acceder
au service fourni, mais des solutions libres peuvent lui etre proposees. Pour pouvoir
acceder aux applications hebergees, il suffit dun explorateur internet (Firefox, Konqueror, Epiphany, ...). Pour ce qui est de la mise en place de ses applications, un
simple envoi des sources ou des binaires peut seffectuer par FTP et une interface de
test et de mise en production peut etre envisageable (ecriture ou envoi des sources,
compilation, test sur une adresse privee).
4.2
Services de base
Un ensemble de services de base est souvent fourni avec lhebergement dun cloud .
Parmis les plus courants, on trouve une messagerie (par exemple basee sur Postfix,
Procmail, Fetchmail, SpamBayes, Courier-imap, Mutt et SquirrelMail), un syst`eme
didentite (OpenID), de paiement (Paypal, mais non-libre...), une messagerie instantannee (XMPP) et de recherche.
4.3
Applications
Lutilisateur peut acceder aux services du cloud par des applications autres que
lexplorateur. De meme que pour lexplorateur, des solutions libres peuvent lui etre
proposees. Pour les applications de bases, on peut citer :
Messagerie : Thunderbird, Kmail, ...
Identite : OpenID Enabled
Chat : Pidgin, Gajim, Kopete, ...
Le reste depend des applications proposees par le client (client FTP pour du transfert, lecteur audio/video, ...).
24
4.4
Plateforme
La plateforme (chaque nud de la grid ) est compose dun syst`eme virtuel (Debian), avec des serveurs dependant des langages utilises (OpenJDK pour du code
Java, Django pour du Python, Mongrel ou Thin pour du Ruby). Elle peut etre accompagnee de biblioth`eques necessaires au fonctionnement de lapplication hebergee.
4.5
Infrastructure
25
Virtualisation
5.1
Concept
La virtualisation permet demuler a` partir dun syst`eme reel sur une machine physique un ou plusieurs autres syst`emes. On peut ainsi disposer de plusieurs syst`emes
apparemment separes, disposant chacun de leurs services. Plusieurs utilisations sont
possibles (posseder plusieurs versions dun meme logiciel, eliminer les conflits entre
logiciels, pouvoir jouer `a des jeux Windows sous GNU/Linux, ...), mais le principal interet est de ne pas avoir, pour un hebergeur, a` maintenir plusieurs serveurs
sous-exploites mais de rassembler plusieurs services sur une meme machine physique.
5.2
Solutions majeures
Parmis les solutions majeures (et libres), on peut citer nottemment Xen et KVM,
avec chacun leurs avantages.
KVM
Le projet KVM est un projet integre au noyau Linux et base sur QEMU.
Son avantage majeur par rapport `a Xen est que le syst`eme utilise comme
hyperviseur est en fait un syst`eme GNU/Linux, et donc lequipe developpant
KVM na pas a` se soucier de cette partie. Il est facile dutilisation, stable,
et de plus en plus utilise (soutenu par Red-Hat), y compris pour ce qui est
de lhebergement (Lost Oasis en France, Blue Room Hosting en Angleterre,
Etude
du framework Vertebra
Ecrit
pour pouvoir fonctionner sur sa propre architecture comme sur des
syst`emes dej`a existant (Amazon EC2 ou le VCloud de VMware).
Tolerance aux pannes
Larret non-prevu dun ou plusieurs des composants principaux ne fait pas
sarreter lensemble du syst`eme, ils sont relances et les autres composants
en dependant attendent simplement leur disponibilite.
6.1
Fonctionnement
Un syst`eme de cloud base sur Vertebra peut contenir les composants suivants,
en sachant que seuls les trois premiers sont indispensables.
Server XMPP
Pour la communication entre les differents serveurs.
Agent Herault
Assure la securite et le syst`eme dannonces.
Agent utilisateur
Vide par defaut, accueille les applications du client.
Agent entrepot
Permet de stocker les informations sur lensemble des utilisateurs (noms,
profils, mots de passe, ...).
Agent cavalcade
Controle lautomatisation des processus.
Agent sawmill
Permet un syst`eme de login distribue.
27
6.2
Interface
Afin de pouvoir administer son cloud , Vertebra est accompagne dun shell propre
permettant une administration rapide et eventuellement automatisable. De plus,
grace a` cet outil, le client peut facilement developper ou faire developper une application graphique (utilisant le shell) pour administrer ses services en faisant des
appels aux fonctions de ce shell. Il est meme enviseageable pour un hebergeur de
fournir une interface web au client donnant acc`es a` lensemble des fonctionnalitees
proposees.
Enfin, on peut facilement et de mani`ere invisible, donner lacc`es `a une personne `a une
application du cloud , que ce soit une application classique ou eventuellement lapplication dadministration, ce qui permet `a un client de regrouper plusieurs syst`emes
de ces syst`emes heberges sur differents comptes.
6.3
Int
er
ets
Vertebra est sous license LGPL et est donc un candidat parmi les logiciels exploitables dans le but de fournir un service de cloud base sur des logiciels libres. Il
fournit de base un serveur XMPP sur lequel le service voulu pourrait facilement se
deployer, et une grande partie de son code est en Erlang, langage prevu pour tout
ce qui est communication reseau et avec lequel on desire travailler.
Il sav`ere donc que Vertebra est un framework quil faut utiliser, ou au moins sinspirer de ses fonctionnalitees, pour le service de cloud envisage.
Il permet, grace entre autre `a son mode dadministration, de fournir au client un service a` la fois complet et permettant un respect de ses libertes ainsi que la possibilite
de reunir son cloud avec celui dun autre hebergeur.
28
7
7.1
Mise en place
Pr
e-requis
Etant
donne quun syst`eme de stockage en cloud ne presente pas de difficulte
technique particuli`ere (syst`eme de fichiers partages avec eventuellement une base de
donnees permettant un acc`es plus rapide), nous allons nous concentrer sur la gestion
dun service de cloud avec developpement dapplications.
On veut aussi nutiliser que des logiciels libres et que le code developpe soit sous
license libre. On cherchera aussi a` fournir au client la possibilite de developper ses
applications dans le langage de son choix.
Pour la gestion des serveurs dapplications, ils seront enregistres dans une base
de donnees SQL, avec deux identifiants, un concernant lapplication hebergee (pas
dunicite) et un identifiant unique (incrementation automatique) pour faciliter la
communication. Tout ce qui concerne la communication entre le serveur frontal et
les machines virtuelles sera traite dans le chapitre suivant.
7.2
Serveur frontal
On utilise pour le serveur frontal une Debian avec un serveur web Apache et une
base de donnees SQL (linstallation du syst`eme et la mise en place dApache et
de MySQL ne seront pas detaillees ici). Le but est de fournir un syt`eme qui, lors
dune demande specifique au cloud (lien vers une application, affichage dune
application sur une partie de la page), lance le serveur hebergeant lapplication sil
est eteint ou surcharge, ou communique avec lui sinon.
Dans ce but, il faut ecrire une fonction de lancement qui prend en argument un
identifiant de lapplication (nom ou id) et qui effectue les actions suivantes :
Verifier les droits de lutilisateur effectuant la demande ;
Verifier si une machine virtuelle correspondant a` cette application `a dej`a ete
lancee (requete `a la base de donnees) ;
Si aucune nest presente, en lancer une et linscrire dans la base de donnees ;
Si une ou plusieurs machines sont dej`a lancees, verifier leur capacite daccueil
par le syst`eme de communication (decrit plus loin) :
Si une des machines peut accepter une connexion, commencer la communication avec cette machine ;
Sinon, lancer une nouvelle machine virtuelle, lenregistrer dans la base de
donnees et commencer la communication.
29
Note : La principale difference entre le cloud computing et le reste des solutions techniques dej`a existantes consiste en son syst`eme de communication entre les
machines ou entre les processus, lui permettant de fournir un reseau de machines dynamique (en fonction du nombre dutilisateurs ou de la quantite de donnees stockees
ou utilisees). Un chapitre est donc dedie aux solutions possibles pour gerer ces communications.
Une fois la connexion etablie, le serveur frontal peut envoyer les requetes de lutilisateur a` la machine virtuelle et soit recevoir les informations demandees (par XMPP)
et les afficher, soit afficher directement le serveur dapplications fourni par cette
machine.
De plus, il faut fournir au client un moyen de tests et de mise en production de
ses applications. On peut limiter ce syst`eme `a un utilitaire en ligne de commande
de type SVN ou Git, ou un syst`eme interactif accessible par un explorateur (avec
un syst`eme denvoi des sources ou des binaires), de lancement sur un serveur prive
de tests, puis de mise en production. Il faut aussi integrer un moyen pour le client
de donner des droits sur ses applications pour pouvoir limiter lacc`es de certaines
applications aux seules personnes concernees.
7.3
Machines virtuelles
Les machines virtuelles accueillant les applications du client sont hebergees sur un
ensemble de serveurs permettant la virtualisation. On utilise Xen comme syst`eme
de virtualisation (encore une fois, se referer au Livre blanc sur la virtualisation).
Xen est base sur des fichiers de configurations propres a` chaque machine virtuelle.
Le fichier est sous la forme suivant :
name = nom du syst`
eme
vcpus = nombre de CPU virtuels
memory = nombre de Mo de RAM que vous voulez allouer
kernel = chemin vers le kernel voulu
ramdisk = chemin vers la RAM
vif = r
eseau (adresse MAC, IP, bridge)
disk = disques a
` utiliser (chemin, droits, etc...)
root = partition a
` utiliser pour /
30
Chaque machine virtuelle accueille un ensemble de logiciels lies au(x) langage(s) dans
le(s)quel(s) est ecrite lapplication. Voici les solutions libres pour quelques langages :
Ruby on Rails
machine virtuelle executant le code : YARV, sous license libre Ruby ;
serveur dapplications : Thin, base sur Mongrel, sous license libre Ruby.
Java
machine virtuelle : JVM, sous license libre a` partir de la version 7 ;
serveur dapplications : JBoss application server, sous license GLPL.
Erlang
serveur web : Yaws ;
interpreteur erlang.
Python
framework django.
7.4
Compatible libre ?
31
Communication
8.1
XMPP
Presentation
XMPP (Extensible Messaging and Presence Protocol) est un protocole dechange
de documents XML. Dans le but de ne pas dependre dun fournisseur, un serveur
XMPP peut etre mis en place a` linterieur dune societe ou chez un particulier. Il
existe des moyens puissants de securiser ce protocole (ce qui est important, que ce
soit pour une communication humain/humain ou serveur/serveur), tels que SASL(*)
et TLS(*).
32
Utilisation
Un serveur Jabber doit etre utilise pour permettre une communication basee sur
le protocole XMPP. Il serait envisageable dutiliser un des nombreux fournisseurs
(gratuits) de comptes jabber. Cependant, afin dassurer une plus grande securite et
surtout une plus grande reactivite, il est preferable dinstaller son propre serveur
Jabber.
Comme le but est dimplementer une partie du code en Erlang, le choix le plus
judicieux est dutiliser ejabberd, un serveur Jabber libre, ecrit exclusivement en
Erlang.
33
34
Cette liste nest evidemment pas exhaustive. La deuxi`eme serie de requetes concerne
des communications entre machines virtuelles accueillant une meme application distribuee ou un ensemble dapplications connectees. Les commandes seraient alors les
memes avec, en plus, des commandes specifiques `a ces applications et pouvant alors
utiliser toutes les possiblites du XML, et en particulier la facilite a` passer des objets.
8.2
Message passing
Presentation
Le langage Erlang est muni de base dun syst`eme de message passing intuitif.
Le message passing est un moyen denvoyer des messages, informations, ordres,
donnees, dun processus `a un autre. Il est intuitif car son ecriture est simplifiee :
Pid ! Data
Les donnees envoyees sont souvent des tuples(*) dont le premier est le Pid(*) de la
fonction qui envoie le message, ce qui permet `a la fonction receptrice denvoyer un
accuse de reception, ou simplement de continuer la communication avec lemetteur.
Pour obtenir son Pid, une fonction fait simplement appel `a la fonction :
self()
Le nombre delements dans le tuple est libre, ce qui permet de pouvoir facilement
envoyer des objets. On peut envoyer (exemple extremement simplifie pour expliquer
le concept) :
StockObjs ! {self(), cl1, a, 1, b, test}
Le serveur recevant ce message pourra alors instancier un objet de classe cl1 ,
initialise aux valeurs 1 et test pour les attributs a et b . En passant
ainsi lensemble des valeurs des attributs dun objet, on peut le sauvegarder sur un
serveur de stockage.
De meme, pour passer une commande a` effectuer, on peut tout `a fait envisager le
meme syst`eme de communication, ce qui fait du message passing une reelle
alternative au protocole XMPP et `a son transfert de XML (Cf. figure 4).
Utilisation
Les exemples precedents ne fonctionnent que dans le cas dune communication interne a` une machine. Pour pouvoir envoyer des messages entre deux processus lances
sur deux machines distinctes, certaines manipulations supplementaires sont a` effectuer.
35
- name name_n
donne le nom name n@hostname a` linterpreteur lance sur la machine
hostname .
- setcookie cookie_name
assigne le cookie(*) cookie name a` linterpreteur. Les cookies doivent
etre identiques sur tous les nuds qui veulent pouvoir communiquer.
- pa / path / to / binary
permet dutiliser les fonctions compilees et dont les fichier .beam sont places
dans /path/to/binary.
Une fois cela fait, les processus enregistres peuvent communiquer entre eux. Pour
enregistrer un processus, on utilise la fonction suivante :
global:register name(name, PidDeLaFonction).
Une fois cela fait, pour entammer la communication entre le nud emetteur et le
nud accueillant la fonction enregistree, on lance :
net adm:ping(node@hostname).
Enfin, pour envoyer une message a` cette fonction, on utilise :
{name, node@hostname} ! Message.
La variable Message peut etre nimporte quel type de variable, en particulier des
tuples contenant autant de variables que necessaire, tout comme le XML et ses
methodes pour envoyer des objets.
36
8.3
Implementation
Les deux methodes de communications envisagees sont simples a` implementer.
Le Message Passing etant une fonctionnalite native de Erlang, il est dautant plus
simple a` implementer (une ligne pour enregistrer la fonction, une ligne pour effectuer
un ping , une ligne pour envoyer le message).
Pour ce qui est de lutilisation du protocole XMPP, la biblioth`eque exmpp pour
Erlang a ete retenue. Elle est efficace, et facile a` prendre en main, meme si la seule
documentation fournie (projet recent) est celle issue de la compilation (le code est
cependant tr`es bien commente).
Le seul reel probl`eme dimplementation concerne le protocole XMPP et lutilisation
dexmpp. En effet, Erlang, et le concept de langage fonctionnel pur de mani`ere
generale, nest pas forcement le mieux adapte au format XML car on ne peut pas
modifier les variables sauf a` linstanciation. Ainsi, sur certaine fonctions denvois de
messages, on peut se retrouver avec 6 ou 7 variables, chacune etant une modification
mineure de la precedente. Si cela ne semble pas poser de probl`eme dun point de vue
de la memoire ou du temps dexecution, cette approche nest pas evidente pour un
developpeur habitue `a la programmation iterative. Cependant, ceci est un probl`eme
mineur qui est rapidement resolu (lecture du code de exmpp, ecriture de fonctions
basiques de retouche de messages recus, ...)
37
Maquettes fonctionnelles
Apr`es ce test basique, deux maquettes fonctionnelles, minimalistes, ont ete realisees.
Les deux etaient hebergees sur les memes machines virtuelles, utilisaient yaws comme
serveur web, affichaient les memes pages. La premi`ere utilisait le syst`eme de Message
Passing et la deuxi`eme le protocole XMPP (deux schemas expliquent le fonctionnement ci-dessous).
Les deux maquettes utilisaient chacune deux machines virtuelles, lune jouant le
role du serveur frontal, lautre celle dun serveur dapplication. Lapplication quil
hebergeait etait un simple hello world (puis un afficheur dheure).
Concernant la reactivite, les deux etaient, dun point de vue de lutilisateur, similaires. Elles permettaient un affichage aussi rapide que pour un simple site heberge
sur un serveur unique. Dun point de vue du developpeur, il a fallu mettre un delai
superieur avant la redirection (temps dattente ecrit en dur pour que le message
arrive et que le serveur web se lance sur le serveur dapplication) dans le cas de la
maquette XMPP. Cependant, ce delai supplementaire est negligeable (de lordre de
la centaine de milliseconde).
Pour ce qui est des possibilites et de la clarete dans le schema de communication,
cest l`a que XMPP devoile ses possibilites. En effet, il est beaucoup plus clair davoir
un client jabber par machine presente dans le cloud , avec en plus des clients
particuliers pour certaines taches (monitoring, envoi de message ne demandant pas
de reponse, ...), plutot que des fonctions enregistrees dans un interpreteur identifie
par un cookie.
Malgre ce que lon peut voir sur le schema, le bot XMPP qui repartit lensemble des
requetes nest pas forcement lance sur le serveur frontal. De meme, le serveur ejabberd et le bot de monitoring etait heberges sur le serveur frontal dans la maquette
realisee, mais ceci nest pas necessaire (on peut, par exemple, dedier une machine
compl`ete pour le controle du cloud ).
38
39
40
8.4
Conclusion
Les deux moyens de communications envisages sont tous les deux performants et globalement faciles a` implementer. Lutilisation du protocole XMPP ralentit leg`erement
la reception, et donc le traitement, des messages. Le Message Passing quand `a lui
est dune facilite dimplementation et dune efficacite sans pareil.
Cependant, lutilisation du protocole XMPP permet non seulement de clarifier le
reseau, de centraliser la gestion des requetes et denvisager lutilisation de capacites
deja developpees (syst`eme de publish/subscribe, syst`eme de presence, ...) ou de
profiter de laspect extensible du protocole pour developper des extensions dediees
au cloud (module de publication de letat dune machine virtuelle, ...).
Au final, malgre une certaine lenteur par rapport au Message Passing, cest lutilisation du protocole XMPP qui semble la plus appropriee. En effet, ce protocole (qui
est un standard ouvert), est assez reactif pour que ne pas ralentir le cloud de
mani`ere abusive. De plus, cest lui qui permet la plus grande extensibilite. Enfin,
le schema de deploiement des bots XMPP correspond au schema dorganisation du
cloud , ce qui permet de clarifier le code dune part, et d
eviter une duplication
de code (seul un bot recoit les requetes, les traite, et envoie des demandes specifiques
aux bots des serveurs dapplications).
41
Load Balancing
9.1
42
Serveurs frontaux
Pour definir le besoin dajout ou de suppression de serveurs frontaux, on doit etudier
le temps de reponse du serveur web a` une demande classique. Le serveur frontal
nhebergeant aucune application, il suffit donc detudier son temps de reponse sur
une simple requete (un ping par exemple). Si le temps de reponse est anormalement long, le syst`eme de monitoring fait une requete pour lancer un serveur frontal
supplementaire (la gestion de multiples serveurs pour un service unique sera traite
dans la partie suivante). Si le temps est normal ou acceptable, rien nest effectue.
Enfin, si le temps est anormalement court, le syst`eme de monitoring peut demander
la suppression dun ou plusieurs serveurs frontaux. Tout le probl`eme est de definir
anormalement long
et anormalement court . Ces limites sont globalement
arbitraires et dependent des capacites de lhebergeur et des demandes du client.
Serveurs SQL
Concernant lajout ou la supression de serveur SQL, il faut etudier le temps de
reponse de la base de donnees, en effectuant, par exemple, une ou plusieurs requetes
` partir des resultats,
pre-definies et en etudiant le temps de reponse de la base. A
et en appliquant le meme principe que pour les serveurs frontaux en comparant le
temps de reponse de ces requetes a` des valeurs arbitraires fixees.
Differentes repartitions sont envisageables :
plusieurs serveurs gerant chacun une partie des donnees dune application ;
plusieurs serveurs sur la meme base de donnees avec un syst`eme complexe de
mise-`a-jour lors des ecritures et/ou une separation des serveurs permettant
la lecture et ceux permettant lecriture.
43
Serveurs dapplication
Enfin, pour les serveurs dapplications, le calcul peut etre plus complique. On doit
non-seulement evaluer le temps de reponse du serveur web qui effectue laffichage
comme sur les serveurs frontaux, mais aussi differentes valeurs qui, dans le cas de
lhebergement dune application, deviennent significatives (utilisation du CPU, occupation de la memoire, charge, ...). On peut aussi ponderer ces valeurs pour fournir
une evaluation simple (par exemple un score compris entre 0 et 100) dans le but
de clarifier les cas de lancement ou darret des serveurs. De meme que les valeurs
arbitraires des deux premiers cas, la ponderation est arbitraire et depend des besoins
du client, des capacites du fournisseur mais aussi de lapplication elle meme.
9.2
Load balancing
Une fois le nombre de machines virtuelles adequat atteint, il faut repartir les demandes entre ces machines. Cest le principe de load balancing a` proprement
parler.
De nombreux outils existent pour repartir la charge entre plusieurs serveurs, de
meme que plusieurs algorithmes de repartition.
44
Round-robin
Le Round-Robin est un algorithme dordonnancement mais dont le principe a ete
adapte a` la repartition de charge. Le Round-Robin de base fournit une repartition
equitable entre plusieurs serveurs, ce qui veut dire que les serveurs doivent tous etre
identiques pour une efficacite optimale. Cependant, le Round-Robin pondere nest
pas beaucoup plus complique `a implementer et present dans la plupart des logiciels
de repartition de charge.
HAProxy
HAProxy est un logiciel libre (HAPROXYs license) de repartition de charge et de
gestion de proxy adapte a` des sites recevant de nombreuses connexions (et donc
adapte a` un service de type cloud , Cf. figure 6). Il est configure dans un fichier
de configuration unique, haproxy.cfg , et se lance facilement avec la commande :
# haproxy -D -f / etc / haproxy . cfg
45
Dans le cas dun service de cloud , les IP disponibles pour un service sont dynamique, et demandent donc une modification de ce fichier. Cependant, on peut
reconfigurer dynamiquement HAProxy avec :
# haproxy -f / etc / haproxy . cfg - sf PidDeHaproxy
9.3
Conclusion
Le syst`eme de load balancing en lui meme est simple a` mettre en place car des logiciels existent dej`a pour le gerer. HAProxy semble etre la solution ideale : simple
a` configurer, `a re-configurer, capable de gerer la repartition a` plusieurs niveaux,
presentant une tr`es bonne securite (pas une faille de securite en sept ans), et,
evidemment, libre.
Le reel probl`eme dans le cas du cloud computing est la dynamicite du reseau et
la mani`ere de la gerer. Il faut en effet etre capable dadapter le reseau aux demandes
des utilisateurs, cest-`a-dire ajouter des serveurs supplementaires necessaires a` de
nombreuses requetes ou en supprimer si la demande est faible. Le moyen le plus
simple est de gerer manuellement les capacites du reseau, et donc de faire lancer ou
arreter les serveurs par un humain. Cependant, cette approche est co
uteuse tant dun
point de vue temps que dun point de vue moyens, il est donc preferable de mettre
en place un service automatise de gestion du reseau qui verifie de mani`ere reguli`ere
les capacites de reponse du cloud et qui lajuste aux besoin des utilisateurs.
Une telle gestion du reseau presentera des incoherence et demandera des adaptations dans les premiers temps de la mise en production dun cloud . La presence
humaine reste donc une obligation, mais seulement le temps dajuster ce syst`eme
aux besoins propres `a un service de cloud .
46
Figure 6 HAProxy
47
Conclusion
Le cloud computing est une mode recente o`
u de plus en plus de clients ont
tendance a` sengouffrer, et donc de nombreux hebergeurs ont mis en place des propositions de solutions de cloud . Pourtant, ces propositions presentent toutes (ou
quasiment toutes) des aspects inadmissibles du point de vue de lethique du libre
(forfaits, syst`emes proposes sans aucun moyen de controle), ou simplement trop
flous.
Pourtant, un cloud peut presenter des interets evidents pour une entreprise.
Grace `a un tel syst`eme, elle peut proposer un ensemble dapplications `a ses employes
sans avoir `a se soucier de sa maintenance ou son administration, tout en ayant lassurance dun syst`eme moins consommateur (la quantite des ressources doit sadapter
a` lutilisation du cloud ) et donc plus econome (labonnement doit etre fonction
des capacites mises en place). Certaines peuvent meme utiliser le cloud pour
commercialiser un service par le biais dapplications web. Lutilisation du libre (et
surtout un total respect de son ethique) permettrait dassurer un double objectif :
Apporter une vision du cloud computing nouvelle par sa transparence,
ce qui ameliorerait limage dune telle technologie dans lesprit de la communaute libriste et qui forcerait peut-etre une evolution des offres dej`a existante.
Fournir aux clients une reelle garantie sur la facon de traiter leurs donnees,
leur assurer un reel controle sur elles, et donc pouvoir enfin profiter des
possibilites techniques quapporte le cloud computing sans devoir faire
preuve dune confiance aveugle en lhebergeur.
48
Particularit
es
La difference principale entre un syst`eme de cloud et un hebergement classique est la gestion du reseau complexe qui le compose, gestion principalement
fondee sur deux points :
La communication entre les serveurs : pour assurer le lancement, larret,
la communication de donnees entre les machines, il faut mettre en place
un syst`eme de communication complet (pour permettre, par exemple, du
passage dobjet) et automatisable (et donc definir une grammaire des ordres
que les serveurs peuvent senvoyer).
Le syst`eme de Load balancing : qui permet de gerer letat du cloud en
fonction des demandes des utilisateurs, soit automatiser le lancement, larret
ou la modification de capacite des serveurs en fonction de leur temps de
reponse. Cest en ce sens quun cloud se distingue dun syst`eme de
grid computing .
49
Vision libriste
Malgre tous les points negatifs non-refutables formules `a legard du cloud computing , le fait de sopposer aux hebergeurs fournissant un service, comme le soul`eve
Stallman, qui va `a lencontre des libertes du client et de lutilisateur nest pas
negligeable. Le pire etant que certains de ces fournisseurs privateurs le font
en basant leur publicites sur lutilisation de logiciels Open Source, prouvant une fois
de plus la difference fondamentale entre ces deux mouvements.
De plus, apr`es de nombreuses recherches et reflexions sur le concept, des moyens
divers peuvent etre mis en place pour liberer le cloud . En effet, il est tout
a` fait envisageable de fournir :
Une architecture totalement libre (syst`eme dexploitation, logiciels et code
mis en place par lhebergeur).
Un monitoring complet et permanent des serveurs qui constituent le cloud .
Un moyen simple dacceder a` ces serveurs pour effectuer un monitoring local.
Lensemble des images qui sont utilisees comme images syst`eme (dans le
cadre de la virtualisation).
Le principal point a` developper et a` mettre en avant est laccessibilite et le controle
par le client (et a` un certain niveau par lutilisateur) sur ses donnees, ainsi quun
moyen pour lui de les securiser vis-`a-vis de lhebergeur, et quil nait `a aucun moment
de doute sur leur utilisation ou leur visibilite.
50
Inconv
enients
En plus du cote buzz mediatique du cloud , cette technologie presente des
inconvenients dont il faut etre conscient en tant quhebergeur :
Dun point de vue ethique du libre, le cloud reste deviant dun des objectifs du monde du libre, permettre aux utilisateurs de se reapproprier loutil
informatique (mais nest pas, alors, pire quun hebergement classique ).
Ces inconvenients (au moins pour les deux derniers points) sont des contraintes pour
lesquelles les solutions nexistent pas encore (ou du moins ne sont pas majoritaires),
et sont donc les points cles pour une nouvelle offre de cloud .
Bilan
Au final, plusieurs points amm`ene a` vouloir proposer une offre de
cloud :
51
Glossaire
AFS
Andrew File System : syst`eme darchivage distribue.
Bot
Programme informatique effectuant des taches automatisees (reponses automatiques
et/ou traitement de messages par exemple).
Cookie
Fichier stocke par le navigateur sur le disque de linternaute, permettant denregistrer des informations et de les communiquer au site visite.
Daemon
Processus sexecutant en arri`ere plan de mani`ere permanente.
Framework
Ensemble de biblioth`eque permettant le developpement dapplications.
Mod`ele OSI
Mod`ele de communication entre ordinateurs propose par lISO.
Monitoring
Surveillance et mesure dun ensemble de processus.
Objet
Definition de caracteristiques propres a` un element informatique.
Pid
Process Identifier : Code unique attribue a` un processus.
SASL
Simple Authentication and Security Layer : cadre dauthentification.
SSL / TLS
Secure Sockets Layer ou Transport Layer Security : protocole de securisation des
echanges sur Internet.
Virtualisation
Technique permettant de faire fonctionner sur une seule machine un ensemble de
syst`emes dexploitations.
52
Fonctionnement du
Fonctionnement detaille . . . . . . . . . . . . . . . . . . . . . . . . . 14
VM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
HAProxy
cloud . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
53
Bibliographie
54
55