Introduction
Services du
Cloud Computing
Types du Cloud Computing
Avantages du cloud computing
Inconvénients du cloud computing
Solutions du Cloud Computing
Composants d’Openstack
L’installation d’openstack : Devstack
Conclusion
----------------------------------------------------------------------------------------------------------------------------
Introduction
C’est quoi le Cloud Computing :
Le cloud computing, ou l’informatique en
nuage est l'exploitation de la puissance de
calcul ou de stockage de serveurs informatiques distants par l'intermédiaire d'un
réseau, généralement Internet. Ces
serveurs sont loués à la demande, le plus souvent par tranche d'utilisation
selon des critères techniques (puissance, bande
passante, etc.) mais également au forfait.
Le cloud computing se caractérise par sa grande
souplesse : selon le niveau de compétence de l'utilisateur client, il est
possible de gérer soi-même son serveur ou de se contenter d'utiliser des
applicatifs distants en mode SaaS. Selon la définition du National Institute of Standards and Technology (NIST), le cloud computing est
l'accès via un réseau
de télécommunications, à la demande et en
libre-service, à des ressources informatiques partagées configurables. Il
s'agit donc d'une délocalisation de l'infrastructure informatique.
Pour le grand public, le cloud computing se matérialise notamment par
les services de stockage et de partage de données numériques type Box, Drop box, Microsoft OneDrive ou
Apple iCloud sur lesquels les utilisateurs peuvent stocker des contenus
personnels (photos, vidéos, musique, documents…) et y accéder n’importe où dans
le monde depuis n’importe quel terminal connecté.
Principes du
cloud (nuage) :
Le nuage (anglais cloud)
est un ensemble de matériel, de raccordements réseau et de logiciels qui fournissent des services
sophistiqués que les individus et les collectivités peuvent exploiter à volonté
depuis n'importe où dans le monde. Le cloud
computing est un basculement
de tendance : au lieu d'obtenir de la puissance de calcul par acquisition
de matériel et de logiciel, le consommateur se sert de puissance mise à sa disposition
par un fournisseur via Internet.
Les caractéristiques essentielles d'un nuage sont la
disponibilité mondiale en libre-service, l'élasticité, l'ouverture, la
mutualisation et le paiement à l'usage :
· ressources en libre-service : et adaptation automatique à la demande. La capacité de stockage et la
puissance de calcul sont adaptées automatiquement au besoin d'un consommateur.
Ce qui contraste avec la technique classique des hébergeurs où le consommateur
doit faire une demande écrite à son fournisseur en vue d'obtenir une
augmentation de la capacité - demande dont la prise en compte nécessite
évidemment un certain temps. En cloud computing la demande est
automatique et la réponse est immédiate.
· ouverture : les services de cloud computing sont mis à disposition
sur l'Internet, et utilisent des techniques standardisées qui permettent de
s'en servir aussi bien avec un ordinateur qu'un téléphone ou une tablette.
· mutualisation : elle permet de combiner des ressources hétérogènes (matériel, logiciel,
trafic réseau) en vue de servir plusieurs consommateurs à qui les ressources
sont automatiquement attribuées. La mutualisation améliore l'évolutivité et l'élasticité et permet d'adapter automatiquement les ressources
aux variations de la demande.
· paiement à l'usage : la quantité de service consommée dans le cloud est
mesurée, à des fins de contrôle, d'adaptation des moyens techniques et de
facturation.
Le nom « cloud
computing » est né des professionnels de l'informatique qui
recherchaient une désignation pour les nouveaux systèmes informatiques
fonctionnant par l'action conjointe d'éléments disparates réunis indifféremment
de leur localisation géographique et de l'infrastructure sous-jacente. Le nom
vient du nuage (en anglais « cloud ») qui est le symbole
utilisé pour représenter l'Internet dans les diagrammes des réseaux
informatiques.
Services du
Cloud Computing :
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.
IaaS (infrastructure as a service)
En français infrastructure en tant que
service. C'est le service de plus bas niveau. Il consiste à offrir un accès à
un parc informatique virtualisé. Des machines virtuelles sur lesquelles le
consommateur peut installer un système d'exploitation et des applications. Le
consommateur est ainsi dispensé de l'achat de matériel informatique. Ce service
s'apparente aux services d'hébergement classiques des centres de traitement de
données, et la tendance est en faveur de services de plus haut niveau, qui font
davantage abstraction de détails techniques.
PaaS
(platform as a service)
En français plate-forme en tant que service.
Dans ce type de service, situé juste au-dessus du précédent, le système
d'exploitation et les outils d'infrastructure sont sous la responsabilité du
fournisseur. Le consommateur a le contrôle des applications et peut ajouter ses
propres outils. La situation est analogue à celle de l'hébergement web où le
consommateur loue l'exploitation de serveurs sur lesquels les outils
nécessaires sont préalablement placés et contrôlés par le fournisseur. La
différence étant que les systèmes sont mutualisés et offrent une grande
élasticité - capacité de s'adapter automatiquement à la demande, alors que dans
une offre classique d'hébergement web l'adaptation fait suite à une demande
formelle du consommateur.
SaaS
(software as a service)
En français logiciel en tant que service.
Dans ce type de service, des applications sont mises à la disposition des
consommateurs. Les applications peuvent être manipulées à l'aide d'un
navigateur web ou installées de façon locative sur un PC, et le consommateur
n'a pas à se soucier d'effectuer des mises à jour, d'ajouter des patches de sécurité
et d'assurer la disponibilité du service. Gmail est un exemple de tel service.
Il offre au consommateur un service de courrier électronique et le consommateur
n'a pas à se soucier de la manière dont le service est fourni. Autre exemple,
Office 365 propose un ensemble de services en abonnement dont la suite
logicielle Office qui se met automatiquement à jour, l'utilisateur ne se soucie
pas de racheter un nouveau logiciel ou de le mettre à jour. On parle ici de
location de services hébergés par Microsoft. D'autres exemples de logiciels mis
à disposition en Saas sont Google Apps, Office Online ou LotusLive (IBM).
Un fournisseur de software as a service peut
exploiter des services de type Platform as a service, qui peut lui-même se
servir de infrastructure as a service.
Types du Cloud Computing
Le Cloud publique :
Un Cloud public est un service IaaS, PaaS ou
SaaS proposé et hébergé par un tiers (Amazon, Google ou Microsoft), propose un
Cloud public dans lequel n'importe quel particulier ou n’importe quelle
entreprise peut y héberger ses applications, ses services ou ses données.
Le Cloud privé :
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 en
utilisant les technologies telles que la virtualisation pour enfin délivrer,
plus simplement et plus rapidement, des services à la demande.
Le Cloud hybride :
En général, on entend par Cloud hybride la
cohabitation et la communication entre un Cloud privé et un Cloud publique 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).
Avantages du cloud computing
Le cloud computing peut permettre d'effectuer des
économies, notamment grâce à la mutualisation des services sur un grand nombre
de clients. Certains analystes indiquent que 20 à 25 % d’économies
pourraient être réalisées par les gouvernements sur leur budget informatique s’ils
migraient vers le cloud computing. Comme pour la virtualisation,
l'informatique dans le nuage peut être aussi intéressante pour le client grâce
à son évolutivité. En effet, le coût est fonction de la durée de l'utilisation
du service rendu et ne nécessite aucun investissement préalable (homme ou
machine). L'« élasticité » du nuage permet de fournir des services
évolutifs et peut permettre de supporter des montées en charge. Inversement, le
fournisseur a la maîtrise sur les investissements, est maître des tarifs et du
catalogue des offres, et peut se rémunérer d'autant plus facilement que les
clients sont captifs.
La
maintenance, la sécurisation et les évolutions des services étant à la charge
exclusive du prestataire, dont c'est généralement le cœur de métier, celles-ci
ont tendance à être mieux réalisées et plus rapidement que lorsque sous la
responsabilité du client (principalement lorsque celui-ci n'est pas une
organisation à vocation informatique).
Inconvénients du cloud computing
Plusieurs
catégories d'inconvénients existent :
· L'utilisation des réseaux publics, dans le cas du cloud public,
entraîne des risques liés à la sécurité
du cloud. En effet, la connexion entre les postes et les
serveurs applicatifs passe par le réseau internet, et expose à des risques
supplémentaires de cyberattaques, et de violation de confidentialité. Le risque existe pour les
particuliers, mais aussi pour les grandes et moyennes entreprises, qui ont
depuis longtemps protégé leurs serveurs et leurs applications des attaques
venues de l'extérieur grâce à des réseaux internes cloisonnés.
· Le client d'un service de cloud computing devient très
dépendant de la qualité du réseau pour accéder à ce service. Aucun fournisseur
de service cloud ne peut garantir une disponibilité de 100 %.
Par exemple, des défaillances sur les services cloud sont
référencées par l'International Working Group of Cloud Resiliency.
· Les entreprises perdent la maîtrise de l'implantation de leurs données. De ce fait, les interfaces inter-applicatives (qui peuvent être
volumineuses) deviennent beaucoup plus complexes à mettre en œuvre que sur une
architecture hébergée en interne.
· Les entreprises n'ont plus de garanties (autres que contractuelles) de
l'utilisation qui est faite de leurs données, puisqu'elles les confient à des
tiers.
· Les questions juridiques posées notamment par l'absence de localisation précise
des données du cloud computing. Les lois en vigueur s'appliquent,
mais pour quel serveur, quel data center, et surtout quel
pays ?
· Tout comme les logiciels installés localement, les services de cloud
computing sont utilisables pour lancer des attaques (craquage de mots
de passe, déni de service…). En 2009, par exemple, un cheval de Troie a utilisé
illégalement un service du cloud public d'Amazon pour infecter
des ordinateurs.
· Du fait que l'on ne peut pas toujours exporter les données d'un service cloud,
la réversibilité (ou les coûts de sortie associés) n'est pas toujours prise en
compte dans le cadre du projet. Le client se trouve souvent « piégé »
par son prestataire et c'est seulement lorsqu'il y a des problèmes (changement
des termes du contrat ou des conditions générales d'utilisation, augmentation
du prix du service, besoin d'accéder à ses données en local, etc.) qu'il se
rend compte de l'enfermement
propriétaire (vendor lock-in) dans lequel il se trouve.
Solutions du Cloud Computing
Dans le domaine du cloud computing, plusieurs
acteurs sont impliqués : les fournisseurs d’offres publiques et ceux proposant
le système sous forme de logiciels pouvant être employés en privé. Les
solutions du cloud sont ainsi classées en deux grandes catégories : les
solutions propriétaires et les solutions open source.
Les solutions du cloud computing public
Actuellement, trois acteurs potentiels
existent sur le marché du cloud computing public. Windows par sa plateforme
Azure, Google par sa plateforme de développement d’applications AppEngine et
Amazon par ses services EC2 de l’informatique virtuelle.
- Windows Azure
Azure est une plateforme de Microsoft pour
les services PaaS du cloud computing. Il s’agit d’une plateforme de
développement d’applications fournissant les services d’exécution et
d’administration d’applications en offrant les outils nécessaires. Elle permet
aux développeurs de programmer et de stocker directement leurs applications sur
Internet en leur allouant dynamiquement des machines virtuelles de son centre
de données (data center).
L’infrastructure soutenant la plateforme
Azure est basée sur la solution de virtualisation Xen.
- Google AppEngine
AppEngine est une offre de Google pour les
services de type PaaS. Le développement et le déploiement d’applications sur la
plateforme de Google sont rendus possibles grâce à un SDK conçu par Google et
mis à la disposition des utilisateurs afin de leur permettre de développer en
local pour ensuite déployer l’application vers l’Internet. L’idée est de
permettre aux utilisateurs d’employer l’infrastructure de Google pour héberger
leurs applications avec la possibilité de définir le groupe d’utilisateurs de
cette dernière. Ces applications bénéficient de la haute disponibilité des
infrastructures de Google.
- La plateforme EC2 d’Amazon
Les services d’Amazon EC2 (Elastic Compute
Cloud) concernent l’exposition de machines virtuelles pour les activités telles
que l’hébergement, les grilles de calcul ou les tests en réseaux informatiques.
L’utilisation des services d’Amazon est
facturée selon le temps d’utilisation des machines louées.
3.2. Les solutions open source
Les solutions open source du cloud computing
sont destinées au déploiement de l’architecture en privé pour un usage en
interne. Toutefois, les solutions proposées peuvent être utilisées pour fournir
les services du cloud public. Les solutions de cloud privé implémentent
généralement les services IaaS. Leur rôle consiste à gérer un ensemble de
machines physiques et virtuelles dans un réseau local ou une interconnexion de
plusieurs réseaux. L’architecture de supervision des nœuds d’exécution des
machines virtuelles de ces solutions est généralement composée d’un nœud
central appelé cloud controller (CLC), de plusieurs nœuds d’exécution des
services du cloud appelés Node controllers et parfois d’un ensemble de nœuds
intermédiaires de supervision appelés cluster controllers. Les terminologies
utilisées dans les différentes solutions existantes telles que Eucalyptus,
OpenNebula, Nimbus et Openstack peuvent varier mais le principe de
fonctionnement de ces différents nœuds reste approximativement le même.
- Eucalyptus
Eucalyptus est un outil open source issu d’un
projet de recherche de l’université de Californie. Il est développé en C, Java,
Python et est disponible sous deux licences. Une licence GPL(23) gratuite
supportant les hyperviseurs Xen et KVM et une licence commerciale offrant des
fonctionnalités avancées telles que le support de VMware. Il permet de
construire aussi bien les solutions privées du cloud computing que les
solutions publiques. Son grand avantage est qu’il est intégré dans les distributions
Ubuntu et Debian. Eucalyptus offre des interfaces compatibles avec les services
EC2 d’Amazon. Ce qui lui confère la possibilité d’être employé pour les
solutions hybrides de cloud computing. L’architecture d’Eucalyptus est
constituée de quatre composants principaux.
- Le contrôleur de nœud (Node controller NC)
: contrôle l’exécution, et l’arrêt des machines virtuelles présentes sur le
nœud où il est exécuté.
- Le contrôleur de cluster (cluster
controller CC) : collecte les informations sur les différents nœuds d’un
cluster et planifie l’exécution des machines virtuelles sur chaque nœud.
- Le contrôleur de stockage (Warlus) : c’est
le composant qui gère l’accès au service de stockage. Il est souvent intégré au
contrôleur du cloud (CLC).
- Le contrôleur de cloud (CLC) : C’est
le point d’entrée (Front end) des utilisateurs et administrateurs du système.
Il collecte des informations sur les nœuds et planifie leur exécution au
travers des contrôleurs de clusters (CCs). Il expose les services du cloud à
travers une application Web mais également à travers des interfaces compatibles
EC2.
Figure :
Architecture d’Eucalyptus :
- Openstack
OpenStack est un ensemble de logiciels open
source permettant de déployer des infrastructures de cloud computing (infrastructure
en tant que service). La technologie possède une architecture modulaire
composée de plusieurs projets corrélés (Nova, Swift, Glance...) qui permettent
de contrôler les différentes ressources des machines virtuelles telles que la
puissance de calcul, le stockage ou encore le réseau inhérents au centre de
données sollicité.
Le projet est porté par la Fondation
OpenStack, une organisation non-commerciale qui a pour but de promouvoir le
projet OpenStack ainsi que de protéger et d'aider les développeurs et toute la
communauté OpenStack.
De nombreuses entreprises ont rejoint la
fondation OpenStack. Parmi celles-ci on retrouve : Canonical, RedHat, SUSE,
eNovance, AT&T, Cisco, Dell, HP, IBM, Yahoo!, Oracle, Orange, Cloudwatt,
EMC, VMware, Intel.
Historique
En juillet 2010, Rackspace Hosting et la NASA
ont lancé conjointement un le projet open source dans le domaine du cloud computing
sous le nom d'OpenStack.
L'objectif du projet OpenStack est de
permettre à toute organisation de créer et d'offrir des services de cloud
computing en utilisant du matériel standard.
La première version livrée par la communauté,
dont le surnom est Austin, fut disponible seulement quatre mois après.
En 2014, la communauté OpenStack compte 5 600
membres et 850 organisations.
Composants d’Openstack
OpenStack possède une architecture modulaire
qui comprend de nombreux composants le diagramme ci-dessous indique les 7
composants de base :
OpenStack Compute Infrastructure (Nova) :
Ce composant permet la gestion de larges
réseaux de machines virtuelles et d’une architecture redondante et scalable.
Elle fournit une interface d’administration et l’API nécessaire à
l’orchestration du Cloud. Elle inclue les gestions des instances serveurs, et
les contrôle d’accès. Compute ne nécessite pas de pré-requis hardware et est
totalement indépendant de l’hyperviseur. Il repose sur le langage Python, les
Framework Tornado et Twisted ainsi que le protocole ouvert pour les systèmes de
messagerie AMQP (Advanced Message Queuing Protocol).
· OpenStack Compute se décline en plusieurs services :
o nova-api
o nova-compute
o nova-volume (remplacé par Cinder depuis Grizlly)
o nova-network (remplacé par Quantum depuis Folsom et
renommé en Neutron depuis Havana)
o nova-scheduler
o nova-objectstore (obsolète depuis Grizzly)
o nova-novncproxy
o nova-consoleauth
o nova-conductor (depuis Grizlly seulement)
o nova-cert
o nova-console
OpenStack Imaging Service (Glance)
Ce composant fournit les services de
stockages, de découvertes, d’enregistrements et de distributions pour les
images disques de machines virtuelles. Il fournit également une API compatible
REST permettant d’effectuer des requêtes pour obtenir des informations sur les
images hébergées par les différents magasins de stockages.
· OpenStack Imaging Service se décline en plusieurs services
:
o glance-api
o glance-registry
o glance-scrubber
OpenStack Object Storage(Swift)
Ce composant permet la création d’espace de
stockage redondant et scalable pour le stockage de plusieurs pétabits de
données. Il ne s’agit pas réellement d’un système de fichier mais est surtout
conçut pour le stockage à long terme de gros volumes. Il utilise d’une architecture
distribuée offrant plusieurs points d’accès pour éviter les SPOF (Single Point
Of Failure).
· OpenStack Object Storage se décline en plusieurs services
:
o
swift-proxy
o
swift-auth
o
swift-account
o swift-container
o swift-object
Openstack Identity Service (keystone)
Keystone est un annuaire qui centralise
toutes les authentifications et autorisations nécessaires aux multiples
services d'OpenStack. Il peut aussi servir de catalogue de service. Keystone
s'appuie sur un SGBDR soit de type SQLite, MySQL ou PostgreSQL.
Openstack
Administrative Web-Interface (Horizon)
Afin de rendre l'utilisation d'OpenStack plus
user friendly, la communauté a développé une interface web permettant de gérer
facilement la création d'instance, de volume, d'image, etc... Horizon est un
tableau de bord permettant la gestion du cloud OpenStack via une interface web.
Ce dashboard est développé en Python, basé sur le Framework Django, il utilise
le module WSGI d'Apache.
OpenStack Networking(Neutron)
Ce composant permet la mise en place de
réseaux virtuels. Historiquement connu sous le nom de Quantum il fut renommé en
Neutron dans la version d'Havana. Neutron propose de nouvelles technologies
comme VXLAN, Open vSwitch tout en conservant la possibilité d'utiliser les
bridges Linux.
· OpenStack Networking se décline en plusieurs services :
o
neutron-server
o
neutron-dhcp-agent
o
neutron-l3-agent
o neutron-metadata-agent
o neutron-plugin-openvswitch-agent
OpenStack Block Storage(Cinder)
Ce composant fournit un stockage persistant
instances Nova. Historiquement ce module faisait partie de Nova et se nommait
nova-volume, depuis Folsom nova-volume a disparu pour laisser sa place à
Cinder. Cinder peut également être utilisé indépendamment des autres services
d'OpenStack.
· OpenStack Block Storage se décline en plusieurs services
:
o cinder-api
o cinder-scheduler
o cinder-volume
OpenStack Telemetry (Ceilometer)
Ce composant qui peut être ajouter permet de
mesurer la consommation d'un projet sur une plate-forme OpenStack. Ceilometer
peut être utilisé comme outil de facturation. Ceilometer sera certainement
intégré officiellement à la prochaine version d'OpenStack.
· OpenStack Telemetry se décline en plusieurs services :
o
ceilometer-api
o
ceilometer-collector
o
ceilometer-agent-central
o ceilometer-agent-compute
Il y a d'autres composants et dans chaque
version d’autres composants s’ajoutent, comme par exemple :
Database Service : Trove
(Service de Base de donnée à la demande).
Data Processing : Sahara
(Service de Big data grâce à Hadoop).
L’installation d’openstack : Devstack
Pour installer et tester OpenStack
rapidement, il existe un projet baptisé DevStack. C’est un simple script shell
qui va vous construire une machine avec tous les composants nécessaire pour pouvoir
tester et développer sur un environnement OpenStack.
Pour télécharger le script Devstack il
faut installer tout d’abord l’utilitaire git qui permet de télécharger
le script depuis le site de github.
Par la suite on télécharge le script Devstack
de Openstack depuis github comme suite :
La version juno est l'avant dernière version
qui a été sortie en avril 2015.
Une fois Devstack est télécharger, on se
déplace dans le dossier Devstack qui contient le script télécharger, et on
lance le script comme suite :
Le script doit être exécuté avec un
utilisateur non root :
Pendant l’installation le script Devstack va
nous demander les mots de passe de : MySQL, serveur mail, authentification
keystone, d’accès au Dashboard, comme suite :
Une fois l’installation est terminer, on peut
accéder l’interface web de gestion d’openstack pour commencer à crée les images
des systèmes et les machines.
On peut se connecter à l’interface
d’openstack comme suite :
Création des images à partir des images de
systèmes d’exploitation de test qui sont préinstallé :
Conclusion
La virtualisation est un domaine en pleine
croissance, qui évolue très rapidement. Les entreprises peuvent s'en servir
pour différents usages, aux besoins de leur fin. Les différentes solutions de
virtualisation existantes utilisent des technologies variées, en fonction des
buts du projet. Certaines technologies permettent de faire cohabiter plusieurs
systèmes d'exploitation, d'autres cloisonnent un unique système en plusieurs
compartiments indépendants. Certaines s'appuient sur les capacités du matériel
pour améliorer les performances alors que d'autres nécessitent un système
d'exploitation modifié pour cohabiter avec la solution de virtualisation. Ces
technologies ont toutes leurs avantages et inconvénients, et il est important
de faire le bon choix en fonction de l'utilisation et du besoin de l'entreprise
.