Академический Документы
Профессиональный Документы
Культура Документы
UNIVERSITE D’ANTANANARIVO
----------------------
ECOLE SUPERIEURE POLYTECHNIQUE
-----------------------
DEPARTEMENT TELECOMMUNICATION
En vue de l’obtention
Titre : Ingénieur
Mention : Télécommunication
Parcours : Système de Traitement de l’Information (STI)
Président :
M. RAKOTOMALALA Mamy Alain
Examinateurs :
M. Boto ANDRIANANDRASANA Jean Espérant
Directeur de mémoire :
M. RATSIHOARANA Constant
REMERCIEMENTS
Finalement, j’exprime ma reconnaissance à mes plus proches soutiens, ma mère, pour son aide, ses
sacrifices et son amour qui a toujours nourri en moi cette volonté d’aller en avant. J'adresse mes
plus sincères remerciements à tous mes proches et amis, qui m'ont toujours soutenu et encouragé au
cours de la réalisation de ce mémoire.
i
TABLE DES MATIERES
REMERCIEMENTS ...................................................................................................................................... i
TABLE DES MATIERES ............................................................................................................................ ii
NOTATIONS ET ABREVIATIONS .......................................................................................................... vi
INTRODUCTION GENERALE.................................................................................................................. 1
CHAPITRE 1 ................................................................................................................................................. 2
CLOUD COMPUTING CONCEPT ET TERMINOLOGIE .................................................................... 2
1.1 Introduction ......................................................................................................................................... 2
ii
1.8 Avantages et inconvénients du Cloud Computing ......................................................................... 19
1.10.1 Confidentialité........................................................................................................................... 21
CHAPITRE 2 ............................................................................................................................................... 25
ANALYSE ET COMPARAISON DES ENVIRONNEMENTS CLOUD EXISTANT ......................... 25
2.1 Introduction ....................................................................................................................................... 25
2.5.2 Architecture................................................................................................................................. 34
iii
2.5.2.3 OpenStack Objet Storage (Projet Swift)............................................................................... 37
CHAPITRE 3 ............................................................................................................................................... 42
CONFIGURATION ET MISE EN PLACE D’OPENSTACK................................................................ 42
3.1 Introduction ....................................................................................................................................... 42
CHAPITRE 4 ............................................................................................................................................... 52
ETUDES DE CAS D’UN FOURNISSEUR DE CLOUD ......................................................................... 52
4.1 Introduction ....................................................................................................................................... 52
iv
4.4 Conclusion ......................................................................................................................................... 59
v
NOTATIONS ET ABREVIATIONS
1. Minuscules latines
lnf Temps de latence finale
lni Temps de latence initiale
nf Nombre de nœuds
t Le temps
tm Instant de modification du système
2. Majuscules latines
A Augmentation du temps résultant de la modification
Av1 Temps moyen de traitement du système stable 1
Av2 Temps moyen de traitement du système stable 2
B Déviations standard des ensembles de requêtes
N Average
Rt1 Temps moyen de réponse 1
Rt2 Temps moyen de réponse 2
3. Minuscules grecs
α1 Montée des temps de latence
α2 Descente des temps de latence
µ Coefficient d’adaptation
π Perturbation d’adaptation
λ Impact maximal
4. Majuscules grecs
Δl Variation du temps de latence
Δt Temps d’adaptation
5. Abréviations
AMQP Advanced Message Queue Protocol
AOE Ata Over Ethernet
API Application Programming Interface
ASP Application service provider
BIOS Basic Input Output System
CIGREF Club Informatique des Grandes Entreprises Françaises
vi
CPU Central Processing Unit
DHCP Dynamic Host Configuration Protocol
EC2 Elastic Compute Cloud
FAH Fournisseur Applications Hébergées
GB Giga Bytes
GPL General Public License
IAAS Infrastructure as a Service
iSCSI Internet Small Computer Systems Interface
KVM Kernel-based Virtual Machine
LDAP Lightweight Directory Access Protocol
LTS Long Term Support
MySQL My- Structured Query Language
NASA National Aeronautics and Space Administration
NAT Network Adrress Translator
PAAS Plateform as a Service
PC Personal Computer
RAM Radom Access Memory
RESERVOIR Projet Europeen Open source
REST REpresentational State Transfer
SAAS Software as a Service
SAN Storage Area Network
SGBD Système de Gestion de Base de Données
SLA Security Level Agreement
SPOF Single Point Of Failure
SSL Secure Sockets Layer
SQL Structured Query Language
TIC Information and Communication Technologies
VLAN Virtual Local Area Network
VM Virtual Machine
VPN Virtual Private Network
VT-x Virtual Technology
WSRF Web Services Resource Framework
vii
INTRODUCTION GENERALE
Face à l’augmentation continuelle des coûts de mise en place et de maintenance des systèmes
d’information, les entreprises externalisent de plus en plus leurs services informatiques en le
confiant à des entreprises spécialisées comme les fournisseurs de Cloud. L’intérêt principal de cette
stratégie pour les entreprises réside dans le fait qu’elles ne paient que pour les services effectivement
consommés.
Le Cloud Computing est aujourd’hui le sujet phare dans le domaine des systèmes d’information et
de télécommunication. Après la virtualisation, le Cloud parait être la révélation qui va permettre aux
entreprises d’être plus performantes et de gérer le coût des systèmes d’information d’une manière
efficiente.
Mais suite à cette entrée fracassante nous pouvons tout de même nous demander en quoi consiste
le Cloud Computing. C’est pour cela que ce travail de fin d’études de mastère s’intéresse à ce
domaine d’actualité.
Le terme Cloud Computing ou « informatique dans les nuages » est un nouveau modèle
informatique qui consiste à proposer les services informatiques sous forme de services à la demande,
accessibles de n’importe où, n’importe quand et par n’importe qui. Cette nouvelle technologie
permet à des entreprises d’externaliser le stockage de leurs données et de leur fournir une puissance
de calcul supplémentaire pour le traitement d’une grosse quantité d’informations.
Ainsi, le présent manuscrit s’articule autour de quatre chapitres principaux. On va l’entamer par
quelques définitions et généralités sur le Cloud Computing, ensuite, le deuxième chapitre sera
consacré à la description de différentes solutions existant sur le Cloud. Le troisième chapitre détaille
quelques cas d’utilisation du Cloud, ainsi que l’installation et la configuration des différents
composants de la solution choisie par nos soins dans le chapitre précédent, en vue d’avoir une
utilisation du Cloud dans un contexte privé.
Enfin dans le dernier chapitre nous effectuons une étude pour simuler le cas d’un fournisseur de
service Cloud avec la création d’une architecture de types IaaS pour une startup informatique.
1
CHAPITRE 1
CLOUD COMPUTING CONCEPT ET TERMINOLOGIE
1.1 Introduction
1.2 Historique
Techniquement, le concept de Cloud Computing est loin d’être nouveau, il est même déjà présent
depuis des décennies. On en trouve la première trace dans les années 1960, quand John McCarthy
affirmait que cette puissance de traitement informatique serait accessible au public dans le futur. Le
terme en lui-même est apparu plus couramment aux alentours de la fin du XXe siècle.
Salesforce.com fut le premier hébergeur de Cloud en 1999, suivi en 2002 par Amazon qui proposa
un ensemble d'hébergement d'application et de stockage. Amazon développa ses services en 2005
(Amazon Web Services) et en 2006 (Elastic Compute Cloud ou EC2). En 2007, Google, IBM et des
universités lancèrent un projet de recherche sur le Cloud qui permit de lui faire gagner en popularité
et en consistance. C'est en 2009 que la réelle explosion du Cloud survint avec l'arrivée sur le marché
des sociétés comme Google (Google App Engine), Microsoft (Microsoft Azure), IBM (IBM Smart
Business Service), Sun (Sun Cloud) et Canonical Ltd (Ubuntu Enterprise Cloud). Réalisant de ce
qu’ils pourraient faire de toute cette nouvelle opportunité, de nombreuses compagnies ou des
sociétés multinationales ont ensuite commencé à montrer un certain intérêt puis à perfectionner leurs
2
anciennes infrastructures et applications internes contre ce que l’on appelle les « pay per use
service » (service payé à l’utilisation). [1]
Actuellement des experts sont convaincus que bientôt, nous utiliserons le Cloud Computing de la
même manière que nous utilisons l’électricité, c'est-à-dire en payant uniquement ce que nous
consommons sans même nous soucier des aspects techniques nécessaires au bon fonctionnement du
système. Le principal facteur de développement consiste sur le fait que toute cette puissance est à
tout moment partagée par plusieurs utilisateurs et évite ainsi de perdre du « temps machine » à ne
rien faire. Cela devrait également réduire les coûts du développement et donc les prix. [2]
1.3 Généralités
1.3.1 Définitions
Le Cloud Computing, littéralement l’informatique dans les nuages est un concept qui consiste à
déporter sur des serveurs distants des stockages et des traitements informatiques traditionnellement
localisés sur des serveurs locaux ou sur les postes des utilisateurs. Il consiste à proposer des services
informatiques sous forme de service à la demande, accessible de n’importe où, n’importe quand et
par n’importe qui, grâce à un système d’identification via un PC et une connexion à internet. Cette
définition est loin d’être simple à comprendre, l’idée principale à retenir est que le Cloud n’est pas
un ensemble de technologies, mais un modèle de fourniture, de gestion et de consommation de
services et de ressources informatiques. [3]
3
Pour Wikipédia il s’agit : « d’un concept de déportation sur des serveurs distants des traitements
informatiques traditionnellement localisés sur le poste client ». [4]
Pour CISCO : « le Cloud Computing est une plateforme de mutualisation informatique fournissant
aux entreprises des services à la demande avec l’illusion d’une infinité des ressources ». [5]
Pour le groupe de travail CIGREF le Cloud Computing est défini sur les quatre points suivant :
- Un Cloud est toujours un espace virtuel.
- Contenant des informations qui sont fragmentées.
- Dont les fragments sont toujours dupliqués et repartis dans cet espace virtuel, lequel peut
être sur un ou plusieurs support physique.
- Qui possède « une console (programme) de restitution » permettant de reconstituer
l’information.
1.4.1 Virtualisation
La virtualisation se définit comme l’ensemble des techniques matérielles et/ou logiciels qui
permettent de faire fonctionner sur une seule machine plusieurs systèmes d’exploitation appelés
machines virtuelles (VM). [6]
La virtualisation des serveurs permet une plus grande modularité dans la répartition des charges et
la reconfiguration des serveurs en cas d’évolution ou de défaillance momentanée.
Les intérêts de la virtualisation sont multiples, on peut en citer quelques-uns :
- l’utilisation optimale des ressources d’un parc de machines (répartition des machines
virtuelles sur les machines physiques en fonction des charges respectives).
- l’économie sur le matériel (consommation électrique, entretien physique, surveillance)
- l’installation, tests, développements sans endommager le système hôte. [7]
1.4.2 Datacenter
Un centre de traitement de données (Datacenter en anglais) est un site physique sur lequel se
trouvent regroupés des équipements constituants le système d’information de l’entreprise
(mainframes, serveurs, baies de stockage, équipements réseaux et de télécommunications). Il peut
être interne ou externe à l’entreprise, exploité ou non avec le soutien des prestataires. Il comprend
en général un contrôle sur l’environnement (climatisation, système de prévention contre l’incendie),
une alimentation d’urgence et redondante, ainsi qu’une sécurité physique élevée.
4
Cette infrastructure peut être propre à une entreprise et utilisée par elle seule ou à des fins
commerciaux. Ainsi des particuliers ou des entreprises peuvent venir y stocker leurs données suivant
des modalités bien définies. [7]
Une plate-forme de travail collaboratif est un espace de travail virtuel. C’est un site qui centralise
tous les outils liés à la conduite de projet et les met à la disposition des acteurs.
L’objectif du travail collaboratif est de faciliter et d’optimiser la communication entre les individus,
dans le cadre d’un travail ou d’une tâche.
Les plates-formes collaboratives intègrent généralement les éléments suivants :
- des outils informatiques
- des guide ou méthodes de travail en groupe, pour améliorer la communication, la production,
la coordination.
- un service de messagerie.
- un système de partage des ressources et des fichiers.
- des outils de type forum, pages de discussions.
- un trombinoscope ou annuaire des profils des utilisateurs.
- des groupes, par projet ou par thématique.
- un calendrier.
Nous distinguons trois formes de Cloud Computing : Le Cloud public, également le premier apparu,
le Cloud privé et le Cloud hybride qui est en fin la combinaison de deux premiers.
Le principe est d’héberger des applications, en général des applications web, sur un environnement
partagé avec un nombre illimité d’utilisateurs. La mise en place de ce type de Cloud est gérée par
des entreprises tierces (ex Amazon, Google) et il est accessible selon le modèle pay-as-you-go
(payer selon la consommation). Les fournisseurs de Cloud public les plus connus sont Amazon et
Google. [8]
Ce modèle :
- demande de lourds investissements pour le prestataire de services.
- offre un maximum de flexibilité.
5
Figure 1.02 : Cloud public
C’est un environnement déployé au sein d’une entreprise. Ainsi elle doit gérer toute seule son
infrastructure. Dans ce cas, implémenter un Cloud privé signifie transformer l’infrastructure interne
existante en utilisant des technologies comme la virtualisation pour enfin délivrer, plus simplement
et plus rapidement, des services à la demande.
L’avantage de ce type de Cloud par rapport au Cloud public réside sur l’aspect de la sécurité et la
protection des données.
En effet, l’ensemble du matériel est conservé au sein de votre propre emplacement. De ce fait les
ressources sont détenues et contrôlées par votre département informatique. [8]
Eucalyptus, OpenNebula et OpenStack sont des exemples pour la mise en place du Cloud privé.
Ce modèle est :
- cher pour le client.
- dédié et sécurisé.
- moins flexible comparé au Cloud public.
6
Figure 1.03 : Cloud privé
En général on entend par Cloud hybride, la cohabitation et la communication entre un Cloud privé
et un Cloud public dans une organisation partageant des données et des applications (par exemple,
un Cloud dédié pour les données et un autre pour les applications). [8]
Ce modèle :
- permet d’allier les avantages des deux modèles de déploiement.
- permet la gestion de deux Cloud qui peut s’avérer plus contraignant.
7
Figure 1.05 : Représentation des différents types de déploiement d’une infrastructure Cloud
Le Cloud Computing est composé de trois services, que nous allons exposer ci-dessous :
8
Figure 1.06 : Contrôle de service dans IaaS
Il s’agit des plateformes du nuage, regroupant principalement les serveurs mutualisés et leurs
systèmes d’exploitation. En plus de pouvoir délivrer des logiciels en mode SaaS, le PaaS dispose
d’environnements spécialisés au développement comprenant les langages, les outils et les modules
nécessaires.
L’avantage est que ces environnements sont hébergés par un prestataire basé à l’extérieur de
l’entreprise ce qui permet de ne disposer d’aucune infrastructure et de personnel de maintenance et
donc de pouvoir consacrer au développement.
- Avantage
Le déploiement est automatisé, pas de logiciel supplémentaire à acheter ou à installer.
- Inconvénient
Limitation à une ou deux technologies (ex : java ou python pour Google AppEngine, .NET pour
Microsoft Azur, propriétaire pour force.com). Pas de contrôle des machines virtuelles sous-jacentes.
Convient uniquement aux applications web. [9]
9
Figure 1.07 : Contrôle de service dans PaaS
C’est un concept qui consiste à proposer un abonnement à un logiciel plutôt que l’achat d’une
licence.
On oublie donc le modèle client-serveur et aucune application n’est installée sur l’ordinateur, elles
sont directement utilisables via le navigateur web. L’utilisation reste transparente pour les
utilisateurs, qui ne se soucient ni de la plateforme, ni du matériel, qui sont mutualisés avec d’autres
entreprises.
10
Avec l’arrivée du haut-débit, les logiciels en mode SaaS deviennent utilisables sans problèmes.
- Avantages
- Plus d’installation,
- Plus de mise à jour (elles sont complétées chez le fournisseur),
- Plus de migration de données.
- Paiement à l’usage, test des nouveaux logiciels avec facilité.
- Inconvénients
- Limitation par définition au logiciel proposé
- Pas de contrôle sur le stockage et la sécurisation des données associées au logiciel
- Réactivité des applications web pas toujours idéale. [9]
11
Figure 1.09 : Répartition des responsabilités
La figure 1.09 ci-dessus résume les différents modèles de service, et montre comment les
responsabilités sont théoriquement reparties suivant les modèles IaaS, PaaS et SaaS pour
l’entreprise, le partage de contrôle avec le fournisseur et le fournisseur de Cloud.
12
Figure 1.10 : Différents niveaux des services du Cloud Computing
La figure 1.10 ci-dessus présente les trois couches du Cloud Computing ainsi que leurs acteurs en
donnant un compromis flexibilité/simplicité. En Cloud, la flexibilité est obtenue grâce à la
virtualisation des systèmes d’exploitation.
La plateforme est exécutée via des machines virtuelles et les ressources peuvent être allouées et
délibérées à la demande. Ainsi, l’IaaS est considéré comme le service le plus flexible.
Du point de vue économique, le Cloud Computing est essentiellement une offre commerciale
d’abonnement économique à des services externes. Selon le National Institute of Standards and
Technology, il existe trois catégories de services qui peuvent être offerts en Cloud Computing :
IaaS, PaaS et SaaS. [10]
13
Les avantages et les inconvénients de ces services se résument dans le tableau 1.01 ci-dessous.
Avantages Inconvénients
- Administration - Sécurité
IaaS - Personnalisation - Besoin d’un administrateur système
- Flexibilité d’utilisation - Demande pour les acteurs du Cloud
- Capacité de stockage infini des investissements très élevés
- Pas d’infrastructure nécessaire - Limitation des langages
PaaS - Pas d’installation - Pas de personnalisation dans la
- Environnement hétérogène configuration des machines virtuelles
- Pas d’installation - Logiciel limité
SaaS - Plus de licence - Sécurité
- Migration - Dépendance des prestataires
- Accessible via un abonnement
Après ce tour d’horizon du Cloud, décrivons à présent les propriétés fondamentales des
services sur Cloud. Notons que le SGBD est un service du Cloud. A ce titre, toutes les définitions
suivantes sont immédiatement applicables aux bases de données.
Un service est dit hautement disponible si toute requête reçue par un nœud n'étant victime d'aucune
défaillance et retourne un résultat. La haute disponibilité d'un service caractérise sa capacité à
assurer son effective accessibilité durant une période donnée.
Le service devra donc pouvoir détecter les points de défaillances et réduire l'impact de leur
potentielle défaillance grâce à la mise en place de techniques de redondance et/ou réplication. [11]
Un des principaux atouts d'une solution Cloud est sa capacité à passer à l'échelle que nous décrirons
plus loin. Définissons d'abord sa capacité à monter à l'échelle.
14
- Capacité à monter à l’échelle
La capacité à monter à l'échelle d'un service, est sa capacité à pouvoir assumer une production
constante lorsque le nombre de requêtes augmente. Cette définition ne fait intervenir aucune notion
de dynamisme ; quel que soit le moyen d'étendre ses capacités, un Cloud est capable de monter à
l'échelle s'il peut monter en charge jusqu'à sa limite (celle de ses composants physiques). On dira
donc qu’un service est capable de monter en charge (horizontalement) de manière
linéaire si une augmentation de X% de ses ressources augmente ses performances de X%.
On remarque dès à présent que décrire l’augmentation du nombre d’instances en terme de
pourcentage est sujet à discussion. Supposons, à ce stade, que chaque instance est identique et que
le pourcentage se résume donc au rapport du nombre d’instances futur sur le précédent.
La plupart des solutions Cloud mettent en avant leurs capacités à monter à l’échelle pour des raisons
commerciales. La capacité à descendre à l’échelle est souvent négligée mais n’en est pas moins
intéressante : pour des enjeux économiques et écologiques, il est très intéressant de pouvoir diminuer
ses ressources lorsqu’elles sont sous-exploitées.
Le Cloud doit être capable de s’adapter et ceci ne peut se résumer à la capacité à monter à l’échelle.
Il faut aussi considérer sa capacité à descendre à l’échelle. L’union de ses deux propriétés est sa
capacité à passer à l’échelle.
La capacité à passer à l’échelle d’un service (Scalability en anglais), est sa capacité à pouvoir
assumer la variation (descente ou montée) de la charge à laquelle il est soumis.
Il la caractérise grâce à un paramètre sans dimension suivant la formule suivante :
L’average (N) correspond au temps moyen de réponses pour une Base de Donnée de N nœuds
attaquées par N ensembles de requêtes. Un système qui monterait parfaitement à l'échelle devrait
avoir une montée à l'échelle égale à 0. [12]
1.7.3 Elasticité
L'élasticité d'un service est sa capacité à passer à l'échelle de manière dynamique c'est-à-dire sans
nécessiter de sa réinitialisation et sans entraîner des effets collatéraux trop importants.
Par « collatéraux », on entend des pertes en performance inacceptables.
L'élasticité d'un service est une caractérisation de sa capacité à passer à l'échelle ;
15
dans le but de pouvoir comparer l'élasticité de systèmes forts différents, cette approche propose une
formule définissant l'élasticité tel un unique paramètre sans dimension.
Voici sa définition:
𝐴+𝐵 (1.02)
é𝑙𝑎𝑠𝑡𝑖𝑐𝑖𝑡é =
(Rt1 + Rt2) ∗ (𝐴𝑣1 + 𝐴𝑣2)
- Le coefficient d’adaptation µ
Il quantifiera le gain (ou la perte) en performance survenant immédiatement après la modification.
De manière abstraite, il s’entend donc comme le rapport entre la performance et le coût engendré
par la modification du système.
Le coefficient d'adaptation µ𝑖,𝑓 est sans dimension et détermine l'adaptation d'un système passant
de 𝑛𝑖 à 𝑛𝑓 instances.
16
Définissons la variation des temps de latence :
Δ𝑙
𝑙𝑛𝑖
µ= (1.04)
Δ𝑛
- Le temps d’adaptation Δt
Correspondant à la durée de la phase d'adaptation, ce temps est la durée nécessaire au système pour
assimiler la modification (répartition des données et autres). Un système sera d'autant plus élastique
que ce temps sera réduit.
17
De manière plus descriptive, cette durée commence à l’instant où l’on modifie le système tm
et finit lorsque les temps de réponse du système composé de nf nœuds ne sont plus influencés
par la modification.
- L’impact maximal λ
C’est le rapport entre le pic de perte de performance li et le temps de latence moyen du système
initial lni.
𝑙𝑖 (1.05)
𝜆=
𝑙𝑛𝑖
- La perturbation d’adaptation π
Elle décrit le comportement, la perturbation du système par rapport à un système s'adaptant de
manière linéaire à la modification. Nous la définissons comme suit :
𝑡𝑚+∆𝑡
∫𝑡𝑚 𝑙(𝑡)𝑑𝑡
𝜋= 𝛥𝑙∗𝛥𝑡 (1.06)
2
18
Ce paramètre est donc sans dimension. Plus sa valeur sera proche de 1, plus le comportement du
système sera linéaire durant l'adaptation. Une valeur comprise entre O et 1, nous informera que le
système a un comportement globalement meilleur qu'un système s'adaptant linéaire à l'adaptation,
tandis qu'un grand score nous informera que le comportement du système s'éloigne d'un
comportement linéaire. [13]
Le tableau 1.02 donne une idée récapitulative des différents paramètres.
1.8.1 Avantages
- Un démarrage rapide
Le Cloud Computing permet de tester plus rapidement le Business plan, à coûts réduits et avec
facilité.
1.8.2 Inconvénients
19
La bande passante qui serait nécessaire pour mettre cela dans le Cloud est gigantesque, et les coûts
seraient tellement importants qu’il est plus avantageux d’acheter le stockage nous même plutôt que
de payer quelqu’un d’autre pour s’en charger.
- La fiabilité du Cloud
Un grand risque lorsqu’on met une application qui donne des avantages compétitifs ou qui contient
des informations clients dans le Cloud.
La plateforme du Cloud, si elle est externe (non installée sur le réseau interne ou avec une ouverture
extérieure) doit être suffisamment sécurisée pour éviter le risque d’intrusion, de vol des données par
piratage.
- Taille de l’entreprise
Si l’entreprise est grande alors ses ressources sont grandes, ce qui inclut une grande consommation
du Cloud. Du coup il serait peut-être plus intéressant à mettre au point son propre Cloud plutôt que
d'en utiliser un externalisé. Les gains sont bien plus importants quand on passe d'une petite
consommation de ressources à une consommation plus importante.
Outre les caractéristiques techniques, distinguons, parmi les différentes caractéristiques essentielles
et relevantes, les non-fonctionnelles et les économiques.
Les aspects non-fonctionnels d’écrivent les propriétés intrinsèques du Cloud. Parmi ces
aspects nous listons :
- L’élasticité :
Il s’agit d’une des caractéristiques les plus essentielles dans notre vision du Cloud. Elle définit la
capacité d’une infrastructure donnée à s’adapter de manière dynamique au changement. L’élasticité
fait intervenir la capacité à passer à l’échelle mais aussi l’agilité.
- La capacité à s’adapté :
Le Cloud doit fournir un ensemble d’automatismes lui permettant de s’auto-gérer. Son
administration devra nécessiter le minimum possible d’interventions humaines.
- La qualité de service :
C’est un autre aspect essentiel du Cloud ; à l’aide de métriques telles que le temps de réponse, le
nombre d’opérations à la seconde, le service fournit des garanties à ses utilisateurs. Il n’appartient
20
plus à l’utilisateur de devoir décider quelles ressources déployer mais plutôt de définir des bornes
que le service doit satisfaire. Le Cloud s’adaptera de manière à assurer ses bornes.
Les aspects économiques du Cloud séduisent de plus en plus les sociétés. Parmi ces aspects,
nous listons :
- Un retour sur l’investissement :
Le paiement à l’utilisation est particulièrement intéressant pour les entreprises de petite taille qui
peuvent à présent profiter des avantages d’un service fonctionnel dès le départ. L’idée sous-jacente
est donc la suivante : le service deviendra coûteux pour une société dans la mesure où il est fort
utilisé, c’est-à-dire à la condition qu’il lui rapporte de l’argent. On passe dès lors de dépenses
d’investissement en capital (l’achat de serveurs d’application) aux dépenses d’exploitation (l’achat
de ressources consommables).
1.10.1 Confidentialité
La confidentialité assure les données du client, elles ne doivent être accessibles que par les entités
autorisées. Les différentes solutions de Cloud Computing comportent des mécanismes de
confidentialité comme la gestion des identités et des accès, l’isolation ou le cryptage. La majorité
des échanges internes ou externes au Cloud sont encapsulés en SSL (Secure Sockets Layer) et
authentifiés avec un certificat rédigé et signé par le client.
21
1.10.2 Intégrité
Les utilisateurs de Cloud peuvent stocker plusieurs données, ces données doivent généralement être
protégées contre le vol et les modifications non autorisées. Dans le nuage, il existe plusieurs
systèmes qui fournissent des différents mécanismes pour protéger l'intégrité des informations. Par
exemple pour le service de stockage de Windows Azure, l'intégrité est définie par les applications
utilisant le modèle de contrôle d'accès. Chaque compte de stockage a deux clés qui sont utilisées
pour contrôler l'accès à toutes les données. [15]
1.10.3 Disponibilité
L'un des principaux avantages fournis par des plates-formes de Cloud Computing est la disponibilité
robuste basée sur la redondance réalisée avec des technologies de virtualisation. Windows Azure en
est un exemple, il offre de nombreux niveaux de redondance fournissant une disponibilité maximale
de données et des applications, les données sont répliquées sur trois nœuds distincts pour minimiser
les problèmes des pannes matérielles ; cette technique s’appelle la multi-location, elle permet de
créer des instances d'une même donnée sur plusieurs sites différents. Ce qui permet une récupération
facile en cas de désastre. [16]
La sécurité absolue n'existe pas, donc le problème de sécurité reste le plus souvent un problème de
confiance entre le fournisseur de service et le consommateur de service. Cette confiance se traduit
par la signature d'un contrat nommé SLA (Service Level Agreement). Ce contrat précise les taux de
disponibilité du service. En règle générale, et pour la plupart des fournisseurs, ce taux est supérieur
à 99 %.
Le but du Cloud Computing est de construire un nuage de clusters, c'est à dire d'interconnecter un
ensemble de machines sur un réseau défini. Les utilisateurs peuvent ensuite déployer des machines
virtuelles dans ce nuage, ce qui leur permet d'utiliser un certain nombre de ressources. Par exemple,
de l'espace disque, de la mémoire vive, ou encore du CPU (processeur).
Cette infrastructure (figure 1.14), en allant plus dans les détails, est constituée de clusters et de
nœuds. Les clusters servent à gérer l'interface entre les nœuds et l'utilisateur. Ainsi, lorsqu'on déploie
une machine virtuelle sur un cluster, le cluster va créer une instance, qui se matérialisera par
l'utilisation des ressources dans les nœuds. [17]
22
Figure 1.14 : Nuage de clusters
Voici un schéma UML (figure 1.15) récapitulatif qui décrit les étapes de déploiement d'une image.
L'utilisateur final disposera enfin d'un accès SSH sur la machine virtuelle. Pour lui, l'utilisation des
ressources sera transparente. Ce sont des administrateurs réseaux qui lui délivreront ses ressources
en fonction de ses besoins.
23
1.12 Conclusion
Au cours de ce chapitre, nous avons fourni une base théorique sur le Cloud Computing, en présentant
ses types (public, privé et hybride), ses services (IaaS, PaaS, SaaS), ses avantages et inconvénients,
afin d’appliquer ses concepts à notre contexte. On a vu aussi que le Cloud se veut capable de
s'autogérer, de fournir un certain degré d'automatisme. Tous ces mécanismes sont transparents pour
l'utilisateur final qui pense le Cloud tel une série de services et fait donc totalement abstraction de
tout autre composant.
24
CHAPITRE 2
ANALYSE ET COMPARAISON DES ENVIRONNEMENTS CLOUD EXISTANT
2.1 Introduction
Le Cloud Computing représente un nouveau défi dans le monde informatique. Plusieurs solutions
sont proposées : des solutions propriétaires et des solutions open sources. Dans ce chapitre, nous
allons présenter les différentes solutions Cloud existantes, d’une manière non exhaustive, leur mode
de fonctionnement, leurs avantages et leurs inconvénients en vue de dégager un choix qu’on va
déployer.
Une comparaison des solutions du Cloud Computing représente donc un bon point de départ. Voici
un panorama de quelques solutions de Cloud existantes.
2.2.1.1 VMwareCloud
25
2.2.1.2 Office 365
C’est la version Cloud Computing de Microsoft avec des niveaux d’utilisation au choix : messagerie,
office, partage et accès aux données.
Avec Office 365, Microsoft optimise le Virtual Office, et offre une solution Cloud qui permet via
un simple abonnement d’accéder à l’ensemble des données depuis n’importe quelle plateforme (PC,
Smartphone, Tablette). Microsoft met en place cette offre personnalisée et adaptée aux différents
besoins des entreprises. Office 365 leur permet de choisir uniquement les modules utiles pour ses
utilisateurs; en sélectionnant uniquement les options adaptées sans gaspillage. [19]
L’objectif est de mettre en place une solution de Cloud Computing Office 365 pour l’entreprise,
afin de réduire les charges d’investissement et d’exploitation des serveurs et d’applications.
Le but recherché derrière cette démarche est d’externaliser la messagerie électronique, de permettre
aux utilisateurs d’accéder à des documents partagés sur l’espace SharePoint online et de pouvoir
communiquer à l’aide de la messagerie instantanée, de la vidéo conférence et cela de façon intégrée
et cohérente selon des règles d’accès précises à travers des rôles utilisateurs. [20]
Au besoin, la solution sera intégrée en hybride avec le système d’information existant. La solution
Cloud Office 365 proposée, se focalise sur la mise en place des services suivants :
- Externalisation de la messagerie : Exchange online
- Partage et gestion des documents sur office 365 : SharePoint online
- Gestion de la communication instantanée, réunions et conférences en ligne : Lync online.
Microsoft Windows Azure est le système d'exploitation qui sert d'environnement de développement,
d'exécution et de contrôle pour la plateforme Windows Azure.
La Plateforme Microsoft Azure est une infrastructure commerciale et flexible de Cloud Computing,
il est créé par le groupe de Microsoft, qui permet aux utilisateurs de créer et de développer des
applications directement dans le Cloud Computing, héberger, administrer des services Web à travers
un réseau global ; il permet aussi la simplicité de la maintenance, l'exploitation des applications, et
le stockage à la demande en proposant des outils communs.
26
La plateforme Windows Azure est caractérisée par les points suivants :
- L’utilisateur se concentre sur son application et sa valeur fonctionnelle,
- Microsoft s’occupe de la gestion de l’infrastructure, qui est disponible à la demande pour les
applications,
- La facturation est réalisée à l’usage,
- De nombreuses fonctions sont disponibles, immédiatement activables : VPN, réplication des
données, Sécurité, Authentification multiple,
- Les applications et les données sont localisées, répliquées, et hautement disponibles,
- Une place de marché permet la vente et l’achat de données et de composants logiciels.
2.2.2.1 Eucalyptus
Eucalyptus est un outil open source issue d'un projet de recherche de l'université de Californie. Cette
solution est la plus connue, car elle est intégrée dans les distributions Ubuntu Server et Debian.
Eucalyptus est écrit en C, Java et Python et permet de créer des Clouds IaaS de type privé ou hybride.
Il supporte les machines virtuelles Linux ainsi que les hyperviseurs Xen et KVM. Son avantage
majeur est le fait qu'il est compatible avec Amazon EC2.
Il possède également une version entreprise (payante) de la société Eucalyptus Systems qui apporte
des fonctionnalités supplémentaires comme le support de VMware. [21]
27
Figure 2.01 : Architecture d’Eucalyptus
2.2.2.2 OpenNebula
Il s'agit d'une plateforme purement open source permettant de déployer des Clouds privés, hybrides
et publiques. Elle est écrite en C++, Ruby et Shell et elle supporte les hyperviseurs Xen, KVM et
VMware. Le support de Virtualbox est prévu à partir de la version 4.0 de VirtualBox. Sa puissance
consiste dans ses connecteurs vers des fournisseurs d'IaaS sur les Clouds publiques tels que :
Amazon EC2 Web Service, Nimbus WSRF, Elastic Hosts REST. OpenNebula est soutenu par le
projet européen RESERVOIR, qui propose une architecture complète pour la gestion de Datacenter
et la création de services Cloud. [22]
28
Figure 2.02 : Architecture d’OpenNebula
2.2.2.3 OpenStack
Créé en juillet 2010 par la NASA et l'hébergeur américain Rackspace, OpenStack est une offre
d'IaaS 100% open source encore en développement qui a livré son code source récemment et qui
permet aux sociétés de développer leurs propres solutions d'infrastructure de Cloud Computing. Plus
de trente fournisseurs soutiennent ce projet tels que : AMD, Intel, Dell et Citrix. OpenStack est
également intégré dans les dernières versions d'Ubuntu comme c'est le cas pour Eucalyptus. Il
comprend le logiciel OpenStack Compute pour la création automatique et la gestion de grands
groupes de serveurs privés virtuels et le logiciel OpenStack Storage pour optimiser la gestion de
stockage, le contenu sur différents serveurs et le mettre à disposition pour une utilisation massive
de données. [23]
Dans les paragraphes précédents, nous avons présenté une liste de logiciels permettant de créer des
solutions Cloud. Il est grand temps maintenant de faire le choix de celui qui nous convient le mieux.
Nous avons décidé de ne comparer que les solutions open source, cette comparaison est menée dans
le tableau 2.01, selon plusieurs critères choisis en fonction des conseils trouvés dans l’état de l’art
(ou de l’existant).
29
OpenStack Eucalyptus OpenNubula
- Entièrement opensource, - Entièrement - Entièrement
Code source - Apache v2.0 opensource, opensource,
- GPL v3.0 - Apache v2.0
Rackspace, NASA, Dell, - Apparu au début - L'union
Citrix, Cisco, Canonical et dans l'université Santa Européenne
Langage de
Python Java, C, Python Java, C++, Ruby
programmation
-GridFTP, Comulus
OpenStack Storage Walrus (version récente de
Stockage
GridFTP)
- XCP
30
Xen, KVM Xen, KVM Xen, KVM,
Hyperviseur
VMware
- Problématique, - Manuelle,
- Facile, installation dépend de installation facile
Installation automatisée et documentée. l'environnement sur les distributions
réseau et matériel, supportées (dont
- Difficulté en Debian et Ubuntu).
environnement
hétérogène.
- Cloud public et privé - Cloud public et privé - Cloud privé
Orientation
- Excellente, site bien fourni et - Correcte, complète - Complète,
facile d'accès avec à la fois un mais pas toujours à documentations,
wiki contenant l'essentiel et jour. références de tous
Documentation une documentation officielle les fichiers de
disponible et très détaillée. configuration,
exemples
Dans les précédents paragraphes, nous avons présenté une liste des logiciels permettant de créer des
solutions de Cloud Computing. La mise en place d'un environnement de ce dernier pour des buts de
recherche nécessite initialement le choix d'une solution :
- Open source sécurisée
- Facile à installer et à déployer
- Extensible
- Modulaire et innovante
- Pouvant s’adapter à tous types d’infrastructures existantes
- Opérationnelle à toutes les tailles d’entreprises
- Extensible
31
Donc la solution qui nous convient le mieux et qui répond à nos besoins est l’OpenStack, la figure
2.03 suivante présente le pourcentage d’utilisation du logiciel OpenStack par rapport aux autres
solutions selon Zenoss.com.
2.5 OpenStack
2.5.1 Présentation
OpenStack est un logiciel libre qui permet la construction de Cloud privé et public de type IaaS sous
licence Apache 2.0, et qui a pour but d'aider les organisations à mettre en œuvre tant un système de
serveur que de stockage virtuel. Il s'installe sur un système d'exploitation libre comme Ubuntu ou
Debian et se configure entièrement en ligne de commande. C'est un système robuste et qui a fait ses
preuves auprès des professionnels du domaine. OpenStack joue le rôle d’une couche de management
de Cloud qui assure la communication entre la couche physique où se trouvent des serveurs
physiques occupés par des hyperviseurs différents (Vmware ESX, Citrix Xen, KVM, qemu) et la
couche applicative (Applications, utilisateurs, administrateur). [24]
32
Figure 2.04 : Rôle d’OpenStack
33
OpenStack est composé d'une série de logiciels et de projets au code source libre qui sont maintenus
par la communauté incluant: OpenStack Compute (nommé Nova), OpenStack Object Storage
(nommé Swift), et OpenStack Image Service (nommé Glance).
La figure 2.05 ci-dessous montre l’écosystème d’images d’OpenStack en se basant sur ses trois
projets.
2.5.2 Architecture
Openstack est constitué d’un ensemble de projets liés, qui constituent les différents composants
d’une plateforme de Cloud Computing. Son architecture est comparable à celle d’Amazon Web
Services. Il y a trois éléments capitaux autour du projet : Openstack Compute (provisionner et
contrôler un large réseau de machines), Openstack Object Storage (créer une plateforme de stockage
hautement disponible) et Openstack Image Service (gérer et organiser un large catalogue d’images
de machines). [25]
34
Ces différents services se communiquent entre eux grâce à la solution de Spring Source, RabbitMQ
qui implémente le protocole AMQP, ce dernier permet de faire du clustering pour une meilleure
tolérance de panne et une meilleure tenue de charge. L’utilisation de cette solution permet une
large modularité dans Openstack. En effet il est alors possible d’imaginer différentes intégrations
au sein de sa propre solution de Cloud privé. C’est d’ailleurs la philosophie de la fondation :
permettre une haute configuration selon ses besoins avec différentes options de stockage et réseau.
Le tableau 2.03 suivant va nous permettre de comprendre l’architecture Nova Compute et les rôles
de chaque composant :
35
Le composant Rôle
Nova
- Coeur de Nova
- Fonction Principale: Cloud Controller avec le service nova-api.
API - Compatible avec l’API Amazon EC2
- Ecoute sur le port 8773 pour EC2 API et 8774 pour OpenStack API
- Initialise la plupart des activités
- Renforce certaines fonctionnalités (ex : quotas)
- Principe simple: il prend une demande d’instance de machine virtuelle et
détermine où « Compute server » doit-elle être exécutée.
Sheduler - Fonctionnement par algorithmes pour assurer un fonctionnement optimal.
- Trois choix d’ordonnancement :
- Simple : tente de trouver l’hôte le moins « chargé »
- Chance (celui par défaut) : choisit un hôte disponible au hasard
depuis sa « Service Table »
- Zone : Prend un hôte au hasard depuis une zone « disponible »
36
- Support des VLAN : chaque projet dispose de sa plage d’adresses IP
accessibles via VLAN.
- Point de passage obligé pour les instructions échangées entre les services
Queue
- Différents types de files d’attente de messages pour faciliter la
communication : Topics, Fanout, Host
- Enregistre la configuration et les états en temps réels pour une
infrastructure Cloud : types d’instances disponibles, instances en cours
Data Base
d’utilisation, réseaux disponibles, projets,
- Supporte la plupart des SGBD : MySQL, PostgreSQL
Object Storage sert à la création d’espace de stockage redondant et évolutif pour le stockage de
plusieurs pétabytes de données. Il ne s’agit pas réellement d’un système de fichier mais est surtout
conçu pour le stockage à long terme de gros volumes.
Il utilise une architecture distribuée offrant plusieurs points d’accès pour éviter les SPOF (Single
Point Of Failure). [26]
37
Figure 2.08 : Architecture de Swift
38
Figure 2.09 : Architecture de base d’OpenStack
39
commandes à des fins d’administration. Ce module a finalement été créé pour l’utilisateur,
afin de lui faciliter l’accès.
- Keystone : Il est le point d’entrée. C’est le service d’identité et d’authentification : les
utilisateurs vont devoir s’identifier afin d’obtenir les autorisations nécessaires. Dans ce cas,
Keystone leur fournit un token qui est un jeton autorisant l’interaction avec le service désiré.
Il repose sur un SGBD. Nous avons choisis MySQL. Il est conçu pour être utilisable avec
un annuaire LDAP et ainsi facilite la gestion de droits.
- Neutron : Neutron est le module permettant la mise en place de réseaux virtuels.
Anciennement connu sous le nom de «Quantum » avant la version « Havana » d’Openstack.
Développé par Cisco, il permet la gestion de commutateurs (switch) linux, ainsi que les
améliorations détaillées plus bas. Neutron est également en charge de gérer les règles de
pare-feu, d’attribution des adresses IP pour les instances.
- Heat : c’est une plateforme d’orchestration assurant un approvisionnement plus facile de
nouvelles ressources à la demande. Il déploie automatiquement ses ressources, permet de
lancer des applications, créer des machines virtuelles et automatiser l’ensemble du
processus.
- Celiometer : Ce module supervise l’environnement, afin d’y collecter des données
d’utilisation et s’intègre au module de gestion d’identité Keystone et fournit des
informations précises sur les comportements des utilisateurs. C’est de cette façon qu’il va
pouvoir superviser l’environnement du Cloud Computing et découvrir d’éventuelles
contraintes de ressources. C’est là qu’intervient Heat.
- Trove : Module permettant la gestion des services de bases de données, il offre l’ap-
provisionnement de bases de données relationnelles à la demande sans s’encombrer des
tâches administratives complexes.
- Sahara : L’objectif est de permettre l’approvisionnement et l’administration des clusters
Hadoop (système de traitement de donnée distribuer), en outre Sahara a notamment bénéficié
des contributions d’Horton Works et permet d’approvisionner de façon automatique les
clusters Hadoop.
- Ironic : Fonction de gestion des machines physiques (serveur physique), il permet de
déployer dans OpenStack des conteneurs, c'est-à-dire des machines virtuelles qui hébergent
l’application et ses dépendances (bibliothèques, données, configurations) mais pas le
système d’exploitation sous-jacent. [27]
40
Figure 2.10 : Architecture d’OpenStack Kilo
2.6 Conclusion
Nous venons de présenter une liste non exhaustive des applications permettant de créer des Cloud
privés. Pour notre déploiement, notre choix s'est arrêté sur OpenStack plus précisément sa dernière
version stable nommée Kilo en tenant compte de ses multiples avantages et surtout car il correspond
exactement à ce que nous voulons déployer. Dans la suite, nous allons mettre en place la solution
choisie.
41
CHAPITRE 3
CONFIGURATION ET MISE EN PLACE D’OPENSTACK
3.1 Introduction
Dans ce chapitre, nous allons mettre en place notre solution OpenStack en présentant son
architecture, quels sont les différents cas d'utilisation du système avec des diagrammes, comment
se fera le dimensionnement des couches matérielles, notamment des serveurs et enfin nous allons
présenter des spécifications sur les autres éléments à installer avant d'installer la solution proprement
dite.
Pour mettre en place la solution open source Openstack choisie, Il va falloir étudier les différents
cas d’architecture possibles, présenter les utilisateurs du système et enfin l’installer. Cette
installation nécessite une configuration matérielle et des outils logiciels et des prérequis bien
spécifiques.
42
Pour nos premiers pas nous avons donc essayé la première installation sur un seul nœud dans
laquelle tous les services ainsi que toutes les instances sont hébergés au sein du même serveur. Cette
solution nous permet uniquement d’effectuer des tests sur le Cloud pour des fins purement
techniques.
Afin de représenter les différentes fonctionnalités et utilisations possible du système, nous allons
présenter une série de diagramme, en l’occurrence un diagramme des cas d'utilisation et des
diagrammes de séquence. Pour notre solution, il existe deux types d'utilisateurs, l'administrateur du
système et les utilisateurs. [28]
3.2.2.1 L’administrateur
L'administrateur est toute personne physique ayant reçu les droits d'administration. Généralement,
lors de l'installation, on configure les droits du premier administrateur.
Un administrateur peut :
- Ajouter de nouveaux administrateurs
- Supprimer des administrateurs
- Ajouter de nouveaux utilisateurs
- Créer un projet
- Créer de nouvelles machines virtuelles
- Gérer et créer des réseaux
Chaque administrateur possède un login et un mot de passe unique, modifiable à volonté par le
concerné.
3.2.2.2 L’utilisateur
L'utilisateur est toute personne physique de l'entreprise ayant reçu un compte d'accès.
A ce titre, il peut :
- Stocker des données dans la limite de ses possibilités
- Instancier des machines virtuelles
3.2.2.3 Diagrammes
43
Figure 3.02 : Diagramme de cas d’utilisation
- Diagramme de séquence
- Diagramme de séquence « connexion »
44
- Diagramme de séquence « création d’une machine virtuelle »
Comme c’est une solution libre, donc son installation a été conduite sous Ubuntu LTS server 14.04
64 bits. L'installation de ce système d'exploitation se fait sur une machine virtuelle, afin d'optimiser
les ressources de la machine. Le logiciel de virtualisation utilisé est VirtualBox.
45
3.3.1 Installation et configuration de VirtualBox
Pour installer VirtualBox, il faut vérifier que le PC hôte supporte la virtualisation (VT-X doit être
activé dans le BIOS), après l’installation on doit configurer le réseau de VirtualBox avec les deux
interfaces réseaux suivantes :
- Eth0 : NAT (pour l’accès vers l’internet)
- Eth1 : VirtualBox Hoste-Only Adapter (pour gérer les composants d’OpenStack)
Comme il est montré dans la figure 3.06 suivante :
46
3.3.2 Création de la machine virtuelle
Après avoir installé Ubuntu LTS server 14.04 sur une machine virtuelle considérée comme notre
serveur, il va falloir installer OpenStack.
Il existe plusieurs méthodes pour l’installer, dont :
- Devsatck.
- Installation via des scripts.
- Depuis les packages.
Lors de notre déploiement nous avons choisi une installation depuis les packages, (pour plus
d’information sur les scriptes et les étapes de configurations, voir Annexe 1).
Les étapes de l’installation sont comme suit :
47
Figure 3.07 : Configuration des cartes réseaux
48
- Installation du serveur MySQL
MySQL gère tous les bases de données dans OpenStack.
e. Installation de Keystone
Le composant Keystone est chargé de l’authentification, la gestion des utilisateurs et des services.
49
g. Installation de Nova (compute)
Nova permet la gestion des instances des machines virtuelles.
Pour accéder à l’interface d’administration, il faut saisir dans un navigateur web l’adresse ip du
serveur, puis on s’identifie avec le login et mot de passe configurer auparavant :
http://192.168.17.2
user: admin
password: admin_pass
50
Voici comment se ressemble l’interface d’administration Horizon :
3.4 Conclusion
Dans ce chapitre, on a présenté les outils logiciels et matériels ainsi que toutes les étapes et la
démarche à suivre pour installer les différents composants d’OpenStack Kilo. Bien que l’installation
semble facile à première vue, mais on a beaucoup cherché avant de la finaliser avec succès, car à
chaque fois un problème survenait, qu’il fallait résoudre pour passer à l’étape suivante. En plus du
fait que certaines informations ne sont pas évidentes à trouver, et que comme on a pu le constater,
il y a plusieurs composants à installer, chacun ayant un rôle particulier, qu’il est bon de connaitre,
pour mener à bien cette laborieuse installation et configuration.
51
CHAPITRE 4
ETUDES DE CAS D’UN FOURNISSEUR DE CLOUD
4.1 Introduction
Dans ce chapitre nous nous intéressons à « OpenStack », une solution Open Source que nous avons
choisi de déployer et puis on va l’utiliser pour développer une application de Cloud Computing.
Nous nous appuierons sur cette solution en vue de créer une architecture de type IaaS pour une
startup informatique. Nous allons utiliser une machine virtuelle, sur laquelle nous avons installé
OpenStack, pour simuler le cas d’un fournisseur de services Cloud.
Une startup en informatique, qui a développé une application web pour la gestion des payes pour
des sociétés tierces, veut maintenant héberger cette solution sur un serveur pour la proposer à plus
d’entreprises. L'équipe de marketing a réussi à ramener plusieurs clients, mais le logiciel n'est pas
encore online pour l'exploitation. Sachant que deux serveurs au moins sont nécessaires, pour assurer
une haute disponibilité de l'application, et un autre pour effectuer le développement des futures
versions de l’application, les membres de cette startup ont décidé de faire un comparatif en terme
de coût entre:
- Acheter des serveurs pour héberger l'application
- Allouer des ressources sur le Cloud pour héberger l'application.
1. Pour acheter des serveurs, et avec ces serveurs ont doit rajouter:
a. Un abonnement internet à haut débit plus un autre abonnement backup.
b. Un administrateur des systèmes et réseaux pour gérer et maintenir l'infrastructure.
c. Allouer une salle des machines pour mettre les serveurs, et ce qui vient avec :
- Armoire de brassage.
- Switches réseaux.
- Deux routeurs pour les deux abonnements internet.
- Des climatiseurs pour assurer le refroidissement et l'aération de la salle des machines.
- Un système d'alarme anti-incendie.
- Un système de vidéo surveillance pour garder la traçabilité sur ce qui ce passe dans
la salle des machines.
- Un système de gestion d'accès à la salle des machines.
52
- Des onduleurs et des groupes électrogènes pour assurer la disponibilité permanente
en cas de coupure électrique.
- Assurer l'entretien et la maintenance de la salle machine et de son contenu.
2. S'ils optent pour le Cloud :
a. un administrateur système pour gérer l'infrastructure est nécessaire.
b. louer juste les ressources nécessaires (exemple: 6 cœurs CPU, 20GB de RAM, 2000GB de
stockage), ces ressources peuvent être augmentées à tout moment sans perturber le
fonctionnement de la plateforme.
Suite à l’étude fais par la startup, il a été décidé d’opter pour la solution IaaS sur le Cloud afin de
réduire le coût de l’infrastructure, pour qu’il puisse rentrer dans le budget dont ils disposent. Chose
qui était prévisible, car on a démontré le gain de coût substantiel qu’on gagne à utiliser le Cloud,
donc c’est sans surprise qu’on a appris leur choix. Et donc c’est tout naturellement qu’on s’est
proposé pour leur déployer la solution adoptée.
Apres avoir accédé à l’interface d’administration d’OpenStack, on peut maintenant créer un projet
qui contient les ressources (CPU, RAM, réseau et espace de stockage) qu’on veut affecter pour cette
startup. On va créer aussi un compte utilisateur, qu’ils vont utiliser pour accéder à leur espace Cloud.
Dans l’interface d’administration, on va créer un nouveau projet pour cette entreprise. Les deux
figures 4.01 et 4.02 ci-dessous montrent un aperçu de cette première étape
53
On remplit les champs comme montré sur la figure 4.02 suivant :
L’onglet « Quota » nous permet de définir les ressources qu’on veut attribuer à la Startup
Informatique, comme montré dans les figures 4.03 et 4.04 suivante puis on clique sur le bouton «
Créer un Projet » :
54
Figure 4.04 : Ressources nécessaires pour le projet
Maintenant on peut visualiser dans la liste des projets déjà existant notre nouveau projet qui se
nomme startup info, ainsi on peut aussi gérer les membres du projet (éditer le projet, afficher
l’utilisation, supprimer le projet…). La figure 4.05 suivant montre bien cette configuration.
55
4.3.2 Création d’un utilisateur
On clique sur « Utilisateurs », puis sur « Créer un Utilisateur » pour créer un utilisateur qui seront
membre de ce projet, il peut exploiter et manipuler les ressources (quotas) qu'on lui a affectés
seulement. On remplit les champs comme montrés ci-dessous, puis on valide.
On clique sur « réseau », puis sur le bouton « Créer un réseau » pour créer un réseau virtuel dédié
au projet Startup Info : On remplit les champs comme montré, puis on clique sur le bouton « Créer
un réseau » :
56
Maintenant pour accéder et exploiter les ressources affectées à cette société, on ferme la session
‘admin’, et on s’identifie avec l’utilisateur membre de ce projet qu’on vient de créer. Dans la page
d’accueil, on peut voir les ressources affectées, et leur taux d’utilisation. On peut aussi exploiter ces
ressources.
On Clique sur « Réseau », puis sur le nom de réseau « réseau startup », On clique sur le bouton «
Créer un sous-réseau » On remplit les informations de sous-réseau, puis on valide.
57
4.3.5 Création d’un routeur virtuelle
On rajoute un routeur virtuel, qui va jouer le rôle d’une passerelle (Gateway) entre le sous-réseau et
l’Internet.
58
4.3.7 Création d’un serveur
Maintenant, il ne reste à la startup qu’à entreposer son application, créer des comptes pour ses clients
et le tour est jouée.
4.4 Conclusion
Nous avons vu dans ce chapitre la solution OpenStack, solution libre sur laquelle nous avons fait
notre étude technique. Nous avons créé grâce à cette solution un Cloud Computing de type IaaS
dédié à une startup informatique, qui désire étendre son champ d’activité, en proposant une
application qu’elle a développé, entre autre une application de gestion de paye, à plusieurs
entreprises privées fort intéressées de déléguer cette tâche à la startup. Pour se faire, deux choix se
sont offerts à eux, mettre en place une infrastructure lourde et très couteuse, ou faire du Cloud, le
choix n’a pas été difficile mais au contraire bien évident. Suite à cela, nous nous sommes occupées
de leur faire l’installation et la configuration d’un Cloud ou ils vont entreposer leur application et
ainsi ils peuvent la faire utiliser par plusieurs clients. Chose qui ne sera que bénéfique à leur
développement et bénéfique aux clients qui se voient satisfaits à moindre coût.
59
CONCLUSION GENERALE
Au cours de ce mémoire, nous avons fait une étude et mise en place d’une solution open source du
Cloud Computing pour une entreprise, on a commencé par donner les définitions de base nécessaires
à la compréhension du Cloud, son architecture, ses différents types (privée, public, hybride) et
services (IaaS, PaaS, SaaS), ensuite on a présenté et détaillé les différentes solutions libres
permettant de mettre en place un Cloud privé en faisant une étude comparatives entre elles, ceci
nous a permis d’avoir une idée précise et complète sur les solutions disponibles du Cloud et surtout
de choisir celle qui nous convient le mieux. Pour finir par installer la solution qu’on a choisi et on a
créé une infrastructure pour une entreprise.
Afin de mettre en place notre solution Cloud « OpenStack » on a débuté par utiliser le formalisme
UML en traçant les diagrammes de cas d’utilisation et de séquences, ceci nous a aidés à définir les
besoins des utilisateurs. Nous avons fait par la suite l’installation et la configuration d’OpenStack
qui nécessite des prérequis matériels et logiciels.
L’étude des besoins d’une startup informatique en espace de stockage, fut la dernière étape de ce
projet. Après lui avoir créé une interface d’administration, nous nous sommes attaqués à la création
d’une infrastructure en tant que service pour cette entreprise, ce dernier été fait par l’intermédiaire
de la création des projets, d’un réseau, d’utilisateurs, et des espaces de stockage.
Ce projet étant très ambitieux, nous nous sommes vite heurtés à de nombreux problèmes, que ce
soit dû aux solutions de Cloud ou à leur configuration et installation, notamment en ce qui concerne
le réseau.
Tous ces problèmes nous ont montré la complexité d'utiliser une telle plateforme, et leurs résolutions
nous a souvent retardé mais nous a amené à expérimenter le mode « investigation », primordial pour
tout ingénieur digne de ce nom, qui propose une solution à tout problème quelques soit sa
complexité.
Ce projet a été pour nous une occasion et une formidable opportunité de découvrir un environnement
informatique nouveau, complexe et vaste, ce qui nous a permis d'acquérir de l'expérience en
administration systèmes et réseaux et d'approfondir nos connaissances dans le domaine de la
virtualisation et du Cloud Computing. Mais et surtout d’acquérir les bons réflexes que doit avoir
tout administrateur réseau.
60
ANNEXE 1
ETAPES D’INSTALLATION ET DE CONFIGURATION D’OPENSTACK
Après avoir introduit les adresses dans le terminal du Linux, on fait redémarrer le service réseaux
avec la commande:
/etc/init.d/nertworking restart
61
echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/kilo main" >
/etc/apt/sources.list.d/cloudarchive-kilo.list
- Apres l’étape de mise à jour du système on fait redémarrer la machine pour que cette mise à
jour soit prise en compte :
sudo reboot
Après, il faut changer le mot de passe de l’utilisateur « guest » dans RabbitMQ server :
rabbitmqctl change_password guestrabbit
- Pendant l’installation de MySQL, le système nous demande de taper un mot de passe qui
sera utilisé pour le compte root de MySQL.
- Puis on modifie la ligne dans les fichiers /etc/mysql/my.conf
[mysqld]
...
bind-address = 0.0.0.0
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
62
On redémarre ensuite le service MySQL pour appliquer ces modifications:
service mysql restart
- Puis on modifie la ligne dans les fichiers /etc/sysctl.conf pour l’activation de l’IP
Forwarding:
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
- Vérification du service :
service keystone status
63
- Redémarrage et synchronisation du service MySQL :
service keystone restart
keystone-manage db_sync
- Création de admin user, admin tenant, puis on définit le rôle de l’admin et le service
tenant, ensuite on ajout l’utilisateur admin au admin tenant et au admin rôle :
64
- Puis on charge le fichier avec:
source creds
# sqlite_db = /var/lib/glance/glance.sqlite
connection = mysql://glance:glance_dbpass@192.168.17.2/glance
[keystone_authtoken]
identity_uri = http://192.168.17.2:35357
admin_tenant_name = service
admin_user = glance
65
admin_password = glance_pass
[paste_deploy]
flavor = keystone
[keystone_authtoken]
identity_uri = http://10.0.0.1:35357
admin_tenant_name = service
admin_user = glance
admin_password = glance_pass
[paste_deploy]
flavor = keystone
66
A1.6 Installation du composant Nova :
- Installation des services de Nova :
apt-getinstall -y nova-api nova-cert nova-conductor nova-consoleauth nova-novncproxy
nova-scheduler python-novaclient nova-compute nova-console
67
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 192.168.17.2
vnc_enabled = True
vncserver_listen = 192.168.17.2
vncserver_proxyclient_address =192.168.17.2
novncproxy_base_url = http://192.168.17.2:6080/vnc_auto.html
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
scheduler_default_filters=AllHostsFilter
[database]
connection = mysql://nova:nova_dbpass@192.168.17.2/nova
[oslo_messaging_rabbit]
rabbit_host = 127.0.0.1
rabbit_password = rabbit
[keystone_authtoken]
auth_uri = http://192.168.17.2:5000
auth_url = http://192.168.17.2:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = nova
password = nova_pass
68
[glance]
host = 192.168.17.2
[oslo_concurrency]
lock_path = /var/lock/nova
[neutron]
service_metadata_proxy = True
metadata_proxy_shared_secret = openstack
url = http://192.168.17.2:9696
auth_strategy = keystone
admin_auth_url = http://192.168.17.2:35357/v2.0
admin_tenant_name = service
admin_username = neutron
admin_password = neutron_pass
- La sortie devrait être quelque chose comme ceci, elle doit afficher des smileys, qui indiquent
que tout marchent bien:
69
Figure A1.01: Vérification de service Nova
- Également exécuter la commande suivante pour vérifier si nova est capable de s'authentifier
avec le serveur Keystone
nova list
70
keystone endpoint-create --service=neutron --publicurl http://192.168.17.2:9696 --adminurl
http://192.168.17.2:9696 --internalurl http://192.168.17.2:9696
[agent]
......
root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf
[keystone_authtoken]
auth_uri = http://192.168.17.2:35357/v2.0/
auth_url = http://192.168.17.2:35357
auth_plugin = password
project_domain_id = default
71
user_domain_id = default
project_name = service
username = neutron
password = neutron_pass
[database]
......
connection = mysql://neutron:neutron_dbpass@192.168.17.2/neutron
[nova]
......
auth_url = http://192.168.17.2:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
region_name = regionOne
project_name = service
username = nova
password = nova_pass
[oslo_concurrency]
......
lock_path = /var/lock/neutron/
[oslo_messaging_rabbit]
......
rabbit_host = localhost
rabbit_userid = guest
rabbit_password = rabbit
rabbit_virtual_host = /
72
- Ouvrez le fichier /etc/neutron/plugins/ml2/ml2_conf.ini et le modifier comme suit :
[ml2]
type_drivers=flat,vlan
tenant_network_types=vlan,flat
mechanism_drivers=openvswitch
[ml2_type_flat]
flat_networks=External
[ml2_type_vlan]
network_vlan_ranges=Intnet1:100:200
[ml2_type_gre]
[ml2_type_vxlan]
[securitygroup]
firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
enable_security_group=True
[ovs]
bridge_mappings=External:br-ex, Intnet1:br-eth1
73
- Synchronisation de la base de données:
neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file
/etc/neutron/plugins/ml2/ml2_conf.ini upgrade kilo
74
A1.8 Installation du composant Horizon :
- Installation des paquets Horizon :
apt-get install -y openstack-dashboard
75
BIBLIOGRAPHIE
[1] Y. Parent, M. Lemaux, C. Fortina, « Cloud Computing », Université Nancy 2IUT Nancy-
Charlemangne, A.U. : 2010-2011.
[3] P. Sempolinski, « Le Cloud Computing, Définition et impact pour les SSII », Windows
Azure, 2012.
[4] J.S. Brian. Jr. Franklin, « Cloud Computing: Technologies and Strategies of the Ubiquitous
Data Center », CRC Press, 2010.
[7] L. F. Noumsi, « Etude et mise en place d’une solution Cloud Computing », école national
supérieur des postes et des télécommunications Toulouse, 2012.
[9] V. Kherbache, « Cloud Computing une nouvelle filière fortement structurante », IUT
Nancy Charlemagne, 2009-2010.
76
[17] I. Gérard, « Cloud Computing : Attentes & Potentiels – Infrastructures (IaaS) et Plates-
Formes (PaaS) », Référentiel de pratiques 2011-2013.
[20] B. P. Rimal, C. Eunmi, I. Lumb, « A taxonomy and survey of Cloud Computing systems »,
In Proceedings of the Fifth International Joint Conference on INC, IMS and IDC, NCM,
Washington DC, USA, IEEE Computer Society, 2009.
[25] J. Pujot, « L'évolution maitrisée vers le IaaS/PaaS », Euro Cloud France, Novembre 2011.
[26] P. Junjie, X. Zhang, Z. Lei, B. Zhang, W. Zhang, L. Qing, « Comparison of several cloud
computing platforms », In Proceedings of the Second International Chalenge, 2012.
[27] H. Koener, « Gestion de service cloud et standards ouverts », Travail de fin d’études
présenté en vue de l’obtention du grade de Master en sciences informatique, 2014.
77
FICHE DE RENSEIGNEMENT
Nom : MANANJARASOA
Prénoms : Onjanohasoavina Joseph Ruphin
Adresse de l’auteur : Caserne GN Batiment 3, Ankadilalana
Antananarivo 101 – Madagascar
Tel : +261 33 07 067 63/ +261 34 37 079 04
E-mail : mananjarasoa2332@gmail.com
Titre du mémoire :
Nombre de pages : 78
Nombre de tableaux : 5
Nombre de figures : 53
Mots clés :
Cloud Computing, Virtualisation, IaaS, OpenStack.
Directeur de mémoire :
Nom : RATSIHOARANA
Prénoms : Constant
Grade : Maitre de conférences
Tel: +261 34 87 822 43
E-mail: ratsihoarana.constant@yahoo.fr
78
RESUME
Le Cloud Computing est un environnement logiciel puissant et flexible qui délègue la gestion du
matériel, et qu'on paie selon la consommation. La migration des applications d'entreprise sur cet
environnement ne cesse de s'accentuer. Une grande partie de ces applications est offerte sous forme
de services Web, qui standardisent l'accès aux logiciels métier via Internet. Le but de notre projet
est de mettre en place une solution Cloud Computing privé pour une entreprise en lui créant une
infrastructure en tant que service.
ABSTRACT
Cloud Computing is a powerful and flexible software environment, which delegates the
management of the equipment and you pay according to consumption. The migration of company
applications on this environment continues to grow. A large part of these applications is available
as web services which standardized access to business software through the Internet. The aim of our
project is to implement a private Cloud Computing solution for a company by creating its
infrastructure as a service.
79