République Algérienne
Démocratique et Populaire
Ministère de l'Enseignement Supérieur et de la
recherche Scientifique
École Nationale Polytechnique
d'Oran - Maurice Audin
Mémoire de fin d'étude
Réalisé par : HALLA Assala
En vue de l'obtention du
diplôme de Master 2
Option : Ingénierie et Management des
Systèmes d'Information
IMPLÉMENTATION DES SERVICES DE STOCKAGE D'OBJET ET DE
FICHIERS PARTAGÉS DANS LA SOLUTION CLOUD OPENSTACK
Mémoire soutenu le 16/09/2021 devant le jury
composé de :
Présidente : Mme. DJEBBAR Esma Insaf:
Maître de Conférences classeB
Examinatrice : Mme.
BENDIMERAD Nawel :Maître de Conférence classe B
Encadrante :Mme BOUMEDJOUT Amal :
Maître de Conférences classe A
Co-Encadrant :M. BENDRISS
Lahouari : Responsable du centre de calcul de l'ENPO
Promotion : 2020/2021
Remerciements
Un grand Merci à Dieu le tout puissant de m'avoir
éclairé le chemin et permis de mener à bien ce travail
Au terme de ce projet de fin d'étude, mes vifs
remerciements sont dédiés à tous ceux qui ont
contribué, directement ou indirectement à la réalisation
de ce mémoire de fin d'études.
En premier lieu, je remercie mon encadrante Madame BOUMEDJOUT
Amal de m'avoir aidé,orienter et conduit à soigner constamment la
qualité de ce travail
Mes remerciements s'adressent également à
Monsieur BENDRISS Lahouari d'avoir pris le temps de suivre mon travail et
d'être à l'écoute lors des difficultés techniques
rencontrés dans ce projet.
Mon dernier mot s'adresse aux membres du jury pour l'honneur
qu'ils me font de participer à l'examen de ce travail.
C'est avec une immense fierté que j'adresse mes
remerciements les plus distingués à tous les enseignants du
département SI qui m'ont transmis leur savoir et m'ont assuré la
meilleure des formations
Dédicace
Je dédie ce travail à mes très chers
parents,
Ma mère qui a toujours était présente pour
moi, celle qui m'a soutenu sur tous les plans m'offrant ainsi une
infinité de raisons d'être heureuse
Mon père qui s'est sacrifié pour moi tant
d'années et m'a transféré cet amour de l'informatique
depuis toute petite
Ma soeur qui m'a toujours aidé et encouragé
à faire de mon mieux pour réussir
Mon frère qui réussit toujours à apporter
la graine de joie dans ma vie
Je dédie ce travail à ma petite famille
grâce à laquelle je suis arrivée là où j'en
suis
Résumé
La vitesse avec laquelle le volume des données
informatiques augmente dans les entreprises, les établissements et les
organisations est immense, étant la source de plusieurs
problématiques liées aux stockages, de nombreuses solutions ont
été proposées, dont la plus connue est le Cloud. Ceci dit,
la complexité des modes de stockage ne semble pas être
dépassé, en effet, même en présence d'une
infrastructure virtualisé via un Cloud les technologies de stockage ne
cessent d'augmenter.
Pour répondre à ces besoins en stockage, de
nombreuses organisations développent des systèmes de stockage
dans le Cloud afin de les proposer aux différentes entreprises dont le
nombre qui implémente cette technologie du Cloud ne cesse d'augmenter.
Parmi les systèmes de stockage présents dans le marché on
retrouve les open source : GlusterFS, Ceph, LVM, ZFS, Swift, Cinder,
Manilla, Sheepdog, Kinetic et les propriétaires : IBM et
EMC...etc.
L'objectif de ce mémoire est de traiter la
problématique du stockage en améliorant le système de
stockage d'une solution Cloud privé que nous avons déjà
déployée avec OpenStack. Nous proposons d'implémenter, en
plus du service de stockage en bloc existant, des services de stockage en objet
et en fichier à notre architecture initiale afin de
bénéficier de la diversité de fonctionnalités que
propose ces différents services.
Après une analyse de l'existant, nous avons donc
décidé d'intégrer la combinaison de services : Swift
et Manila au service Cinder présent dans notre Solution Cloud
privé déjà déployée. Cette proposition vise
à rendre le système facilement scalable, à renforcer la
sécurité d'accès aux données, à prendre en
charge tout type de données (structuré, non structurées,
statique, non statiques, binaire, transactionnelle...etc.), à
élargir l'accès jusqu'au services d'OpenStack (auparavant
limité uniquement aux machines virtuelles) et à permettre
l'accès simultanée aux fichiers partagés qui
n'était pas pris en charge avec le système de stockage
initial.
Mots clés: Cloud computing, OpenStack,
Stockage en bloc, stockage en objet, stockage en fichiers, Swift, Cinder,
Manila.
Abstract
The speed with which the volume of computer data is increasing
in companies, institutions and organizations is immense, being the source of
many problems related to storage, many solutions have been proposed, the best
known of which is the Cloud. That said, the complexity of storage modes does
not seem to be outdated, in fact, even in the presence of a virtualized
infrastructure via a Cloud, storage technologies continue to increase.
To meet these storage needs, many organizations are developing
cloud storage systems to offer them to different companies whose number
implementing this cloud technology continues to grow. Among the storage systems
present in the market are open source: GlusterFS, Ceph, LVM, ZFS, Swift,
Cinder, Manilla, Sheepdog, Kinetic and proprietary: IBM and EMC ... etc.
The objective of this thesis is to address the storage issue
by improving the storage system of a private cloud solution that we have
already deployed with OpenStack. We propose to implement, in addition to the
existing block storage service, object and file storage services to our initial
architecture in order to benefit from the diversity of functionalities that
these different services offer.
After an analysis of the existing system, we decided to
integrate the combination of services: Swift and Manila to the Cinder service
present in our already deployed Private Cloud Solution. This proposal aims to
make the system easily scalable, to strengthen the security of data access, to
support all types of data (structured, unstructured, static, non-static,
binary, transactional ... etc.), to expand access to OpenStack services
(previously limited only to virtual machines) and to allow simultaneous access
to shared files that was not supported with the initial storage system.
Key words: Cloud computing, OpenStack, Bloc
Storage, Object Storage, File Storage, Swift, Cinder, Manila.
Table des
matières
Introduction générale
12
Chapitre 1 : Cloud et virtualisation
14
1.1. Introduction
14
1.2. La virtualisation
14
1.2.1. Définitions et concepts
14
1.2.2. Historique de la virtualisation
15
1.2.3. Les principes de la virtualisation
16
1.2.4. Les différents types de la
virtualisation
19
1.2.5. Les avantages et les
inconvénients de la virtualisation
21
1.3. Le Cloud Computing
22
1.3.1. Définitions et concepts
22
1.3.2. Historique du cloud computing
23
1.3.3. Caractéristiques du cloud
24
1.3.4. Les stratégies de
déploiement
25
1.3.5. Les différents modes de
déploiement
29
1.3.6. Avantages et inconvénients du
cloud
32
1.4. Conclusion
33
Chapitre 2 : État de l'art sur les
solutions de stockage dans Openstack
34
2.1. Introduction
34
2.2. Présentation de la solution
OpenStack
34
2.3. Étude et analyse de
l'existant
35
2.4. Synthèse de l'existant
42
2.5. Conclusion
44
Chapitre 3 : Étude analytique et
comparative entre les types de stockages persistant dans la solution
Openstack
45
3.1. Introduction
45
3.2. Les types de stockage dans OpenStack
45
3.2.1. Stockage
éphémère
45
3.2.2. Stockage persistant
46
3.3. Le mode de stockage en objet
« Swift »
46
3.3.1. Vue d'ensemble sur Swift
47
3.3.2. Architecture de Swift :
48
3.4. Le mode de stockage en bloc
« Cinder »
50
4.4.1. Vue d'ensemble sur
« Cinder »
51
4.4.2. Architecture de
« Cinder »
52
3.5. Le mode de stockage en fichier «
Manila » :
53
4.5.1. Vue d'ensemble sur Manila
53
4.5.2. Architecture de Manila
54
3.6. Étude comparative entre les
services Cinder et Swift et Manila
56
3.6.1. Scalabilité et backend
56
3.6.2. Cohérence des
données
57
3.6.3. Accessibilité et
administration
57
3.6.4. Sécurité
58
3.6.5. Redondance et tolérance aux
pannes
59
3.7. Conclusion
60
Chapitre 4 : Implémentation des services
de stockage Swift et Manila
62
3.1. Introduction
62
3.2. Travail réalisé
62
3.2.1. Configuration du service Neutron
63
3.2.2. Implémentation du service de
stockage d'objet (Swift)
68
3.2.3. Implémentation du service de
système de fichiers partagé (Manila)
74
3.2.4. Utilisation privée du stockage
offert par la solution Cloud :
77
3.3. Conclusion
81
Conclusion générale
82
Perspective
84
Bibliographie
85
Annexe A : Commandes d'installations et de
configurations
89
Liste des
figures
Figure 1 : Le concept de la virtualisation
[3]
15
Figure 2 : Historique de la virtualisation [6]
16
Figure 3 : Création des ressources virtuelles
propres à chaque machine virtuelle [5]
17
Figure 4 : Représentation de l'hyperviseur du
type 1 [4]
18
Figure 5 : Représentation de l'hyperviseur de
type 2 [4]
19
Figure 6 : la paravirtualisation [4]
20
Figure 7 : La virtualisation totale et la
paravirtualisation [4]
20
Figure 8 : Vue générale sur le Cloud
[7]
22
Figure 9 : Évolution de l'information vers le
Cloud Computing [14]
24
Figure 10 : L'environnement du Cloud Computing
[15]
25
Figure 11 : Schéma de l'architecture
matérielle du Cloud public [9]
26
Figure 12 : Schéma de l'architecture
matérielle du Cloud privé interne [17]
27
Figure 13 : Schéma de l'architecture
matérielle du Cloud privé externe [17]
27
Figure 14 : Schéma de l'architecture
matérielle du Cloud hybride [9]
28
Figure 15 : Schéma de l'architecture
matérielle du Cloud Communautaire [17]
28
Figure 16 : Les services du Cloud Computing [23]
31
Figure 17 : La répartition des
responsabilités [24]
32
Figure 18 : Le mode de stockage en objet [38]
46
Figure 19 : Organisation logique du service Swift
[39]
47
Figure 20 : Organisation physique du service Swift
[39]
48
Figure 21 : Architecture logique du service Swift
[40]
49
Figure 22 : le mode de stockage en bloc [38]
51
Figure 23 : Architecture logique du service
Cinder [41]
52
Figure 24 : le stockage en mode fichier
[38]
53
Figure 25 : Architecture logique du service Manila
[41]
55
Figure 26 : schéma de l'architecture de
réseau avec le mécanismes Open vSwitch [46]
64
Figure 27 : Topologie simple du réseau
informatique
65
Figure 28 : Topologie graphique du réseau
informatique
66
Figure 29 : Test ICMP & TCP des instances
67
Figure 30 : Présentation du service de
stockage d'objet Swift dans le tableau de bord
68
Figure 31 : création d'un conteneur
69
Figure 32 : chargement des fichiers dans le
conteneur
69
Figure 33 : présentation des fichiers dans le
conteneur privé
70
Figure 34 : La récupération du lien du
conteneur
70
Figure 35 : Liste des objets via le lien du
conteneur - vue par défaut en fichier XML -
71
Figure 36 : téléchargement d'un
fichier depuis un conteneur public
71
Figure 37 : optimisation de la liste des objets avec
des liens cliquables
72
Figure 38 : vue du conteneur depuis un smartphone
non connecté à la plateforme Cloud
72
Figure 39 : présentation du site internet
hébergé dans le cloud
73
Figure 40 : Présentation du service de
fichiers partagés dans le tableau de bord
74
Figure 41 : Création de type de partage
75
Figure 42 : Création d'un partage
76
Figure 43 : Présentation du Partage
76
Figure 44 : Connexion de l'utilisateur au Cloud
depuis un Smartphone
77
Figure 45 : Nom de projet et d'utilisateur
78
Figure 46 : Tableau de bord de l'utilisateur depuis
smartphone
78
Figure 47 : Téléchargement de fichier
dans le conteneur
79
Figure 48 : Liste des objets dans le conteneur de
l'utilisateur
80
Liste des abréviations
AMQP Advanced Message Queuing Protocol
API Application Programming Interface
CERN European Organization for Nuclear
Research
CIFS Common Internet File System
CRUSH Criminal Reduction Utilising Statistical
History
DHCP Dynamic Host Configuration Protocol
HPC High Performance Computer
GPL General Public License
HDFS Hadoop Distributed File System
HTTP Hyper Text Transfer Protocol
IAAS Infrastructure As AService
IDS Inrusion Detection System
IP Internet Protocol
ISCSI Internet Small Computer System
Interface
KVM Kernel-based Virtual Machine
LAN Local Area Network
LDAP Lightweight Directory Access Protocol
LXC Linux Containers
LVM Logical Volume Manager
MAC Multi Access Computer
MySQL My Structured Query Language
NAT Network Address Translation
NAS Network Attached Storage
NASA National Aeronautics and Space
Administration
NFS Network File System
NFV Network Functions Virtualization
OVS Open vSwitch
PAAS Plate-forme As A Service
QEMU Quick EMUlator
RBD RADOS Block Storage
REST REpresentationalStateTransfer
RPC Remote procedure call
SAAS Software As A Service
SAN Storage Area Network
SSH Secure Shell
TCP Transmission Control Protocol
TRC The Research Council
URL Uniform Resource Locator
VLAN VirtualLocal Area Network
VM Virtual Machine
VNC Virtual Network Computing
XML Xtenssible Markup Language
Liste des tableaux
Tableau 1 : Principales caractéristiques
des stratégies de déploiement du cloud [19]
29
Tableau 2 : Synthèse de l'existant
43
Tableau 3 : Tableau de comparaison entre les
services Cinder, Swift et Manila
59
L'énorme croissance des infrastructures des
technologies de l'information (IT) combinée à l'augmentation des
coûts de l'informatique exige une solution de contournement efficace
assurant la réduction des coût associés à ces
infrastructures. De plus, comme la croissance incontrôlée des
données a suscité desinquiétudes pour l'environnement de
l'entreprise, le stockage a été déplacé en dehors
des serveurs vers des environnement virtuels grâce à la
technologie du Cloud Computing.
Le Cloud computing exerce un vrai impacte sur la façon
avec laquelle les informations sont stockées et partagées,
apportant par conséquence un changement majeurau monde économique
et technologique, en effet, des plateformes distribuées ont vu le jour
pour fournir des services au client à la demande, ce dernier est
affecté par le système que génère l'architecture
« pay as you go » adoptée par le Cloud avec laquelle
les ressources sont facturéesselon le modèle et le temps
d'utilisation du Client.
Beaucoup d'organisations informatiqueset fournisseurs de
services se tournent vers la solution OpenStack comme mécanisme
permettant de créer leurs propres Clouds privés ou public.
Openstack fournit un cadre pour proposer des ressources de calcul, de stockage
et de réseau qui peuvent être consommées en tant que
servicesans avoir besoin de gros investissements dans le matériel
physique. OpenStack est actuellement un projet open source et compte des
centaines de contributeurs.
Comme la raison principale du développement du Cloud
est bien le stockage. Il existe en effet trois types de stockage dans le
Cloud : le stockage en objet, en bloc et en fichier. Le stockage en objets
quiconvient aux données statiques non structurés (fichiers
multimédias), en raison de son agilité et de sa nature plate, il
peut être adapté pour prendre en charge des quantités
extrêmement massives de données.Le stockage en mode Bloc est
idéal aux données structurées non statiques, grâce
à sa rapidité il convient mieux aux bases de données qui
nécessitent d'être adapté en permanence, de plus, il offre
un environnement idéal pour le stockage des machines virtuelles. Le
stockage en mode fichiers partagé prend en charge tous les types de
fichiers qu'ils soient structurés ou non offrant la
possibilité d'y accéder même simultanément par
plusieurs machines grâce à la notion de partage.
OpenStack propose divers types de stockages assurés par
plusieurs services, en effet cette plateforme de Cloud a
développé en 2010 un service appelé
« Swift » grâce auquel unstockage en mode objet est
fourni, il a été suivi quelques années plus tard, en 2012,
du service « Cinder » proposant un stockage en mode bloc,
en 2015 le projet OpenStack lance un troisième service de stockage de
fichiers partagés sous le nom de « Manila ».
L'amélioration du stockage au sein d'OpenStack ne se résument pas
uniquement aux services interne, en effet, de nombreuse entreprises ont
développé des alternatives externes qui peuvent être
implémenté à la solution OpenStack, parmi les
systèmes de stockage présents dans le marché on retrouve
les open source : GlusterFS, Ceph, LVM, ZFS, Swift, Cinder, Manilla,
Sheepdog, Kinetic et les propriétaires : IBM et EMC...etc.
proposant chacun des fonctionnalités différentes voire
complémentaires.
Notre travail consiste à réaliser une
étude comparative entre les types de stockage dans le Cloud et à
implémenter un ou plusieurs services de stockages à la solution
Cloud privé que nous avons déployé sous OpenStack dans le
but d'améliorer le système de stockage. Pour cela nous allons
étudier en profondeurles différentes méthodologies de
stockages présentes dans le marchéet plus
précisément celles qui sont open source et qui peuvent
s'intégrer facilement à notre solution OpenStack.
Les objectifs du système de stockage que nous allons
implémenter peuvent se présenter ainsi :
- Garantir la connectivité des instances en
réseau privé et public
- Permettre l'accès depuis l'extérieur au
Cloud
- Fourniture d'un stockage en tant que service au grand
public
- Améliorer la scalabilité et
l'évolutivité du système.
- Agrandir l'accessibilité précédemment
limitée aux machines virtuelles.
- Assurer la protection des données et la
tolérance aux pannes.
- Garantir le stockage d'une diversité de type de
données (Structuré ou non, statique ou non, transactionnelles,
volumineuses, binaires...etc.).
- Fournir un accès simultané aux unités
de stockage.
- Sécuriser l'accès aux données.
Ce mémoire est structuré en quatre
chapitres :
- Dans le premier chapitre, nous présenterons en
détail les deux technologies de Cloud Computing et de la virtualisation,
leurs fonctionnements, leurs types et leurs modes.
- Le second chapitre consiste à réaliserun
état de l'art sur les solutions de stockage Cloud existantsen se basant
sur l'analyse et la synthèse de six (06) support de recherches qui
représentent des sources d'informations fiables à savoir des
articles de recherches, des rapports de conférence, des articles de
journaux ...etc. La présentation des recherches menées sera
suivie d'une analyse des conclusions auxquelles les chercheurs sont
arrivés et d'une synthèse de document.
- Le troisième chapitre présente la solution qui
sera implémentée pour améliorer le système de
stockage, nous présenterons la combinaison de services de stockage qui
répondent aux objectifs cités auparavant ainsi qu'une comparaison
selon plusieurs critères comme : la sécurité, la
cohérence, le Protocol d'accès et le type de données
stockées
- Le dernier chapitre concerne l'installation, la
configuration et l'implémentation des services de stockage ainsi que le
test de fonctionnalités (accès, stockage...etc.) assurées
par ces derniers
Chapitre 1: Cloud et virtualisation
|
1.1.
Introduction
Le volume des données informatiques augmente de
manière exponentielle ce qui exige aux entreprises des moyens
énormes pour gérer leurs infrastructures informatiques. De nos
jours, la priorité principale des entreprises est la possibilité
de réduire les coûts liés à cette gestion
d'infrastructure. Plusieurs techniques ont été utilisées
pour réaliser cette réduction des coûts, parmi lesquels, la
virtualisation, et le Cloud Computing. Ces deux concepts sont différents
mais complémentaires. Dans ce chapitre on détaillera le principe,
les caractéristiques, les avantages et les inconvénients de la
virtualisation ainsi que ceux du cloud pour pouvoir lier leurs usages aux
entreprises.
1.2. La virtualisation
1.2.1.
Définitions et concepts
La virtualisation : représente
une technologie permettant d'exploiter toute la capacité d'une machine
physique en la répartissant entre de nombreux utilisateurs ou
environnements différents.[1] Elle consiste à
dématérialiser le comportement et les données d'un
serveur, de façon à simuler plusieurs instances virtuelles au
sein d'un même matériel physique. Les instances
créées ne doivent pas interférer entre elles et doivent
fonctionner de façon dépendante.
La virtualisation est le processus qui consiste à
créer une version logicielle (ou virtuelle) d'une entité
physique, telle que des applications, des serveurs, des systèmes de
stockage et des réseaux virtuels. Il s'agit du moyen le plus efficace de
réduire les coûts en partageant les ressources, et en
évitant de multiplier l'acquisition de serveurs physiques, tout en
stimulant l'efficacité et l'agilité pour toutes les entreprises,
quelle que soit leur taille.[2]
Lorsqu'un système virtuel n'utilise pas les ressources
d'un système physique, celles-ci peuvent être utilisées par
un autre système virtuel. Dans un environnement non virtualisé,
les ressources du système peuvent être inactives pendant une
période de temps.
La figure suivante illustre le concept de la
virtualisation :
Figure 1 : Le concept de la
virtualisation[3]
La machine virtuelle : Une machine
virtuelle est responsable de la simulation d'une machine physique.Un
système d'exploitation est fait pour s'exécuter sur une
architecture d'ordinateur particulière (type de processeur, drivers
spécifiques, langage assembleur...). Par conséquent, le
système d'exploitation a des restrictions matérielles qui doivent
être respectées pour terminer son travail.Une machine virtuelle
c'est aussi une couche de logiciel qui fournit un ensemble d'instructions au
système d'exploitation qu'elle héberge. Cet ensemble
d'instructions permet au système d'effectuer un accès
matériel au matériel virtuel (matériel
émulé). La machine virtuelle convertit et redirige ensuite ces
appels vers le système hôte pour les exécuter sur du
matériel réel. [4] Aujourd'hui, pour qu'un ordinateur puisse
héberger plusieurs machines virtuelles de façon optimale, il est
nécessaire qu'il soit composé de ressources matérielles
suffisamment puissantes.
En résumé, la virtualisation consiste à
utiliser les technologies de l'information et de la communication,
matérielles et logicielles, dans le but d'héberger plusieurs
systèmes d'exploitation différents sur une unique machine
physique [5].
1.2.2. Historique de
la virtualisation
La virtualisation remonte aux années 1960. À
l'époque, c'est la firme IBM qui créé le premier
système de virtualisation de serveur. Dans ce contexte, l'informatique
est peu présente et les rares sociétés qui
possèdent des systèmes informatiques sont équipées
de gros calculateurs, les Mainframe. Déjà à cette
époque, les soucis d'optimisation des ressources matérielles
d'une machine se posent. En effet, les supers calculateurs sont parfois sous
utilisés. IBM développe alors un produit VM/CMS (Virtual Machine
/ Conversational Monitor System), un système de virtualisation serveurs.
Au cours des années 80-90 apparaît l'architecture x86 et les PC se
déploie auprès d'un grand nombre d'utilisateurs. Le besoin de
virtualiser pour optimiser les machines se fait moins sentir. Mais, dans les
années 90-2000, VMware réussi à virtualiser un poste x86.
Ceci ouvre la porte à plus de possibilité et relance l'envie pour
les sociétés informatiques de développer de nouvelles
fonctionnalités pour optimiser et offrir plus de flexibilité. A
l'heure actuelle, la virtualisation est très connue. On entend parler de
virtualisation de serveur, de VirtualBox, mais aussi de virtualisation de poste
de travail, de VDI, et de virtualisation dans les jeux-vidéos avec les
émulateurs. [5]
Figure 2 : Historique de la
virtualisation[6]
1.2.3. Les principes
de la virtualisation
La virtualisation suit deux principes de base, à savoir
le cloisonnement et la transparence [6]:
· Le cloisonnement : Chaque
système d'exploitation fonctionne indépendamment et ne peut en
aucun cas interférer.
· La transparence : L'exécution
en mode virtuel ne modifie pas le fonctionnement du système
d'exploitation et des applications.
Le principe de la virtualisation repose sur le
mécanisme suivant :
· Système hôte : il
s'agit d'un système d'exploitation simple installé sur un seul
serveur physique. Le système hôte sera utilisé pour
accueillir plusieurs autres systèmes d'exploitation via un logiciel
appelé hyperviseur. [5]
· L'Hyperviseur : est une sorte de
logiciel de virtualisation qui peut être directement installé sur
le système d'exploitation principal ou le système d'exploitation
hôte, de sorte que plusieurs environnements fermés et
indépendants peuvent être créés. Ces environnements
peuvent également héberger d'autres systèmes
d'exploitation (également appelés systèmes
invités). [5]
Les environnements indépendants ainsi
créés grâce à l'hyperviseur sont des machines
virtuelles.
La figure suivante montre la façon avec laquelle les
ressources virtuelles de chaque machine virtuelle (VM) sont créer.
Figure 3 : Création des ressources virtuelles
propres à chaque machine virtuelle[5]
Les types des hyperviseurs :
Nous retrouvons deux types d'hyperviseurs que nous allons
citer ci-dessous :
· Hyperviseurs de type 1 : Ils sont
particulièrement utiles dans les architectures de réseaux de
grandes entreprises qui doivent optimiser les coûts et la maintenance,
tout en améliorant la robustesse aux pannes. Celui-ci s'exécute
directement sur la plate-forme matérielle sans système
d'exploitation intermédiaire. Il gère l'accès à
l'architecture du noyau du système d'exploitation invité
Matériel de base. Pour cela, vous pouvez exécuter plusieurs
systèmes d'exploitation Presque directement sur le matériel, sans
dépendre du système d'exploitation hôte [5]. Les principaux
hyperviseurs de type1 sont les suivants :
· Vmware ESXI
· Microsoft Hyper-V
· Xen
La figure suivante illustre l'hyperviseur de type 1 :
Figure 4 : Représentation de l'hyperviseur du
type 1 [4]
· Hyperviseurs de type 2 : Ils
conviennent vraiment aux petites infrastructures. Généralement,
ils sont adaptés aux situations où vous ne disposez que d'une
seule machine et que vous souhaitez effectuer des tests multiplateformes
(applications, systèmes d'exploitation, communications ...). Les
hyperviseurs de type 2, ou hosted hypervisor (hyperviseur
hébergé), est le plus facile à mettre en place. Il
s'installe comme n'importe quelle application, qui se situe au-dessus de l'OS
hôte. Le système d'exploitation contrôle l'accès au
matériel physique. L'hyperviseur agit comme un système de
contrôle entre le système d'exploitation hôte et les
systèmes d'exploitation invités. Il permet, une fois
installé, de créer des VMs indépendantes de l'OS
hôte [5]. Les principaux hyperviseurs de type 2 sont les suivants :
· Oracle VirtualBox
· VMWare Workstation (Player et Pro) et VMware Fusion
(pour Mac)
· Microsoft VirtualPC (plus maintenu depuis 2011).
La figure suivante illustre l'hyperviseur de type 2 :
Figure 5 : Représentation de l'hyperviseur de
type 2 [4]
1.2.4. Les
différents types de la virtualisation
Pour pouvoir faire tourner différents systèmes
d'exploitation simultanément sur un même matériel, les
hyperviseurs utilisent différentes technologies de virtualisation, les
plus utilisées sont : la virtualisation complète (Full
Virtualization) et la paravirtualisation
(Paravirtualization).
La virtualisation complète : On parle
de virtualisation complète lorsque le système d'exploitation
invité n'a pas conscience d'être virtualisé. L'OS qui est
virtualisé n'a aucun moyen de savoir qu'il partage le matériel
avec d'autres OS. Ainsi, l'ensemble des systèmes d'exploitation
virtualisés s'exécutant sur un unique ordinateur, peuvent
fonctionner de manière totalement indépendante les uns des autres
et être vu comme des ordinateurs à part entière sur un
réseau. [4]
La paravirtualisation : Par opposition
à la virtualisation, on parle de paravirtualisation lorsque les
systèmes d'exploitation doivent être modifiés pour
fonctionner sur un hyperviseur de paravirtualisation. Les modifications sont en
fait des insertions de drivers permettant de rediriger les appels
système au lieu de les traduire. [4]
Le mécanisme de redirection des appels système
est expliqué par la figure ci-dessous :
Figure 6 : la paravirtualisation [4]
Le contrôle d'un ou plusieurs matériel(s) est
donné à un des OS virtualisé (celui qui contient le driver
backend), ici le système d'exploitation 1. Une fois cela compris, il
sera simple d'imaginer que l'OS 2, qui souhaite accéder au hardware,
devra passé par son driver front end qui redirigera les appels
système vers l'OS 1. L'inconvénient de cette technique est donc
la dépendance d'un OS virtualisé vis à vis d'un autre qui
se créé par ce mécanisme de driver. En effet si l'OS 1
tombe en panne, l'OS 2 ne pourra plus accéder au matériel. [4]
La figure suivante montre la différence entre la
paravirtualisation et la virtualisation :
Figure 7 : La virtualisation totale et la
paravirtualisation[4]
1.2.5. Les avantages
et les inconvénients de la virtualisation
Parmi les avantages et les inconvénients de la
virtualisation nous pouvons citer ce qui suit :
Les avantages de la virtualisation :
1. Utilisation optimale des ressources d'un parc de machines
(distribution de machines virtuelles selon la charge respective sur la machine
physique).
2. Installer, tester, développer, interrompre et
redémarrer sans interruption Système d'exploitation
hôte.
3. Isolation des différents utilisateurs
simultanés d'une même machine.
4. Allocation dynamique de la puissance de calcul en fonction
des besoins de chaque application à un instant donné.
Les inconvénients de la virtualisation :
1. L'accès aux ressources des serveurs hôtes via
la HAL (couche d'abstraction matérielle) nuit aux performances, et
l'exécution de n'importe quel logiciel "virtualisé" consommera
davantage de ressources qu'en mode natif.
2. En cas de panne d'un serveur hôte, l'ensemble des
machines virtuelles hébergées sur celui-ci seront
impactées. Mais la virtualisation est souvent mise en oeuvre avec des
redondances, qu'elle facilite.
1.3. Le Cloud Computing
1.3.1.
Définitions et concepts
Figure 8 : Vue
générale sur le Cloud[7]
Le cloud est un grand réseau interconnecté de
plusieurs serveurs qui produisent des services à différents
utilisateurs, c'est aussi un modèle permettant l'accès à
un réseau partagé de ressources configurables (p. ex.,
réseaux, serveurs, stockage, applications et services) qui peuvent
être rapidement fournis et publiés avec un minimum d'efforts de
gestion ou d'interaction avec les fournisseurs de services.[8]
Le cloud est devenu une solution fréquemment
utilisée pour fournir un accès facile et à moindre
coût aux ressources informatique externalisées, de nombreuses
organisations (centres de recherche, entreprises ...etc.)
bénéficient du Cloud pour héberger leurs applications en
leur permettant l'exploitation de ces dernières directement en
ligne.[9]
Grace à la virtualisation, le Cloud computing est
capable de traiter avec la même infrastructure physique une grande
clientèle avec des besoins informatiques différents.
Contrairement aux paradigmes (Clusters et Grid computing)1(*) le Cloud n'est pas
orienté application mais plutôt orienté service
[10][11].
1.3.2. Historique du
cloud computing
Dans un speech de MIT en 1960 John McCarthy a indiqué
la possibilité de délivrer les matériels,
équipements et les installations informatiques aux utilisateurs sous
forme de service, ce fut donc la première énonciation du concept
du cloud qui a évolué dans le temps.[12]
En 1999 Salesforce l'entreprise spécialisé dans
le CRM2(*) (Customer
Relationship Management) ou gestion de relation client a commencé la
distribution des applications aux clients à travers un site web.[13]
En 2002 Amazon a lancé Amazon Web Services offrant
ainsi les services de stockage et de calcul. L'entreprise avait constaté
une augmentation des achats en ligne et a donc opté pour une solution
cloud, qui n'étais pas clairement défini à
l'époque, mais qui se résumait en une location des
capacités informatiques disponibles à la demande et accessible
via Internet, en réduisant ainsi la surcharge des serveurs
dédié au commerce en ligne.[12]
En 2009 de nombreuses grandes entreprises tels que Google,
Microsoft, HP, Oracle ont commencer à proposer des services cloud.
De nos jours toutes les personnes utilisant internet sont
certainement en train d'utiliser les services du cloud computing dans la vie
quotidienne. Par exemple Google Photos, Google Drive, ICloud ...etc. La vision
du futur du Cloud est clairement définie, le cloud computing deviendra
une nécessité basique pour toutes les industries de l'information
technologique.
La figure suivante résume l'évolution de
l'informatique vers le Cloud Computing selon Nicholas Carr [14].
Figure 9 : Évolution de l'information vers le
Cloud Computing [14]
1.3.3.
Caractéristiques du cloud
Dans cette section nous allons décrire les
différentes caractéristiques du cloud qui selon l'institut
national des Standards et de la technologie (NIST) se résument en cinq
formes citées ci-dessous [8]:
1. Un libre-service à la
demande :
La demande des ressources informatiques par le client peut se
faire à tous moments et sera fournie sans nécessitée
d'interaction avec le fournisseur de service.
2. Un accès universel :
Les capacités fournies sont accessibles via le
réseau, les accès qui eux reposent sur des mécanismes
standards et peuvent être initiés par le client de
différentes manières : mobile, tablettes, client
léger, client lourd, etc.
3. La mise en commun de ressources :
Les ressources informatiques mises à disposition sont
communes à tous les clients et partagées entre eux de
façon dynamique suivant la demande, sans qu'ils sachent exactement
où se situe la ressource demandée.
4. Une élasticité rapide :
Les ressources allouées sont automatiquement
ajoutées ou libérées, dans certains cas de façon
automatique, en fonction des besoins du moment. Selon le client ces ressources
fournies paraissent comme étant illimitées et disponibles
à tout moment et à n'importe quelle quantité.
5. La mesure de service fourni :
Les systèmes du cloud contrôlent et optimise
l'utilisation des ressources automatiquement, ces dernières sont
contrôlées, optimisés et parfois facturer à
l'usage.La figure suivante montre l'environnement du Cloud Computing.
Figure 10 : L'environnement du Cloud Computing
[15]
1.3.4. Les
stratégies de déploiement
Le cloud peut être déployé en utilisant
les stratégies citées ci-dessous :
Le Cloud Public :Le cloud public est une
stratégie de déploiement qui consiste à héberger
des services Cloud dans des datacenter appartenant à un fournisseur de
service tiers, le terme « public » ne signifie pas
« gratuit » or qu'il peut être un peu coûteux.
Les données d'un utilisateur ne sont pas visibles contrairement à
ce que le mot « public » pourra signifier, les fournisseurs
de cloud public contrôle l'accès aux données en utilisant
le mécanisme de contrôle d'accès. [9]. Le Cloud public
offre un moyen élastique et économique pour déployer des
solutions.Parmi les fournisseurs de services Cloud gratuits nous
retrouvons : Amazon Elastic Compute Cloud (E), Sun Cloud, IBM's Blue
Cloud, Google App Engine, windows Azure Services Platform.[16]. La figure
suivante illustre l'architecture matérielle d'un Cloud public :
Figure 11 : Schéma de l'architecture
matérielle du Cloud public[9]
Le Cloud Privé : Le cloud privé est un
réseau informatique utilisé en exclusivité par
l'entreprise, les données et les processus sont gérés au
sein de l'organisation sans les restrictions de la bande passante du
réseau, les risques de sécurité que peut présenter
le Cloud public, de plus l'accès est restreint à un nombre
limité des utilisateurs, ce qui améliore la
sécurité et la résilience.Le Cloud privé peut
être géré par l'organisation elle-même comme par un
tiers, mais ne peut être utilisé que par cette organisation. Nous
pouvons donc distinguer deux types de Cloud privé : le Cloud
privé interne et le Cloud privé externe. La figure suivante
montre le schéma de l'architecture matérielle d'un cloud
public.
· Le Cloud privé interne :
C'est un Cloud qui est géré et utilisé au sein de
l'organisation sur des infrastructure lui appartenant.La figure suivante
illustre le cloud privé interne
Figure 12 : Schéma de l'architecture
matérielle du Cloud privé interne[17]
· Le Cloud privé externe :
C'est un Cloud utilisé par l'organisation mais
hébergé chez un prestataire. La figure suivante détaille
le schéma matériel du Cloud privé externe
Figure 13 : Schéma de l'architecture
matérielle du Cloud privé externe[17]
Le Cloud Hybride :Le Cloud hybride est
un environnement Cloud qui combine les deux infrastructures des Cloud
privés et Cloud publics connectées entre elles par un
système d'orchestration, l'organisation conserve les services et les
données sensibles sous son contrôle dans un Cloud privé et
héberge les informations non critiques dans un Cloud public [9] . La
figure suivante montre le schéma de l'architecture matérielle du
Cloud hybride.
Figure 14 : Schéma de l'architecture
matérielle du Cloud hybride[9]
Le Cloud Communautaire : Le Cloud
communautaire représente un espace Cloud où plusieurs
organisations partagent des ressources et des données qui sont
utilisées uniquement par ces organisations.Parmi les Cloud communautaire
existe la GSA, Amadeus, CMed, DARVA. Par exemple, Amadeus qui est le principal
fournisseur de solutions informatiques à l'industrie du tourisme et du
voyage, a été créé par Air France, Lufthansa,
Iberia et SAS.[18]
Figure 15 : Schéma de l'architecture
matérielle du Cloud Communautaire[17]
Le tableau ci-dessous compare les stratégies de
déploiement citées auparavant selon plusieurs critères (La
propriété, le contrôle, le coût, la localisation et
la sécurité) [19]
Tableau 1 : Principales caractéristiques
des stratégies de déploiement du cloud[19]
Stratégie de déploiement
|
Propriété
|
Control
|
Coût
|
Localisation
|
Sécurité
|
Le Cloud public
|
Un tiers
|
Un tiers
|
Faible
|
Hors site
|
Faible
|
Le Cloud privé
|
Organisation / tiers
|
Organisation / tiers
|
Élevé
|
Local au site
|
Élevé
|
Le Cloud hybride
|
Les deux
|
Les deux
|
Moyen
|
Local au site et Hors site
|
Moyen
|
Le Cloud communautaire
|
Organisation / tiers
|
Organisation / tiers
|
Élevé
|
Local au site et Hors site
|
Élevé
|
1.3.5. Les
différents modes de déploiement
Dans cette section du chapitre nous allons étudier les
différents modes de déploiement. Le Cloud peut être
déployer en trois modes différents que nous pourrons nommer
« les services du cloud » qui sont SaaS PaaS et IaaS :
Software-as-a-service (SaaS)
Software-as-a-service (SaaS) ou application fournie comme
service, est un des trois services du Cloud qui consiste à
héberger des applications avec toutes les données
nécessaires à leur bon fonctionnement dans un Cloud et les
fournir par la suite aux utilisateurs à travers le réseau
Internet (l'utilisateur utilise un client léger via un navigateur web)
sous forme de service à la demande, l'entreprise n'achète donc
pas toutes les applications mais plutôt paie par utilisation.[20]
Les applications fournies comme services peuvent prendre
plusieurs formes comme des applications métiers, de
comptabilité, des ERP (Entreprise Ressources Planification), de
facturation, de la gestion de contenu (CM), de la gestion des ressources
humaines (GRH), de la gestion de la relation client (CRM).
Parmi les exemples des Software-as-a-service BPOS, Google
Apps, Salesforce.com ...etc. [21]
Les avantages du Software-as-a-service
(SaaS) :
· Le fournisseur se charge de la maintenance,
l'installation
· Non nécessité d'achat de licence
· Accessible via un abonnement et depuis tous les
ordinateurs
Les inconvénients du Software-as-a-service
(SaaS) :
· Applications génériques qui ne sont pas
toujours appropriées pour une utilisation
· Manque de sécurité
· Dépendance des prestataires
Platform-as-a-service (PaaS)
Platform-as-a-service (PaaS) ou plateforme fournie en tant que
service, dans ce type de cloud le fournisseur héberge dans un cloud un
environnement permettant aux utilisateurs de développer, déployer
et exécuter des applications en utilisant les outils matériels et
les ressources du fournisseur via le réseau
Internet.[22] Le PaaS est aussi un service fourni à la demande, le
paiement se fait donc par utilisation de cet environnement fourni
Les avantages de la Platform-as-a-service
(PaaS) :
· Le fournisseur se charge de la maintenance et de
l'installation
· Développement rapide et à bas
coût.
· Déploiement privé ou public.
Les inconvénients de la Platform-as-a-service
(PaaS) :
· Développement limité au langage et outils
du fournisseur du service. Professionnelle (ex : Python ou Java pour Google
AppEngine, NET pour Microsoft Azure, propriétaire pour force.com)
[16]
· Absence du contrôle des machines virtuelles
sous-jacentes.
· Convient uniquement aux applications Web.
Infrastructure-as-a-service (IaaS)
Il s'agit de la mise à disposition, à la
demande, de ressources d'infrastructures dont la plus grande partie est
localisée à distance dans des Datacenters. L'IaaS permet
l'accès aux serveurs et à leurs configurations pour les
administrateurs de l'entreprise. Le client a la possibilité de louer des
clusters, de la mémoire ou du stockage de données. Le coût
est directement lié au taux d'occupation. Une analogie peut être
faîte avec le mode d'utilisation des industries des commodités
(électricité, eau, gaz) ou des Télécommunications.
Les cibles sont les responsables d'infrastructures informatiques. Amazon E est
le principal qui propose ce genre d'infrastructures. Eucalyptus est un exemple
d'infrastructure. [16]
Les avantages de l'Infrastructure-as-a-service
(IaaS) :
· Permet d'offrir des capacités de stockage
infinies et totalement flexibles au client.
· Contrôle total des systèmes
(administration à distance par SSH : Secure Shell ou Remote
Desktop, RDP).
· Personnalisation.
Les inconvénients de
l'Infrastructure-as-a-service (IaaS) :
· Demande pour les acteurs du Cloud des investissements
très élevés
· Besoin d''un administrateur système pour les
solutions de serveurs classiques sur site.
· Problème de la sécurité.
La figure suivante montre les différents services du
Cloud Computing et ses utilisateurs.
Figure 16 : Les services du Cloud
Computing[23]
Pour mieux illustrer la différence entre les services
du Cloud Computing nous allons découvrir dans la figure suivante la
réparation des responsabilités :
Figure 17 : La répartition des
responsabilités [24]
1.3.6. Avantages et inconvénients du cloud
Nous pouvons tirer les avantages et les inconvénients
que présente le Cloud computing selon différents
critères.
Les avantages du Cloud :
· Un démarrage rapide : Le cloud
computing permet de tester le business plan rapidement, à coûts
réduits et avec facilité.
· L'agilité pour l'entreprise :
Résolution des problèmes de gestion informatique
simplement sans avoir à vous engager à long terme.
· Un développement plus rapide des
produits : Réduisons le temps de recherche pour les
développeurs sur le paramétrage des applications.
· Pas de dépenses de capital :
Plus besoin des locaux pour élargir vos infrastructures
informatiques.
Les inconvénients du Cloud :
· La bande passante peut faire exploser votre
budget : 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êmes
plutôt que de payer quelqu'un d'autre pour s'en charger.
· Les performances des applications peuvent
être amoindries : Un Cloud public n'améliorera
définitivement pas les performances des applications.
· 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
· Taille de l'entreprise : Si votre
entreprise est grande alors vos ressources sont grandes, ce qui
inclut une grande consommation du cloud. Vous trouverez peut-être
plus d'intérêt à mettre au point votre 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.
1.4. Conclusion
Dans ce chapitre nous avons présenté le principe
de la virtualisation et son ampleur dans le monde informatique. Cette ampleur
augmente de plus en plus à causes des avantages considérables que
les entreprises acquièrent via cette technologie. En effet la
virtualisation est un moyen efficace qui permet la réduction des
coûts en minimisant l'acquisition d'un nombre important de serveurs. Par
ailleurs, le fait de posséder moins de machines physiques réduit
considérablement l'espace des locaux de l'entreprise et garantie un gain
considérable en énergie. De plus la facilité du
déploiement et la rapidité de la gestion des machines virtuelles
ont permis la réduction du temps ainsi que du coût
d'administration. Néanmoins, l'augmentation immense de la taille des
données ne se contente pas du principe de la virtualisation seulement
mais permet d'étendre la sauvegarde de données sur le Cloud sans
pour cela s'en passer de la technologie de la virtualisation. La virtualisation
permet de réaliser une fondation du Cloud Computing, car elle permet
à ce dernier de traiter avec la même infrastructure physique une
grande clientèle avec des besoins informatiques différents. En
résumé, le Cloud s'appuie sur la technologie de virtualisation
pour atteindre le but de fournir des ressources informatiques selon
l'utilité de façon dynamique.
Chapitre 2 :
État de l'art sur les solutions de stockage dans Openstack
|
2.1. Introduction
La forte augmentation des données chez les entreprises
ou même chez des particuliers fait sujet à de nombreux
problématique en termes de stockages tels que le manque du
matériel de stockage, la gestion des informations internes massives et
les coûtsélevés liés à la maintenance. C'est
pourquoi le stockage dans le cloud est l'un des sujets les plus traité
en recherche. Pour répondre à ces besoins en stockage, de
nombreuses organisations développent des systèmes de stockage
dans le Cloud afin de les proposer aux différentes entreprises dont le
nombre qui implémente cette technologie du Cloud ne cesse d'augmenter.
Parmiles systèmes de stockage présents dans le marché on
retrouve les open source : GlusterFS, Ceph, LVM, ZFS, Swift, Cinder,
Manilla, Sheepdog, Kinetic et les propriétaires : IBM et EMC...etc.
De nombreux chercheurs ont travaillé sur ces types de plateforme de
stockage cloud dans lesquels d'énormes données numériques
(structurés, semi structurés ou non structurés) sont
stockés et contrôlés à distance et enfin
récupérer via le réseau Internet. Dans ce qui suit nous
allons présenter la solution OpenStack et les différentes
recherches qui ont été menées sur les plateformes de
stockages les plus utilisé de nos jours, en tirer des conclusions et des
leçons pour ensuite comparer entre eux en profondeur en respectant des
critères bien précis et importants comme : la
cohérence, les méthodes de placement de données, les
opération de lecture et d'écriture, la sécurité, le
type de stockage proposé, le mieux reste de trouver la ou les meilleures
plateforme de stockage à implémenter dans notre Cloud
privé déployé sous OpenStack.
2.2. Présentation de la solution OpenStack
OpenStack est une plate-forme de cloud computing
développée par le fournisseur de services d'hébergement
Rackspace et la NASA pour aider les fournisseurs de services cloud et les
entreprises à créer des services d'infrastructure cloud [25]. Le
projet OpenStack pourrait être considéré comme un
système d'exploitation cloud. Toute organisation ou tout particulier
peut créer son propre environnement de cloud computing (IaaS)
basé sur OpenStack. Openstack permet la gestion du calcul, du stockage
et du réseau à travers une interface web et visant à
créer une plateforme de Cloud qui soit open source flexible et
élastique. L'architecture d'OpenStack propose de nombreux services dont
les plus importants sont : le service de calcul (Nova), service
d'identité (Keystone), service d'Image (Glance), service de
réseau (Neutron), service de stockage en objet (Swift), service de
stockage en bloc (Cinder), le tableau de bord (Horizon)[26]
Figure 27 : Architecture des services
d'OpenStack[25]
2.3. Étude et analysede l'existant
Les plateformes de stockage dans le Cloud en existe beaucoup,
certains mieux que les autres et d'autres complémentaire qui peuvent
donc être implémentés et cohabités dans le
même système. Après plusieurs lectures approfondie une
sélection d'article semblait potentiellement intéressante
à aborder dans ce travail qui touchait nécessairement à
ces plateformes de stockage open source dans le Cloud : Swift, Manilla,
Cinder, Ceph, GlusterFS et Sheepdog. Dans ce qui suit nous présenterons
les recherches effectuées et la conclusion tiré des supports de
recherches [27][28][29][30][31][32]pour chacune des plateformes de stockage.
Nous discuterons la combinaison de celles que leur implémentation dans
notre plateforme Cloud est intéressantes.
Les recherches qui ont été menéesau sein
du département IT de l'université des sciences appliqué
sur les établissements d'enseignement supérieur montrent le
développement exponentiel de l'utilisation des données
informatiques au sein de ces établissements provocant ainsi deux
problématiques majeures lié principalement à la
fourniture des ressources informatiques via le matériel physique. En
constatant le changement du monde informatique par le biais de la technologie
du Cloud qui transforme la façon dont fonctionne les datacenter (centres
de traitement de données), de nombreux établissements
d'enseignement supérieur y réfléchissent pour tirer parti
de son potentiel, l'utilité de son implémentation dans
l'infrastructure réside dans sa capacité à fournir des
ressources matérielles virtuelles à savoir des serveurs, des
routeurs et des réseaux avec un mécanisme standard pour leurs
gestion et leurs distributions. Le travail présenté dans la
source [27] qui fait d'ailleurs parti du projet fondé par The
Research Council (TRC) présente une conception et une mise en
oeuvre d'un prototype de Cloud privé pour les établissement
d'enseignement supérieures en utilisant la solution OpenStack qui
fournit une IaaS, permettant ainsi aux étudiants et aux chercheurs de
travailler avec des machines virtuelles en créant leurs propres
ressources virtuelles comme les serveurs, les routeurs et les topologie des
réseaux, cette solution offre la possibilité de faire des
expériences dans un environnement sandbox(environnement de test
pour logiciels ou sites web). Lorsque nous prêtons attention à
l'architecture du déploiement qui finalement est censé
répondre à la problématique de stockage nous remarquons
qu'en plus des services primaires d'OpenStack : Identité, Image,
Réseau, Calcul, Tableau de bord, existe deux autres services de stockage
Cinder pour le stockage en bloc et Swift pour le stockage en objet, nous nous
intéressons plus particulièrement à cette partie du
Cloud : le stockage. Ce que nous pourrons conclure de ce travail est que
les deux services de stockage Cinder et Swift ont chacun leurs propres
fonctionnalités qui peuvent être complémentaire pour
assurer une bonne gestion de stockage dans le Cloud.
La source [28]partage les idées du travail
élaboré dans le projet du TRC et se focalise principalement sur
le service Swift qui propose un stockage en objet. Ce travail exploite
complètement les solutions open source existantes pour
accélérer l'effort de développement et construit un
prototype local de Cloud basé sur base d'une architecture de service de
stockage cloud en Objet (COS3) que des entreprises et des organisations peuvent
se l'approprier. L'architecture COS3 est flexible, simple et modulaire avec une
conception hiérarchique composée de trois couches : stockage
de données, transformation et routage de données, accès
aux données. L'article souligne grandement l'utilité du service
de stockage choisi en expliquant que Swift fournit un stockage rentable,
évolutif et redondant grâce à l'utilisation des clusters,
permet la prise en charge des application web et mobiles ainsi que la
sauvegarde et l'archivage actif des données qui peuvent être
récupérées via une API REST. Swift adopte une architecture
de cohérence à terme (eventual consistency en anglais)
qui le rends idéal pour la construction d'infrastructure massives et
hautement distribuées avec de nombreuses données non
structurées, avec Openstack Swift fournit en plus trois types de
authentification : TemAuth, Swauth et keystone, TempAuth étant le
service d'authentification par défaut de Swift, il stokce les noms des
utilisateurs et leurs mots de passes en texte clair, il n'est donc pas
fortement recommandé de l'utiliser, Swauth en revanche utilise des droit
d'accès configurés pour sécuriser les mots de passe, il
est utilisé principalement dans les environnements d'expériences
et de test contrairement à keystone qui est utilisé dans
n'importe quel environnement que ce soit en test ou en production, c'est le
service qui gère l'accès dans Openstack utilisant les tokens il
propose une meilleure sécurité des mots de passes. L'organisation
des données comme expliquée dans l'article [28] est construite
selon une hiérarchie de : Compte, Conteneur et objet, le compte
étant au niveau supérieur de la hiérarchie, le conteneur
comme les buckets (seaux) et les objets comme magasin de stockage de
donnée : documents, images, vidéos ...etc. Les objets
stockés dans Swift ont une URL que les applications utilisent pour
stocker et récupérer des données, ils peuvent aussi avoir
des métadonnées étendues qui sont indexées et
recherchées, ces objets sont stockés avec plusieurs copies
(généralement trois) pour éviter de les perdre. Cet
article estime que le benchmarking (techniques de test des performances) de
l'implémentation d'un Cluster Swift est essentiel avant le
déploiement de ce dernier pour une utilisation en production. Pour se
faire ils se sont basés sur une configuration d'un cluster de stockage
répartie sur six serveurs (noeuds) : l'un de ces noeuds est un
serveur proxy qui expose les requêtes aux entités de stockage, et
les autres sont es noeuds de stockage à savoir Compte, Conteneurs et
Objet. Ils ont ensuite utilisé« Swift-bench » qui
est un outil de benchmarking en lignes de commande fournit avec la distribution
Swift utilisé comme générateur de charge de travail pour
comparer Swift en termes d'opération #PUT par seconde,
d'opération #GET par seconde et d'opération DELETE par seconde.
Ils ont constaté à la fin que les opération #PUT et
#DELETE sont dominantes dans le cluster Swift.
La conférence ayant eu lieu en mars 2016 à
l'université de Manitoba à Winnipeg au Canada s'intéresse
au problème de mise en oeuvre et d'évaluation des performances
des données critiques dans le marché du Cloud, et plus
précisément à la gestion des incidents [29], cette
conférence présente les travaux qui ont été faits
afin de sélectionner la meilleure stratégie de stockage
permettant la reprise des services en cas de défaillance du
système due à une catastrophe naturelle ou humaine pour une
organisation utilisant un Cloud privé. L'idée était de
créer un nouveau système de proposé une nouvelle
stratégie de réplication pour la duplication des données
dans un Cloud privé basé sur openstack. Pour cela ils ont
construit un Cloud privé à l'aide d'une solution logicielle open
source basée sur OpenStack suivie d'un déploiement d'une
application financières sur des machine virtuelles. Le but était
de provoquer un déclenchement d'un sinistre pour repérer lequel
des deux services de stockage d'Openstack Cinder ou Swift est le meilleur en
cas de défaillance du système (i.e. lequel possède la
meilleure technique de réplication des données). Parmi les
multiples plans de reprise de travail qui existent dans le domaine du
Cloud : sauvegarde du système uniquement, transfert de
données hors site, sauvegarde à la fois du système et des
donnée...etc. la dernière a été choisie, pour se
faire, une technologie de snapshots (une sauvegarde de l'état d'un
système à un instant donné)a été
adopté.Pour récapituler leur expérience, ils ont
créé des scripts qui planifient les captures des snapshots,
ensuite ils ont déclenché une machine virtuelle avec des erreurs
de configuration suivis de la mise hors tension de cette dernière,
à cet instant-là, les snapshots sont
récupérés et le bloc de données passif est
activé ce qui produit un système de réplication de la
machine virtuelle. L'analyse expérimentale des deux
stratégies de stockage s'est basée sur d'autres scripts
créés pour déterminer premièrement laquelle des
deux est rapide en termes de création et déploiement de snapshot
et en quantité de données associé à chaque
itération et deuxièmement laquelle des méthodologies
garantit le plus la cohérence des données en mesurant le nombre
d'octet de données perdus à chaque itération.
D'après les résultats de cet analyse Cinder est 53fois plus
rapide que Swift en termes de création, déploiement et sauvegarde
des données (i.e. Cinder 53 fois mieux que Swift en termes de
récupération du système après un sinistre) un
deuxième constat est tiré de cette analyse, il s'agit de la
cohérence des données, en effet les deux stratégies de
stockage : Cinder et Swift fournissent des données
cohérentes. En conclusion s'il y a un choix à faire entre le
stockage en bloc Cinder et le stockage en objet Swift pour assurer la
fiabilité des données critiques et la reprise des services en cas
de sinistre mieux vaut opter pour Cinder.
Le projet Openstack contient plusieurs composants comme Cinder
qui est dédié au stockage en bloc et qui comme déjà
montré précédemment améliore les performances des
machines virtuelles, ou même Swift qui propose un stockage en objet
offrant ainsi plusieurs fonctionnalités complémentaire avec
Cinder, cependant la création des volumes ne se fait pas uniquement en
local sur OpenStack, il existe en vrai d'autres système de stockage dits
à distance, qui offrent plus ou moins des fonctionnalités pareils
voire absents dans les système de stockage en local : Cinder,
Swift...etc. ces systèmes peuvent être open source comme LVM, NFS,
Ceph ou GlusterFS ou propriétairescomme EMC et IBM.Les chercheurs dans
l'article [30] affirment que le stockage local d'OpenStack n'est pas assez
puissant ni facile à étendre et que son
hétérogénéité rend la gestion et la
maintenance du système complexe, ils constatent qu'il présente un
taux de fiabilité bas. Leur stratégie est composée de deux
partie la première était d'intégrer une solution libre de
stockage distribuée délivrant des services de stockage à
la fois en Bloc, en Objet mais aussi en fichier : Ceph RBD (Rados
Block Device en anglais, dispositif de stockage en bloc en
français) avec les services de calcul (nova), d'image (Glance) et de
stockage en bloc (Cinder) dans Openstack. La deuxième consistait
à construire trois plateformes de stockage : RBD_OpenStack,
Local_OpenStack et GSR_OpenStack avec des backend de stockage différent
(LVM, GlusterFS, LocalFS, RBD)afin de les analyser et les comparer visant
à trouver la meilleure plateforme open source parmi eux. Les analyses
et les calculs de performances de la première partie de
l'expérience ont montré que le système de stockage RBD
réduit le temps de déploiement des machine virtuelles et de leurs
migrations, de plus ils ont trouvé qu'il améliore
l'efficacité de la lecture et de l'écriture sur les volumes de
stockage. L'évaluation des stockages dans la deuxième partie
s'est basée sur trois critères : concernant le temps de
déploiement de la machine virtuelle, le mode de stockage RBD est le plus
rapide suivi du GSR et ensuite du mode Local car le
téléchargement des images disques dans le local se fait à
chaque création d'une machine virtuelle, une seule fois dans le mode GSR
contrairement au mode RBD dans lequel le service de Calcul et d'Image partage
le même backend de stockage unifié ; le deuxième
critère sur lequel ce sont basé les analyses est le temps de
la migration à chaud de la machine virtuelle le temps de la migration
à chaud des machines virtuelles, les modes de stockage partagé
RBD et GSR prennent une seule seconde pour faire cette action contrairement au
mode Local qui nécessite une copie des fichier d'image disque entre les
noeuds de calcul en prenant plus de temps à savoir 121.4 secondes.
Concernant le troisième critère, les performances en lecture et
en écriture de la machine virtuelle dans un volume de stockage sont
élevées dans le RBD car il ne dépend que du transfert de
données dans le cluster Ceph, contrairement au mode Local et GSR qui eux
dépendent des performances I/O (Input/Output, entrée/sortie) du
disque physique ainsi que du trafic du réseau. La conclusion à
relever de ces expériences présentées dans l'article [30]
est que RBD Ceph est la meilleure solution de stockage à mettre en place
en termes de vitesse de déploiement et de migration des machines
virtuelles ainsi qu'en lecture et écriture sur les disques de
stockage.
L'immense quantité de données structurés,
non structurés et semi structuré présente dans le Cloud
est stockée dans un serveur ou un cluster de stockage, ce dernier est
configuré avec un système de stockage Cloud comme GlusterFS,
Ceph, LVM, ZFS etc. l'article [31] discute en premier temps la vue d'ensemble
de ces plateformes et compare par la suite entre les deux plateformes les plus
utilisé : Ceph et Swift, en profondeur et en respectant certains
critères tels que la cohérence, la méthode de placement
des données, opération de lecture, opération
d'écriture, sécurité et autres. GlusterFS est un
système NAS (Network Attached Storage), cette plate-forme fonctionne
avec du matériel à faible coût et convient aux
données non structurées, par exemple : documents, courriers
électroniques, massages, images, fichiers multimédias et fichiers
journaux, etc.[31]Le système ZFS est un système de fichiers avec
gestionnaire de volume logique, il est basé sur l'idée des pools
de stockage pour gérer le stockage physique. ZFS offre des performances
efficaces et une intégrité des informations, ainsi qu'une
administration simple[31].LVM permet au système de fichiers d'être
redimensionné efficacement, il prend des snapshots pour la sauvegarde.
Il peut créer un volume virtuel unique à partir de
différents volumes réels ou d'un disque dur entier et permet le
redimensionnement du volume[31]. Ceph est une plateforme de stockage cloud
distribuée et open source qui prend en charge le stockage en objets, en
blocs et en fichiers, elle est nécessairement conçue pour
atteindre la fiabilité, l'évolutivité avec de meilleures
performances tout en s'exécutant sur du matériel de base sans
point de défaillance unique. [31] Swift fournit une plateforme de
stockage distribuée afin que les clients puissent stocker et
accéder à des informations ou à des objets à l'aide
d'API REST, elle est développée pour assurer
l'évolutivité, la durabilité, la disponibilité et
la simultanéité sur l'ensemble des données.[31]
après avoir comparé entre ces cinq plateformes de stockage ils
ont été classé selon leurs types de stockages, en effet,
Swift assure uniquement le stockage en objet, LVM et ZFS uniquement le stockage
en Bloc, Gluster assure quant à lui le stockage en fichier et en objet
et enfin la plateforme Ceph qui assure les trois type de stockage : en
bloc, en objet et en fichier.
Après cette vue d'ensemble et comparaison
générale présenté dans l'article de journal [31],
les chercheurs ont étudié en profondeur les deux systèmes
Ceph et Swift, en terme de type de stockage Swift fournit un stockage en objet,
accessible via une API RESTful http, il utilise des rings (anneaux) pour
surveiller et fournir des information sur l'emplacement des informations
stockées dans un conteneur, pour se connecter les clients se connectent
via des serveurs proxy aux noeuds de stockage (ce qui crée un goulot
d'étranglement : un point d'un système limitant les
performances globales, et pouvant avoir un effet sur les temps de traitement et
de réponse), pour répartir le travail entre les noeuds de
stockage, Swift utilise la technique de Load Balancer qui consiste à
répartir uniformément les charges de travail sur plusieurs
servers afin d'optimiser le rendement, la fiabilité et la
capacité du réseau. La cohérence étant la
capacité du système à refléter sur la copie d'une
donnée les modifications intervenues sur d'autres copies de cette
donnée, le système Swift est fondé sur un type de
cohérence dit « à terme », ce type de
cohérence consiste à répondre immédiatement aux
demandes de lecture (i.e. faible latence) avec un risque d'envoi de
données obsolètes. Concernant Ceph en fournissant trois type de
stockage : en bloc, en objet et en fichier, il est accessible via l'API
Amazon S3 et l'API de Swift, utilisant pour calculer l'emplacement des objets
stocké dans le cluster un algorithme appelé CRUSH (The Controlled
Replication Under Scalable Hashingen anglais, La réplication
contrôlée sous hachage évolutifenfrançais),
son architecture permet au client de se connecter directement aux noeuds de
stockages (i.e. meilleures performances entrée/sortie), il
possède des serveurs dits Ceph Monitor qui surveillent le cluster en
sauvegardant les données liées à ce dernier, et enfin, par
rapport à Swift il utilise une autre forme de
cohérence appelée « la cohérence
forte » qui certainement réponds aux demandes de lecture
tardivement (latence élevé) mais qui assure que l'information
envoyé soit mise à jours. Pour conclure le travail des chercheurs
présenté dans cet article, nous retiendrons que Ceph et Swift ne
sont pas des concurrents, chacun possède des fonctionnalité
complémentaire à l'autre et peuvent cohabiter dans un seul
système pour profiter des deux offres, cependant à retenir que
Ceph est moins sécure que Swift car les clients communiques directement
avec le cluster de stockage et sur le même réseau Ceph utilise un
trafic de réplication non chiffré (i.e. un pirate pourrait
facilement observer le trafic sur le réseau de stockage).
Les futurs travaux décrits dans l'article [30] dans
lequel des chercheurs ont intégrer le système de stockage Ceph
avec le service du stockage en bloc d'Openstack : Cinder, consistent
à intégrer ce même système avec les services de
stockage en objet : Swift et avec celui du stockage en fichier :
Manila. Un projet au sein du département IT de CERN (nommé
maintenant : l'Organisation Européenne pour le Recherche
Nucléaire) a été réaliser en 2019 pour
l'infrastructure Cloud Openstack du CERN[32], une partie de ce projet
consistait à décrire les fonctionnalités et les avantages
d'une implémentation d'un service de stockage autre que celui du mode
« bloc » : Cinder et du mode
« objet » : Swift, il est nommé Manila et offre
à l'infrastructure Cloud de CERN un service de fichier partagé,
il permet aux utilisateurs de créer et gérer des partages de
fichiers, son utilité principale est son autorisation aux machines
virtuelles d'accéder simultanément à ces fichiers
partagés ( fonctionnalités qui n'est pas prise en charge par
Cinder). À l'heure actuelle, ce service est utilisé pour le
cluster de calcul haute performance qui utilise ces partages de fichiers comme
stockage partagé pour ses charges de travail de calcul. Le service est
également utilisé pour remplacer les fichiers NFS car il
simplifie la gestion de ces machines dédiées. Une fois les
partages de fichiers créés, l'utilisateur peut utiliser le
protocole CephFS pour accéder aux données. CephFS étant le
système de fichier de Ceph.
2.4. Synthèse de l'existant
Afin de tirer le maximum d'information de ces supports
d'informations présentés et analysés, une synthèse
a été réalisée sous la forme d'un tableau afin de
bien structurer les conclusions auxquelles les chercheurs sont
arrivés.
Tableau 2 : Synthèse
de l'existant
Conclusion de l'article
|
Les deux services de stockage Cinder et Swift ont chacun leurs
propres fonctionnalités qui peuvent être complémentaire
pour assurer une bonne gestion de stockage
|
L'objectif de Swift est de fournir un système de
stockage à long terme pour une grande quantité de données
statiques.
|
Cinder plutôt que Swift en cas de défaillance du
système.
|
Ceph RBD est le meilleur. En termes de (vitesse de
déploiement et de migration de la VM et en lecture et
écriture)
|
Ceph et Swift ne sont pas des concurrents, chacun
possède des fonctionnalités complémentaires à
l'autre et peuvent cohabiter dans un seul système
|
Manila permet de créer des partages, utilisé
pour ses charges de travail de calcul, remplace les fichiers NFS
|
Méthodologie de l'article
|
Déploiement d'un Cloud privé avec les services
de stockages Swift et Cinder
|
Déploiement d'un service de stockage en objet
basé sut la solution Openstack + benchmaarking du cluster Swift
|
Implémenter Swift et Cinder, déclencher un
sinistre, comparer les résultats
|
Construire 3 plateformes de cloud (RDB Openstack, Local
openstack GSR openstack) avec différents backend
|
Étudier GlusterFS, Ceph, LVM, ZFS
Comparaison entre Ceph et Swift
|
Description et présentation du service de
systèmes de fichiers partagé au sein d'OpenStack : Manila
|
But de l'article
|
Fournir des ressources informatiques virtualisé facile
à gérer aux institutions d'enseignement supérieur
|
Virtualiser l'infrastructure d'un laboratoire
d'étude
|
Le meilleur service en cas de sinistre
|
Montrer la supériorité de Ceph RBD par rapport
aux autres solutions par rapport à la vitesse de migration,
fiabilité
|
Comparer entre Ceph et Swift en termes de cohérence, de
méthode de placement des données, des opérations de
lecture et d'écriture, de sécurité
|
Améliorer l'infrastructure Cloud Openstack du CERN
|
Titre de l'article
|
Design and Implementation of Private Cloud for Higher
Education using OpenStack[27]
|
Building an Object Cloud Storage Service System using
OpenStack Swift[28]
|
Comparing Replication Strategies for Financial Data on
Openstack based Private cloud[29]
|
Construction and Performance Analysis of Unified Storage Cloud
Platform Based on OpenStack with Ceph RBD[30]
|
A comparative Review on Ceph and Swift Open-Source Cloud
Storage Platform[31]
|
Advanced features of the CERN OpenStack Cloud[32]
|
Numéro
|
01
|
02
|
03
|
04
|
05
|
06
|
2.5. Conclusion
La vitesse avec laquelle le volume des données
informatiques augmente dans les entreprises, les établissements et les
organisations est immense, étant la source de plusieurs
problématiques liées aux stockages, de nombreuses solutions ont
été proposées, dont la plus connue est le Cloud. Ceci dit,
la complexité des modes de stockage ne semble pas être
dépassée, en effet, même en présence d'une
infrastructure virtualisé via un Cloud les technologies de stockage ne
cessent d'augmenter. Les article et les comptes rendus des conférences
que nous avons étudié et analyser précédemment nous
ouvre des portes vers l'amélioration du système de stockage d'une
infrastructure Cloud déjà déployé auparavant sous
OpenStack, ayant uniquement une intégration d'un stockage en mode
bloc : Cinder. Nous envisageons l'améliorer pour non seulement
supporter les autres types de stockage : en objet (avec Swift) et en
fichier (avec Manila), mais aussi profiter de la fonctionnalité de
partage des stockages. Swift, un système de stockage d'objets simple et
basé sur des composants fiables permettrad'avoir une persistance
élevée des données, une architecture système
complètement symétrique et une évolutivité
illimitée, sans point de défaillance unique. Manila, ce service
de stockage en fichier supportant un système de partage de fichier
surmontera certaines des limitations de Cinder et Swift, apportant plus de
fonctionnalités à OpenStack. Même si les recherches
auparavant menées ont montré l'excellente opportunité que
présente la solution Ceph en termes d'amélioration de stockage,
Swift, Cinder et Manila offrent quand même de nombreuses
fonctionnalités qui sont en perpétuelle évolution et
amélioration, d'autant plus qu'ils bénéficient de leur
intégration approfondie à OpenStack et des contributions de la
communauté OpenStack. Nous avons donc décidé
d'intégrer la combinaison de services : Swift et Manila au service
Cinder présent dans notre Solution Cloud privé déjà
déployée. Dans ce qui suit nous présenterons en
détail les architecture et les fonctionnalités de chacun des
service Cinder, Swift et Manila afin de maitriser leur déploiement.
Chapitre 3 :
Étude analytique et comparative entre les types de stockages persistant
dans la solution Openstack
3.1. Introduction
Améliorer le système de stockage dans un
environnement de Cloud peut être réalisé par plusieurs
méthodes qui sont présents avec plus ou moins de performances
dans le marché de la technologie. Notre proposition est
d'implémenter le service de stockage en objet
« Swift » et le service de système de fichiers
partagés « Manila » pour améliorer le
stockage dans la solution Cloud que nous avons préalablement
déployé sous OpenStack avec uniquement un service de stockage en
bloc « Cinder ». Avant cela nous allonsprésenterplus
en détails les fonctionnalités et leurs architectures
internesainsi que leurs fonctionnements qui seront suivi d'une
synthèsecomparative selon des critères précis.
3.2. Les types de stockage dans OpenStack
D'après le Red Hat OpenStack Platform (RHOSP)
répondre aux exigences de stockageOpenStack est assuré selon deux
type de stockage : le stockage éphémère et le
stockage persistant [33]. Ce que nous allons réaliser comme travail
(Swift, Cinder et Manila) se trouve dans la catégorie de stockage
persistant, néanmoins une présentation des deux formes de
stockage : éphémère et persistant s'avère
nécessaire pour une meilleure compréhension du stockage
d'OpenStack.
3.2.1. Stockage
éphémère
Le stockage éphémère appelé aussi
le stockage non persistant, comme son nom l'indique, il ne garde pas les
disques associés à une machine virtuelle une fois éteinte
[34]. Ce type de stockage est utile pour les exigences d'exécution de
base, telles que le stockage du système d'exploitation de l'instance (la
machine virtuelle) [35].
3.2.2. Stockage
persistant
Le stockage persistant, en revanche, est conçu pour
persister, indépendamment de toute instance en cours d'exécution,
son éteinte n'affectera donc pas les données stockées
contrairement au stockage éphémère. Ce stockage est
utilisé pour toutes les données qui doivent être
réutilisées, soit par différentes instances, soit
au-delà de la durée de vie d'une instance spécifique[34].
Openstack prend en charge trois type de stockage persistant : le stockage
en objet, le stockage en bloc et le stockage en fichier, avec leurs noms de
codes : Swift, Cinder et Manila respectivement.
3.3. Le mode de stockage en objet
« Swift »
Lors de la sortie d'OpenStack en 2010, Rackspace a fourni le
code source de son produit « Cloud Files » en tant que code initial
pour le composant de stockage d'objets OpenStack Object Storage (maintenant
Swift). Le but est de fournir un stockage redondantet massivement
évolutif sur toutes les plates-formes matérielles de base. Le
modèle de basede ce service s'inspire des serveurs de stockage Amazon S3
et est géré de la même manière[36].Le stockage en
mode objet est une structure plate dans laquelle les fichiers sont
décomposés en éléments et répartis sur du
matériel. Avec le stockage en mode objet, les données sont
décomposées en petites unités distinctes appelées
objets et sont conservées dans un référentiel unique[37].
La figure suivante schématise le mode de stockage en objet :
Accès direct
URL
Figure 18 : Le mode de
stockage en objet [38]
3.3.1. Vue
d'ensemble sur Swift
Le stockage ne mode objet permet à l'utilisateur de
stocker les données sous formes d'objets en utilisant une API RESTful
http, ces objets sont stockés de façon vaste et plate, il
n'existe donc aucune hiérarchie ou structure particulière
contrairement à un système de stockage traditionnel. Ce mode de
stockage en objet n'est pas conçu ni adapté aux exigences des
hautes performances ou de données structurées qui sont
fréquemment modifiées (telles que les bases de données).
En effet ce système de stockage est conçu pour de grandes
quantités de données binaires ou statiques qui peuvent être
récupérées et mises à jour, et il est idéal
pour stocker des données non structurées qui peuvent
croître sans limite (telles que les fichiers multimédias, des
données volumineux et des images disque). Les principales notions
caractérisant le stockage en objet sur Swift sont les notions de
Compte, Conteneur et Objet. Ils forment l'organisation logique du service, en
effet, chaque compte possède un ou plusieurs conteneurs, et chaque
conteneur contient un ou plusieurs objets, comme décrit dans la figure
suivante :
Objets
Compte
Conteneur
Figure 19 : Organisation
logique du service Swift[39]
- Le Compte :L'emplacement de stockage
du compte est une zone de stockage possédant un nom unique qui contient
les métadonnées (informations descriptives) sur le compte
lui-même ainsi que la liste des conteneurs du compte. Dans Swift, un
compte n'est pas une identité d'utilisateur mais une zone de
stockage.
- Le Conteneur :L'emplacement de
stockage du conteneur est la zone de stockage définie par l'utilisateur
dans un compte où les métadonnées sur le conteneur
lui-même et la liste des objets dans le conteneur seront
stockées.
- L'Objet :L'emplacement de stockage
d'objet est l'endroit où l'objet de données et ses
métadonnées seront stockés.
3.3.2. Architecture
de Swift :
Swift abstrait complètement l'organisation logique des
données -précédemment présentée- de
l'organisation physique [39]. Nous commençons par examiner
l'organisation physique des données, puis la façon dont Swift
assure la circulation des données.
3.3.2.1. L'organisationphysique du service Swift :
Swift classe l'emplacement physique dans une
hiérarchie, en effet la région et au sommet suivi des zones puis
des serveurs de stockage ensuite des disques, comme illustré dans la
figure suivante :
Serveur
Région
Figure 20 : Organisation
physique du service Swift[39]
- La région : Au niveau le plus
élevé, Swift stocke les données dans des régions
géographiquement séparées et qui souffrent donc d'un lien
à latence élevée. Un utilisateur ne peut utiliser qu'une
seule région, par exemple, si le cluster n'utilise qu'un seul centre de
données[39].
- La zone : au sein des régions,
il existe des zones. Les zones sont un ensemble de noeuds de stockage qui
partagent différentes caractéristiques de disponibilité.
La disponibilité peut être définie comme différents
bâtiments physiques, sources d'alimentation ou connexions réseau.
Cela signifie qu'une zone peut être un serveur de stockage unique, un
rack ou un centre de données complet en fonction de vos besoins. Les
zones doivent être connectées entre elles via des liens à
faible latence. Rackspace recommande d'avoir au moins cinq zones par
région[39].
- Les serveurs de stockage : Une zone
est constituée d'un ensemble de serveurs de stockage allant d'un seul
à plusieurs racks[39].
- Les disques (ou périphériques)
: les lecteurs de disque font partie d'un serveur de stockage. Ceux-ci
peuvent être à l'intérieur du serveur ou connectés
via un JBOD[39].
3.3.2.2. Architecture logique du service Swift:
Swift est un système de stockage deux-tiers
composé d'un niveau proxy, qui gère toutes les demandes
entrantes, et d'un niveau de stockage d'objets où les données
réelles sont stockées. Swift utilise une structure de
données appelée « anneau » pour acheminer
l'URL d'un objet vers un emplacement particulier dans le cluster où
l'objet est stocké. La figure suivante montre Les composants de
Swift.
Figure 21 : Architecture
logique du service Swift [40]
- Le serveur :
o Swift-Proxy : accepte les requêtes
entrantes via soit l'API d'objets OpenStack, ou simplement le HTTP brut. Il
accepte les téléchargements de fichiers, des modifications de
métadonnées ou la création de conteneurs. De plus, il sert
également des fichiers ou des listes de conteneurs au navigateur Web. Le
serveur proxy peut également s'appuyer sur éventuellement sur le
cache, qui est généralement déployé avec Memcached
qui améliore les performances.
o Swift-account : gère le compte qui
est défini avec l'objet service de stockage. Il décrit son propre
descriptif (métadonnées) et la liste des conteneurs du compte.
o Swift-container : gère un mappage
des conteneurs dans le compte serveur. Un conteneur fait
référence à la zone de stockage définie par
l'utilisateur dans un compte serveur, il définit une liste d'objets
stockés dans le conteneur. Un conteneur peut être conceptuellement
similaire à un exemple de dossier dans un système de fichiers
traditionnel.
o Swift-object : gère un objet
réel au sein d'un conteneur, stocke les données des objets et
leurs métadonnées. L'objet doit appartenir à un
conteneur[34].
- Les backends
o Base de données
« Account » : Stocke les informations des
comptes.
o Base de données
« Container » : Stocke les informations des
conteneurs.
o Base de données
« Object » : Stocke les informations des
objets.
3.4. Le mode de stockage en bloc
« Cinder »
Le projet OpenStack Nova avait à l'origine un composant
appelé "nova_volume" qui a été séparé de
Nova en 2012 pour fonctionner indépendamment comme un service de
stockage en Bloc sous le nom de « Cinder » afin de fournir
un service de stockage persistant en bloc autogéré aux
utilisateurs.Le stockage en mode bloc rassemble les données en blocs qui
sont stockés en tant qu'éléments séparés.
Chaque bloc de données se voit attribuer un identifiant unique, qui
permet au système de stockage de conserver les petits
éléments à l'emplacement le plus pratique, chaque bloc
existe de manière autonome et peut être partitionné de
manière à être accessible depuis un système
d'exploitation différent, l'utilisateur bénéficie donc
d'une liberté totale pour la configuration de ses données[37].
La figure suivante schématise le mode de stockage en
bloc.
Bloc
Segment
Figure 22 : le mode de
stockage en bloc[38]
4.4.1. Vue
d'ensemble sur « Cinder »
Cinder est un outil de stockage persistant pour OpenStack dont
les volumes exposent un bloc brut de stockage qui peut être
attaché à des instance et qui stocke des données de
manière permanente. De plus Cinder gère les snapshots qui sont
donc des copies ponctuelles d'un volumes, cependant il existe une
possibilité de sauvegarde rapide et temporaire qui se fait en copiant
entièrement les données d'un volume et les stocker dans le
système de sauvegarde[34]. Le service de stockage Cinder virtualise la
gestion des périphériques de stockage par blocs et fournit aux
utilisateurs finaux une API en libre-service pour demander et consommer les
ressources sans avoir besoin de savoir où leur stockage est
réellement déployé ou sur quel type de
périphérique.Nous pouvons conclure 3 ressources de base fournit
par le service Cinder :
- Les volumes : ressources de stockage
de blocs allouées qui peuvent être attachées aux instances
en tant que stockage secondaire ou peuvent être utilisées comme
magasin racine pour démarrer les instances[41].
- Les Snapshots : les snapshots sont une
copie ponctuelle en lecture seule d'un volume. Le snapshot peut être
créé à partir d'un volume actuellement utilisé ou
dans un état disponible. Le snapshot peut ensuite être
utilisé pour créer un nouveau volume[41].
- Les sauvegardes : copie archivée
d'un volume actuellement stocké dans OpenStack[41].
4.4.2. Architecture de
« Cinder »
Cinder est composé de deux service, deux démons
(un programme informatique ou un processus qui n'est pas contrôlé
par l'utilisateur et qui s'exécute en arrière-plan) et deux
backends importants [42]. La figure suivante illustre les composant du service
Cinder :
Figure 23 :
Architecture logique du service Cinder [41]
- Les services :
o Cinder-api : Gère les
requêtes API et les achemine vers le volume de cendres à
traiter[42].
o Cinder-volume driver : Liaison principale
entre les démons de cendre, elle est responsable des requêtes de
lecture et d'écriture[42].
- Les démons :
o Cinder-scheduler :Choisit le meilleur noeud
de stockage sur lequel créer le volume[42].
o Cinder-backup :Il crée des
sauvegardes de volumes sur les noeuds de stockage de sauvegarde[42].
- Backends :
o File d'attente : Achemine les
informations entre les processus Block Storage.
o Base de données :
Utilisée pour stocker les informations de bloc.
3.5. Le mode de stockage en fichier « Manila
» :
OpenStack a vu l'ajout de Manila sous la version Liberty en
2015 comme un projet expérimental indépendant facilitant le
stockage des fichiers et proposant la fonctionnalité de partage de ces
derniers avec un support complet[40].Le stockage en mode fichier consiste
à stocker les données en tant qu'élément unique
d'information à l'intérieur d'un dossier, ces données sont
organisées et récupérées à l'aide de
quelques métadonnées qui indiquent où le fichier se
trouve. Le système fonctionne comme un catalogue de
bibliothèque[37]. Dans la figure suivante un schéma de ce type
de stockage est présenté :
Fichiers
Accès hiérarchique
Répertoires
Figure 24 : le stockage
en mode fichier [38]
4.5.1. Vue
d'ensemble sur Manila
Manila apporte des fonctionnalités pour combler les
lacunes de Cinder et Swift, en effet, pendant que Cinder ne prends pas en
charge l'accès simultané au stockage et que même si les
objets Swift sont excellents pour stocker et gérer de gros objets, ils
ne sont pas bien adaptés à un environnement
transactionnel où il représente, en informatique, un
environnement dans lequel les informations sont enregistrées à
partir des séquences d'échange d'information (des transactions),
le service Manila vient donc proposer le système de partage de fichiers
accessibles à plusieurs utilisateurs simultanément[40]. La notion
principale dans ce service est celle du partage et du réseau de
partage.
- Le partage :est une unité de
stockage avec un protocole une taille et une liste de control d'accès,
il représente une allocation d'un système de fichierspersistent,
lisible, inscriptible et montable auquel plusieurs hôtes et utilisateurs
peuvent accéder en même temps, une fois créé il doit
être associé à un réseau pour pouvoir être
répertorié, interrogé, mis à jour ou
supprimé. Afin de réaliser le lien entre le consommateur du
partage et le service Manila (qui fournit ce partage) il est nécessaire
d'associer à un partage n'importe quel système de fichiers[43],
notamment le système de fichiers en réseau (NFS : Network
File System), le système de fichiers Internet commun (CIFS : Commun
Internet File System), le système de fichiers Gluster (GlusterFS :
Gluster File System), le système de fichiers distribué Hadoop
(HDFS : Hadoop Distributed File System) ou le système de fichiers
Ceph (CephFS : Ceph File System), l'utilisateur peut alors accéder
au partage en utilisant les techniques et commandes usuelles appropriées
au protocole sélectionné[33].
- Le réseau de partage : Le
réseau de partage est un objet qui définit une relation entre le
réseau/sous-réseau d'un locataire (tel que défini dans un
service réseau OpenStack : Neutron ou Nova-Network) et les partages de
Manila créés par le même locataire. Un exemple
d'utilisation d'un réseau de partage serait le désir de
provisionner des partages qui ne seront disponibles que pour les instances
connectées à un réseau particulier défini par
OpenStack[43].
4.5.2. Architecture
de Manila
La scalabilité et l'aisance d'implémentation
sont les deux importantes caractéristiques qui forme la vision
derrière le projet OpenStack, Manila, ce système de fichiers
partagé adopte une architecture alignée avec la vision globale
d'OpenStack. Il se compose de trois services, détaillé en bas de
la figure, une file de message et une base de données pour stocker les
informations[43].
La figure suivante montre l'architecture de ce service.
Figure 25 : Architecture
logique du service Manila [41]
- Les services
o manila-api : c'est une application
qui accepte et valide les requêtes REST provenant des clients pour
ensuite les cheminervers les autresprocessus de Manila selon les besoins
à travers un bus de messagerie[43].
o manila-schedular : détermine
quel backend sert comme destination pour une demande de création
d'unpartage, maintient un état non-persistant pour les pools et les
backends, comme la capacité disponible et les spécifications
supplémentaires prises en charge[43].
o manila-share :accepte les demandes
d'autres processus de Manila et sert de conteneur d'opérations pour les
pilotes de Manila[43].
- Le backend : Un backend Manila est
l'objet de configuration qui représente un fournisseur unique de pools
de ressources sur lequel les demandes d'approvisionnement pour les
systèmes de fichiers partagés peuvent être satisfaites. Un
backend communique avec le système de stockage via un pilote[43].
3.6. Étude comparative entre les services Cinder et
Swift et Manila
Chaque type de stockage est conçu pour répondre
à des exigences de stockage spécifiques. Les conteneurs sont
conçus pour un accès large et, en tant que tels,
présentent le débit, l'accès et la tolérance aux
pannes les plus élevés parmi tous les types de stockage. L'usage
des conteneurs est davantage orienté vers les services. D'autre part,
les volumes sont principalement utilisés pour la consommation. Ils ne
bénéficient pas du même niveau d'accès et de
performances que les conteneurs, mais ils disposent d'un ensemble de
fonctionnalités plus étendu et de fonctionnalités de
sécurité natives plus nombreuses que les conteneurs. Les partages
sont similaires aux volumes à cet égard, sauf qu'ils peuvent
être consommés par plusieurs instances simultanément.
Dans ce qui suit nous allons comparer l'architecture et les
fonctionnalités de chaque type de stockage selon des critères de
stockage spécifiques, à savoir : la scalabilité,
backends, la cohérence, l'accessibilité, l'administration, la
sécurité, la redondance et la reprise d'activité
après un sinistre.
3.6.1.
Scalabilité et backend
Le service de stockage en bloc Cinder peut utiliser plusieurs
solutions de stockage en tant que backends discrets. La capacité peut
être évoluée en ajoutant d'autres backends et en
redémarrant le service. Le service Block Storage propose
également une grande liste de solutions back-end prises en charge, dont
certaines disposent de fonctionnalités d'évolutivité
supplémentaires (NFS, CIFS, GlusterFS, CephFS)[44].
Le service de stockage en objet Swift peut évoluer d'un
serveur unique à de très grands clusters (un groupe de serveurs
agissant comme un seul système) simplement en ajoutant des
noeuds[45].
Le service de système de fichiers partagé
provisionne les partages sauvegardés par le stockage d'un pool de
stockage séparé. Ce pool (qui est généralement
géré par un service backend tiers) fournit au partage un stockage
au niveau du système de fichiers. Peu importe le système de
fichier déployé, la mise à l'échelle implique
l'ajout de volumes supplémentaires au pool[45].
3.6.2.
Cohérence des données
Le stockage en objet utilise la cohérence dite
« à terme » c'est une cohérence
immédiate : dès que l'utilisateur demande à recevoir
une données la requête est rapidement répondue (faible
latence), en revanche si d'une autre part cette même données a
subi un changement avant la demande de lecture d'un petit temps, cette mise
à jour ne sera pas envoyée, certes cette cohérence
répond immédiatement mais elle prend le risque d'envoyer des
données erronées.
Le stockage en mode Bloc et en mode Fichiers partagé
utilisent la cohérence dite « Forte » c'est une
cohérence qui prends le temps de mettre à jour une données
qui à subit des modification instantanément et sans interrompre
l'activité, si un utilisateurs envoi une requête demandant une
donnée qui est en train d'être mise à jour, le stockage en
bloc et en fichiers partagé, la mettent en attente (on parle alors de
latence élevé) donc même si ces deux mode tardent à
répondre (le temps est calculé par secondes) les données
envoyés aux utilisateurs sont certainement fiable et à jours.
3.6.3.
Accessibilité et administration
Les volumes sont consommés uniquement via des instances
et ne peuvent être attachés et montés que dans une instance
à la fois. Les utilisateurs peuvent créer des instantanés
de volumes, qui peuvent être utilisés pour cloner ou restaurer un
volume à un état précédent[45].
Comme les volumes, les partages sont consommés via des
instances. Cependant, les partages peuvent être directement montés
dans une instance et n'ont pas besoin d'être attachés via le
tableau de bord ou la CLI (interface en ligne de commande). Les partages
peuvent également être montés par plusieurs instances
simultanément. Le service de système de fichiers partagés
prend également en charge les Snapshots (instantanées) de partage
et le clonage[45].
Les objets d'un conteneur sont accessibles via l'API REST et
peuvent être rendus accessibles aux instances mais pas uniquement, en
effet, contrairement des volumes et des partages, les objets sont aussi
accessibles aux autres services dans le cloud. Cela les rend idéaux
comme référentiels d'objets pour les services ; par exemple,
le service Image (openstack-glance) peut stocker ses images dans des conteneurs
gérés par le service Object Storage[45].
3.6.4.
Sécurité
Le service Block Storage (Cinder) offre une
sécurité de base des données grâce au cryptage de
volume. Avec cela, lors de la création des types de volume, une
configuration l'option de chiffrement via une clé statique est possible
; la clé est ensuite utilisée pour chiffrer tous les volumes
créés à partir du type de volume configuré[45].
La sécurité des objets et des conteneurs est
configurée au niveau du service et du noeud. Le service Object Storage
(Swift) ne fournit aucun chiffrement natif pour les conteneurs et les objets.
Au lieu de cela, le service Object Storage donne la priorité à
l'accessibilité au sein du cloud et, en tant que tel, s'appuie
uniquement sur la sécurité du réseau cloud pour
protéger les données des objets[45].Il existe plusieurs
façons de sécurisé le stockage en objets : Keystone,
Tempauth et Swauth.sont les plus utilisé. Keystone étant le
service d'identification par défaut d'OpenStack, Tempauth est un type
d'authentification qui ne chiffre pas les mots de passe mais les stockent en
mode texte. Swauth est un Middleware intergiciel : logiciel agissant comme
passerelle entre les applications) prend en charge les ACL pour autoriser les
requêtes d'accès doit être installé manuellement.
Le service de système de fichiers partagés
(Manila) peut sécuriser les partages via des restrictions
d'accès, que ce soit par instance IP, utilisateur ou groupe, ou
certificat TLS3(*). En
outre, certains déploiements de services de systèmes de fichiers
partagés peuvent comporter des serveurs de partage distincts pour
gérer la relation entre les réseaux de partage et les partages ;
certains serveurs de partage prennent en charge, voire nécessitent, une
sécuritéréseau supplémentaire. Par exemple, un
serveur de partage CIFS nécessite le déploiement d'un service
d'authentification LDAP4(*),
Active Directory ou Kerberos5(*)[45].
3.6.5. Redondance
et tolérance aux pannes
Le service de stockage en bloc propose une sauvegarde et une
restauration de volume, offrant une récupération après
sinistre de base pour le stockage utilisateur. Les sauvegardes permettent de
protéger le contenu du volume. En plus de cela, le service prend
également en charge les Snapshots (instantanés) ; Outre le
clonage, les instantanés sont également utiles pour restaurer un
volume à un état antérieur[45].
Le service Object Storage ne fournit aucune
fonctionnalité de sauvegarde intégrée (réplication
des données). Ainsi, toutes les sauvegardes doivent être
effectuées au niveau du noeud. Le service, cependant, présente
une redondance et une tolérance aux pannes plus robustes ; même le
déploiement le plus basique du service Object Storage réplique
les objets plusieurs fois[45].
Le service de système de fichiers partagés ne
fournit aucune fonctionnalité de sauvegarde intégrée pour
les partages, en revanche il permet de créer des instantanés pour
le clonage et la restauration[45].
Le but de décrire les fonctionnalités de chaque
service en tenant compte de certains critères est de pouvoir classifier
les services selon leurs impacts et le type de problèmes auxquels il
répond. Le tableau suivant résume ce que nous avons
présenté tout au long de ce travail :
Tableau 3 : Tableau de
comparaison entre les services Cinder, Swift et Manila
Spécification
|
Type de stockage
|
|
Service de stockage en objet
« Swift »
|
Service de stockage en bloc
« Cinder »
|
Service de stockage en fichier
« Manila »
|
Type de stockage
|
Objet
|
Bloc
|
Fichier
|
Placement de données
|
Conteneur
|
Volumes
|
Partage
|
Type de données stocké
|
Statiques et non structurées
|
Structurées et non statiques
|
Tous types de données
|
Forme de présentation de
données
|
Structure plate (Horizontale)
|
Volumes de taille égale
|
Hiérarchie de fichiers
|
Persistance
|
OUI
|
OUI
|
OUI
|
Scalabilité
|
En rajoutant des noeuds
|
En ajoutant d'autres backends
|
L'ajout de volumes supplémentaires au pool
|
Cohérence
|
Cohérence « À terme »
|
Cohérence « Forte »
|
Cohérence « Forte »
|
Accès
|
Instances &accès public
|
Instance
|
Instance
|
Protocole d'accès
|
API REST (http)
CLI
Client Swift
|
Depuis une instance via le tableau de bord ou la CLI
|
Tableau de bord ou la CLI
|
Protection des données & tolérance
aux pannes
|
Réplication
|
Sauvegarde & Snapshot
|
Snapshots
|
Sécurité
|
La sécurité du réseau cloud (https, liste
d'accès selon l'IP)
Tempauth, Swauth
|
Cryptage de volume
|
Restrictions d'accès (Certificat, AD, liste
d'accès)
|
Cas et domaines d'utilisation
|
Hébergement de sites
Web application
Stockage en tant que service
Jeux vidéo
|
Stockage des serveurs
Volumes d'exécutions de machines
|
Partages de cloud hybride
NFV/Telco
Big Data
|
3.7. Conclusion
Swift fournit une prise en charge du stockage d'objets,
ce qui le rend adapté au stockage de gros objets binaires à
grande échelle. Cependant, le stockage Swift ne convient pas aux
données transactionnelles ou au stockage de machines virtuelles, car les
objets sont généralement immuables et mis à jour dans leur
intégralité. Les magasins d'objets ne conviennent
généralement pas aux petits objets en raison des frais
généraux liés aux méthodes de protection des
données, telles que le codage par effacement, et sont relativement
inefficaces lors de l'utilisation d'approches de protection simples, telles que
les répliques.
Le stockage par blocs offre un accès hautes
performances aux machines virtuelles (VM) et aux données, mais un volume
Cinder est limité à l'accès par un seul invité Nova
(machine virtuelle). Cette restriction existe car il n'y a pas de processus de
verrouillage ou de synchronisation inhérent intégré aux
protocoles de niveau bloc. Les appareils en bloc ont également des
restrictions de capacité, ce qui les rend difficiles à augmenter
et presque impossibles à réduire.
Manila comble le fossé entre le bloc et l'objet en
offrant la possibilité de mapper des systèmes de stockage
externes à l'aide de protocoles NAS basés sur des systèmes
de fichiers. Les partages de fichiers peuvent être répartis entre
les instances, car le protocole NAS gère les processus de verrouillage
et d'intégrité des données requis pour fournir plusieurs
accès simultanés aux données.
Dans le chapitre suivant, nous présenterons le travail
réalisé soit donc : la configuration du service de
réseau et l'implémentation des services de stockage en objet
(Swift) et de système de fichiers partagés (Manila) dans la
plateforme Cloud privé préalablement réalisée avec
seulement le service de stockage en bloc (Cinder), nous introduisant
l'environnement de déploiement, les étapes d'installation et le
test des fonctionnalités de chacun des services
implémentés.
Chapitre 4 : Implémentation des services de
stockage Swift et Manila
|
3.1. Introduction
Un Cloud proprement fonctionnel permet la création des
instances (machines virtuelles) par des utilisateurs
pré-enregistrés, les instances ont accès à internet
et peuvent être accessibles depuis internet (dans le cas d'une instance
qui héberge un site internet public). Un Cloud propose aussi un service
de stockage d'objet permettant de stocker, télécharger, supprimer
et modifier des fichiers. Notre travail ne s'est paslimité à
l'implémentation des services de stockage en objet (Swift) et du service
de système de fichier partagés (Manila), en effet une
améliorationdu service de réseaux (Neutron) a été
appliquée afin de permettre l'accès depuis l'extérieur
(Internet) à une instance hébergeant un site Internet.
3.2. Travail réalisé
Le déploiement du Cloud privé sur lequel nous
avons établie de nouveau changements pour but d'amélioration
était basé sur trois noeuds (trois serveurs) le noeud Compute qui
assure le calcul, le noeud contrôleur (Controller) qui exécute le
tableau de bord, le service de réseau et d'autres services, et en
dernier le noeud de stockage en bloc (Cinder). La raison pour laquelle nous
avons choisi ce mode de déploiement en plusieurs noeuds était
d'apprendre au mieux le fonctionnement et les étapes de configuration.
Maintenant que nous avons acquis ces compétences, nous pouvons choisir
un déploiement sur un seul noeud et une installation avec paquets, et
apporter des changements aux fichiers de configuration installé par
défaut, nous économiserons le temps d'installation des services
et les ressources matérielles de notre machine physique. Cette
dernière est un ordinateur portable de type HP PROBOOK avec une espace
de stockage disque 500Go HDD, une RAM de 16Go et un processeur Intel®
Core i5-7200U CPU @ 2.50GHz. Sachant que les ressources en mémoire
(RAM) consommées par les trois noeuds de nos déploiements
étaient de 6Go pour le Contrôleur et le Compute et 1Go pour le
stockage en Bloc, nous nous retrouvons seulement 3Go de mémoire
disponible ce qui ne permet pas une installation des deux noeuds du service de
stockage d'objet puisque cette dernière demande au minimum deux noeud de
2Go de RAM chacun. La solution était d'utiliser packstack qui est un
utilitaire qui utilise des modules Puppet pour déployer automatiquement
diverses parties d'OpenStack sur un ou plusieurs serveurs
préinstallés via SSH, de cette façon nous aurons à
notre disposition tous les services précédemment cités
(Identité, Image, Réseau, Calcul, Stockage en Bloc) en plus du
Tableau de bord et des services secondaire (file de message, base de
données...etc.) Cette installation est faite en un seul noeud consomme
moins de ressource matérielles(soit 6Go de RAM), avec ce mode de
déploiement nous allons gagner de temps d'installation et les ressources
matérielles disponibles pour nous investir pleinement dans la
configuration des fichiers de chaque service de manière à
améliorer le fonctionnement de notre Cloud.
3.2.1.
Configuration du service Neutron
Le service de réseau appelé Neutron dans
OpenStack, contient des agents qui vont se charger d'établir la
connectivité au sein de notre plateforme de Cloud. L'ancienne
configuration a été réalisé avec les composants
suivants : Le Plugin ML2, L'agent L2, L'agent Linuxbridge, L'agent L3,
L'agent DHCP, L'agent Metadata. Après plusieurs manipulations et
recherches nous avons trouvé que le problème se posait au niveau
du Plugin ML2 et l'agent L3. En effet, la configuration du Plugin ML2 est
réalisée avec les drivers de mécanisme
« Linuxbridge » et « l2 population »
pour construire l'infrastructure du réseau virtuel layer-2 (Bridging et
Switching) pour les instances et la configuration de l'agent L3 manque de la
notion du bridge externe. Ce que nous avons décidé de faire
était d'utiliser un autre mécanisme de drivers pour le plugin ML2
qui est l'Open vSwitch (OVS), contrairement à LinuxBridge, ce dernier
permet la configuration du bridge externe (br-ex) qui est un pont OVS
utilisé pour connecter des ports physiques (comme eth0), afin que le
trafic IP flottant pour les réseaux de projet puisse être
reçu de l'infrastructure du réseau physique (et Internet) et
acheminé vers les ports réseau du projet en libre-service.
Les étapes de configuration sont
présentées dans l'annexe et la nouvelle configuration est
désormais comme suit :
Figure 26 : schéma de
l'architecture de réseau avec le mécanismes Open
vSwitch[46]
Dans notre projet nous avons créé un
réseau externe qui est le même réseau physique auquel
l'ordinateur portable est connecté (192.168.1.0/24) suivit d'une
création d'un projet dans lequel on dispose d'un ensemble de ressources
(donnée par l'administrateur et manipulées par les utilisateurs
de ce projets) comme les réseaux virtuels, les routeurs, le stockage, la
mémoire Ram...etc. Nous avons donc créé un réseau
privé (10.0.1.0/24) relié au réseau externe via un routeur
virtuel, à ce même réseau virtuel nous avons attaché
des instances qui ont chacune une adresse IP (privée) 10.0.1.17 et
10.0.1.42. Une troisième instance de test é été
ajoutée avec l'adresse 10.0.1.31.
Le schéma suivant représente la topologie du
réseau informatique dans la plateforme de Cloud
précédemment détaillée.
Figure 27 : Topologie simple
du réseau informatique
Nous pouvons représenter graphiquement notre
déploiement du cloud par rapport au réseau externe comme
cela :
Machines virtuelles
Réseau physique
Cloud privé
Réseau virtuel
Routeur virtuel
Figure 28 : Topologie
graphique du réseau informatique
Cette nouvelle configuration du réseau nous permet
d'avoir une meilleure connectivité du réseau, Afin de tester la
connectivité et la disponibilité des instance nous avons
autorisé l'accès ICMP/TCP dans les règles de
sécurité associé à ces instances, ce qui les rends
être accessible via Internet (en utilisant leurs adresses IP flottantes
associés) et via SSH (en utilisant les paires de clés) tout en
accédant au réseau internet. Nous pouvons après
héberger dans une instance un site internet et y accéder depuis
le navigateur Web. La figure suivante montre ces fonctionnalités :
Figure 29 : Test ICMP &
TCP des instances
Sur l'invité de commande cmd de Windows nous avons pu
accéder à la première instance (10.0.1.17) et depuis cette
dernière nous avons lancé la commande ifconfig qui
montre bien l'adresse IP de cette machine (en effet l'instance ne se rends pas
compte qu'elle dispose d'une adresse IP flottante, la sortie de cette commande
le montre bien) pour la deuxième instance (10.0.1.42) nous avons pu lui
lancer un Ping depuis la première.
3.2.2.
Implémentation du service de stockage d'objet (Swift)
L'installation du service de stockage en objet par Packstack
met à notre disposition des fichiers à configurer afin
d'exploiter au mieux les fonctionnalités proposées. En principe
ce service permet aux utilisateurs de créer des conteneurs pour y
stocker des objets (des images, vidéos, son, textes...etc.).
Figure 30 :
Présentation du service de stockage d'objet Swift dans le tableau de
bord
Lors de la création du conteneur l'utilisateur
décide si ce dernier sera privé (accessible uniquement aux
utilisateurs du projet sur lequel le conteneur est créé) ou
public (accessible à toute personne possédant le lien URL
attribué par défaut au conteneur.
Figure 31 : création
d'un conteneur
Après la création du conteneur, qu'il soit
public ou privé, permet à l'utilisateur de charger des fichiers
comme le montre la figure suivante :
Figure 32 : chargement des
fichiers dans le conteneur
Dans le cas où le conteneur est privé, les
objets ne pourront être consulter que via la plateforme du Cloud et
uniquement pour les utilisateurs du même projet.
Figure 33 :
présentation des fichiers dans le conteneur privé
Lorsque le conteneur est public il dispose d'un lien URL
permettant l'accès via le Protocol HTTP :
Figure 34 : La
récupération du lien du conteneur
La fonctionnalité qui nous intéresse le plus est
celle du conteneur public, où toute personne possédant le lien du
conteneur pourra le consulter et télécharger son contenu. La
sortie de ce lien par défaut est un fichier XML exposant les objets et
leurs métadonnées.
Figure 35 : Liste des
objets via le lien du conteneur - vue par défaut en fichier XML
-
Afin de télécharger un quelconque objet il
suffit de mettre le nom de l'objet à la fin de l'URL du conteneur
(URLdu conteneur/nomdufichier) ici nous souhaitons
télécharger un fichier mp3 comme le montre les figures
suivantes :
Figure 36 :
téléchargement d'un fichier depuis un conteneur
public
À ce stade là le service de stockage d'objet est
fonctionnel. Cependant nous souhaitant lister les objets de manière
présentable et facilement manipulée par les consultants de ce
conteneur. Pour cela nous avons travaillé sur les Access Control List
(ACL ou liste de control d'accès) et sur les métadonnées
du conteneur que nous présenterons dans la partie Annexe plus en
détail. Cette figure montre le changement que nous avons apporté
à la version par défaut que propose le service Swift :
Figure 37 : optimisation de
la liste des objets avec des liens cliquables
Un accès depuis un téléphone portable
avec le lien du conteneur « site » permet la consultation
et le téléchargement des fichiers comme le montre la figure
suivante :
Figure 38 : vue du conteneur
depuis un smartphone non connecté à la plateforme
Cloud
Le service de stockage d'objet Swift contrairement à
Swift permet l'hébergement des sites internet de telle façon
à ce que le lien URL d'un conteneur public donné pointe vers un
fichier de type index.html affichant par conséquence le site internet
généré par le code html, sans pour autant publier le
contenu du conteneur. Pour présenter ceci nous allons travailler en
parallèle avec les ACL et les métadonnées sur une
requêteHeader afin de permettre au conteneur de pointer
directement sur le site internet hébergé. Les commandes
associées sont dans la partie annexe, et le résultat se
présente ainsi :
Figure 39 :
présentation du site internet hébergé dans le
cloud
3.2.3.
Implémentation du service de système de fichiers partagé
(Manila)
Ce service est lancé en 2015 afin de combler certaines
failles du service Cinder et du service Swift, dont la plus importante et la
notion de partage. Ce qui veut dire qu'une fois un partage créé
et monté sur une ou plusieurs instances ces dernières peuvent
tous partager l'accès aux fichiers et même accéder
simultanément. La vérité sur ce service c'est qu'il est en
plein développement et qu'une fonctionnalité pareille n'apporte
pas un grand changement ni un intérêt au grand public c'est un
service qui est en plein développement et que son exploitation ne peut
affecter en force l'utilisation du Cloud, n'empêche qu'il reste un
service intéressant à connaitre.
Figure 40 :
Présentation du service de fichiers partagés dans le tableau de
bord
Manila supporte plusieurs types de backends de drivers et de
protocole de partage, par défaut il utilise le backend et le driver
Genericque nous pouvons travailler avec ou alors le changer pour
utiliser d'autres comme GlusterFS, NetApp, CephFS ...etc. Le backend Generic
est utilisé à des fins de test accompagné du Protocol
NFS.
Avant de pouvoir créer un partage, l'administrateur
doit créer un type de partage afin que l'utilisateur en serve pour
créer le partage. Manila supporte deux types de partage un type qui
prends en charge les serveurs de partage, et un type qui ne les prend pas en
charge. Par défaut il existe un type de partage qui prends en charge les
serveurs de partage. Cela nécessite la création d'un serveur de
partage et d'un réseau de partage. Nous allons créer un type qui
ne les prend pas en charge c'est-à-dire que le réseau de partage
sera géré par Neutron. Cette figure montre la création du
type de partage :
Figure 41 : Création
de type de partage
L'utilisateur pourra donc créer des partages, en
précisant le protocole à utiliser (NFS dans notre cas), la taille
et le type de partage comme suit :
Figure 42 : Création
d'un partage
Figure 43 :
Présentation du Partage
3.2.4. Utilisation
privée du stockage offert par la solution Cloud :
Le stockage offert par notre Cloud peut être exploiter
pour des fins personnelles et privées, de telle sorte que l'utilisateurs
se connecte à la plateforme Cloud et utilise le stockage offert par
l'administrateur pour sauvegarder ses propres données (Documents,
images, vidéos ...etc). Nous avons créé un projet (un
ensemble de ressources) pour l'attribuer à un utilisateur en tant
qu'administrateur (i.e. l'administrateur ne pourra pas consulter les
données stockées dans le projet). Les figures suivantes montrent
comment un utilisateur se connecte, stocke et consulte ses données via
un smartphone.
Figure 44 : Connexion de
l'utilisateur au Cloud depuis un Smartphone
L'administrateur crée un projet avec le nom de
« Documents_personnels » et l'utilisateur avec le nom
« assalahalla » en tant qu'administrateur de son projet.
Figure 45 : Nom de projet et
d'utilisateur
Le tableau de bord se présente ainsi :
Figure 46 : Tableau de bord
de l'utilisateur depuis smartphone
Lorsque l'utilisateur décide par exemple
d'héberger ses fichiers dans le Cloud, il n'a qu'à se rendre sur
l'onglet « stockage d'objets » puis conteneur, il pourra
ensuite créer des conteneurs « images »
« vidéos » « documents » ...etc.
comme le montre la figure suivante :
Figure 47 :
Téléchargement de fichier dans le conteneur
L'utilisateur pourra donc consulter son espace de stockage et
pet choisir de rendre l'accès public à un conteneur donné,
comme le montre la figure suivante
Figure 48 : Liste des objets
dans le conteneur de l'utilisateur
3.3. Conclusion
Le travail réaliser dans le but de
l'amélioration des services de stockage se résume en trois
points, premièrement un changement dans la configuration du service
Neutron a été apporté pour permettre l'accès au
Cloud depuis son URL et assurer la connectivité entre les instances et
l'extérieur (Internet) en adoptant le mécanisme de driver Open
vSwitch qui permet de configurer un pont extérieur à l'interface
de réseau, deuxièmement l'implémentation du service de
stockage en objet Swift permettant ainsi aux utilisateur de créer
télécharger supprimer et consulter et modifier leurs fichiers
(images, vidéos, son, textes, PDF...) et la manipulation des ACLs,
métadonnées et headers afin de proposer une consultation fluide
et présentable des objets du conteneurset dernièrement nous avons
implémenter le service de systèmes de fichiers partagé qui
permet de créer des partage de fichiers entre les instances.
Conclusion
générale
La gestion efficace des données informatiques internes
est l'une des plus importantes problématiques rencontrées chez
les entreprises, les organisations et les institutions. Bien que les solutions
de services de Cloud soient de plus en plus nombreuses, celles de services de
stockage le sont plus. En effet le marché de la technologie a connu une
énorme hausse de systèmes dédiés au stockage dans
les environnements du Cloud, nous retrouvons les systèmes de stockages
open source : LVM, NFS, Ceph, Gluster ou payant : EMC et IBM.
Les systèmes de stockage dans le Cloud sont
répartis en trois catégorie de services, ils offrent soit le
stockage en bloc ou en objet ou en fichiers partagés, il existe des
solutions qui propose deux types de stockages
comme « Gluster » et d'autre qui supportent les trois
stockages tel que la solution Ceph. Chaque type de stockage utilise une
manière qui lui est propre afin de stocker des données qui sont
elles-mêmes différentes d'un type à un autre (i.e. chaque
type de stockage prend en charge des types de données
spécifique).
Notre travail consiste donc à étudier, analyser
et puis comparer entre les services de stockages Cloud open sources existants
afin de sélectionner et implémenter la meilleure des solutions
proposant le stockage en objet et en fichiers partagé dans la
plateformeCloud OpenStack.De plus, nous avons réussis à rendre le
Cloud accessible à tout le monde (lorsque le serveur est allumé).
Cette étape nous était essentielle puisqu'après
l'implémentation des services de stockage d'objets et de partage, il
était intéressant d'offrir un stockage en tant que service aux
utilisateurs finaux. Pour cela nous avons,en premier lieu, améliorer le
système de réseau qui assure la connectivité des instances
et le système de stockage car avec l'architecture initiale les instances
n'étaient pas accessibles depuis l'extérieur, de plus notre Cloud
ne pouvait pas être exploité que depuis notre machine physique, ce
qui n'est plus le cas maintenant : notre Cloud est maintenant accessible
depuis l'extérieur.
Afin d'assurer la meilleure scalabilité du
système, la fiabilité des données, la
sécurité d'accès aux Cloud et la prise en charge des
données souvent modifiés et non structurés nous avons
opté pour le service Swift, afin de permettre grâce à son
architecture plate le stockage de données volumineux,
l'hébergement des sites internet et des Web applications et la libre
consultation du contenu des conteneurs par le grand public grâce à
l'API REST (http). Cependant, puisque Swift ne propose pas des volumes
bootables, il ne permet pas l'exécution des machines virtuelles,
d'où l'importance de le combiner avec le stockage Cinder. En dernier
nous avons implémenter le service de systèmes de fichiers
partagé « Manila » avec le backend
Generic qui propose des fichiers partageables entre les instances
comblant la lacune du stockage en bloc (la non prise en charge de partage de
volume). Concernant le service de réseau nous avons opté pour le
mécanisme de driver Open vSwitch qui propose un port externe (br-ex)
permettant l'accès aux instances de l'extérieur
Après avoir modifier la configuration du réseau
les instances sont désormais accessibles via les protocoles ICMP et TCP.
De plus, suite à l'implémenter les services
« Swift » « Manila » en plus de
« Cinder », l'utilisateur a donc la possibilité
d'accéder au Cloud et utiliser les différents types de
stockage : des volumes pour les attacher aux machines virtuelles, des
partages montés sur des machine virtuelles pour créer des
fichiers facilement consultables par d'autres instances (machines virtuelles)et
des conteneurs afin de stocker et consulter ses données.
Perspective
Comme perspectives de ce projet, il serait intéressant
de travailler sur :
- Le développement d'application
web : en utilisant HTML, PHP, CSS et JavaScript, des outils tels
que les plateformes Angular et NodeJs et Django. Ces applications Web vont
être hébergées dans les conteneurs du service Swift afin de
profiter de ses fonctionnalités en termes de puissance,
sécurité, scalabilité et l'haute disponibilité.
- L'intégration du service de stockage d'objet
de Ceph avec Keystone : RADOSGW est le service de stockage
d'objet de Swift, il peut remplacer Swift après son intégration
avec keystone (le service d'identité par défaut d'OpenStack).
- L'intégration du CephFS comme un backend de
Manila : il est intéressant de changer le backend Generic
utilisé dans ce travail pour le remplacer avec CephFS étant
donné qu'OpenStack prend en charge le système de stockage
distribué Ceph.
Bibliographie
[1]
|
«Qu'est-ce que la virtualisation ?. Redhat.
https://www.redhat.com/fr/topics/virtualization/what-is-virtualization».
|
[2]
|
«Virtualization Technology & Virtual Machine Software :
What is Virtualization? (2021, 14 janvier). VMware.
https://www.vmware.com/fr/solutions/virtualization.html».
|
[3]
|
«http://www.yottatech.co.kr/eng/sub/sub.php?code=007001,»
[En ligne].
|
[4]
|
«Virtualisation des serveurs
https://www-igm.univ-mlv.fr/~dr/XPOSE2008/virtualisation/definitions.html».
|
[5]
|
«Cours cloud & virtualisation , Soumia zertal ,
université Larbi Ben Mhidi
https://www.researchgate.net/publication/338925290_Cours_cloud_virtualisation».
|
[6]
|
«Mise en place d'un système de virtualisation des
serveurs dans un réseau informatique avec vsphere server (cas de Sri/uni
lu)
https://www.memoireonline.com/01/20/11542/Mise-en-place-d-un-systeme-de-virtualisation-des-serveurs-dans-un-reseau-informatique-a».
|
[7]
|
«https://www.cogitime.fr/le-marche-du-cloud-computing-en-plein-essor-une-opportunite-pour-les-tpe-pme/,»
[En ligne].
|
[8]
|
«NIST. (2011, Septembre). «The NIST Definition of Cloud
Computing (Draft)».».
|
[9]
|
K. S. R. D. Q. J.SRINIVAS1, «CLOUD COMPUTING BASICS,»
International Journal of Advanced Research in Computer and Communication
Engineering Vol. 1, Issue 5, july July 2012.
|
[10]
|
V. K. N. P. Garbacki, «Efficient Resource virtualization and
sharing strategies for heterogeneous Grid environments,» in Proc.
IFIP/IEEE IMSymp, p. pp 40_49, 2007.
|
[11]
|
E. A. D. a. M. G. R. Aoun, «Resource provisioning for
enriched services in Cloud environment,» IEEE CloudCom Conf, p.
296_303, 2010.
|
[12]
|
http://www.cloud-entreprise.info/historique-cloud-computing/.
|
[13]
|
«https://www.salesforce.com/news/stories/the-history-of-salesforce/».
|
[14]
|
«Tim, M. (2009, Octobre). «Security and Privacy».
Publier par: O'Reilly Media, édition 1, USA.».
|
[15]
|
«A Systematic Review on Cloud Computing - Scientific Figure
on ResearchGate. Available from:
https://www.researchgate.net/figure/Overview-of-Cloud-Computing_fig1_329555455
[accessed 6 Sep, 2021]».
|
[16]
|
«Vincent Kherbache and all, Cloud Computing,» IUT
Nancy Charlemagne, 2009/2010.
|
[17]
|
M. B. GUELTOUM, «Sécurité des applications
métiers au niveau du Cloud Computing : Contrôle d'accès au
niveau des APIs du Cloud Computing».
|
[18]
|
«Amadeus. (2014, Juin). «The Amadeus Data
Centre».».
|
[19]
|
«Liliana, F. et al. (2013, Octobre). «Cloud Security:
State of the Art», publier dans: Security, Privacy and Trust in Cloud
Systems, Springer Berlin Heidelberg, 2014. (pp.3-44).».
|
[20]
|
M. Jayasurya, «Cloud Computing-Basics,»
International Journal of Engineering Research & Technology (IJERT) ,
2015.
|
[21]
|
Rajkumer, B. et al. (2013, Mai). «Mastering Cloud Computing:
Foundations and Applications Programming». Publier par: Morgan Kaufmann..
|
[22]
|
«Dan C. Marinescu. (2013, Mai). «Cloud Computing:
Theory and Practice» . Amesterdam: Livre publier par Morgan Kaufmann,
ELsevier.».
|
[23]
|
«Wygwam Bureau d'expertise technologique de Aur'elien
Prunier. Le Cloud Computing: Réelle révolution ou simple
évolution ? 2012».
|
[24]
|
«Pascal Sauliere, Cloud et sécurité, Microsoft
tech.days, 2011.».
|
[25]
|
«site officiel d'OpenStack. http://www.openstack.org».
|
[26]
|
M. Armbrust, A. Fox, R. Griffith, et al., A view of Cloud
Computing..
|
[27]
|
I. A. N. S. A. R. J. A. M. Guarav Bhatia, «Design and
Implementation of Private Cloud for Higher Education using OpenStack,»
2018.
|
[28]
|
M. Sridevi Bonthu, «Building an Object Cloud Storage Service
System using OpenStack Swift,» International Journal of Computer
Applications, 2014.
|
[29]
|
R. K. T. Deepak Bajpai, «Comparing Replication Strategies
For Financial Data on Openstack based Private cloud,» chez The seventh
iInternational Conference on Cloud Computing, GRIDs, and virtualization,
Winnipeg Canada, 2016.
|
[30]
|
C. G. F. L. Y. C. Weichao Ding, «Construction and
Performance Analysis of Unified Storage Cloud Platform Based on OpenStack with
Ceph RBD,» IEEE International Conference on Cloud Computing and Big
Data Analysis, 2018.
|
[31]
|
M. S. R. P. P. V. R. Kulkarni, «A comparative Review on Ceph
and Swift Open Source Cloud Storage Platform,» International
Conference on Global Trends in Signal Processing, Information Computing and
Communication, 2016.
|
[32]
|
J. C. LEÓN1, «Advanced features of the CERN OpenStack
Cloud,» EPJ Web of Conferences 214, 07026, p. 3, 2019.
|
[33]
|
Red Hat OpenStack Platform, «Storage Guide, Understanding,
using and managing persistent storage in OpenStack,» [En ligne].
|
[34]
|
O. khedher, Mastering openstack Design Deploy and manage a
scalable Openstack infrastrucutre.
|
[35]
|
Understanding, using, and managing persistent storage in
OpenStack.
|
[36]
|
Oak Ridge National Laboratory, Tennessee Technological
University, «Secure storage architectures,» US DEPARTMENT OF ENERGY,
Janvier 2015.
|
[37]
|
Red Hat, «Stockage en mode fichier, bloc ou objet ?,»
[En ligne]. Available:
https://www.redhat.com/fr/topics/data-storage/file-block-object-storage.
|
[38]
|
A. HERRERA, «Developing a software-defined foundation with
the pillars of block, file, and object storage,» 29 janvier 2012. [En
ligne]. Available: https://www.datacore.com/blog/go-beyond-object-storage/.
[Accès le 24 août 2021].
|
[39]
|
Amar Kapadia, Sreedhar Varma, Kris Rajana, Implementing Cloud
Storage with OpenStack Swift, Packt Publishing, May 2014.
|
[40]
|
G. L. J. P. John Fruehe, «Scalable & Flexible Storage
Options Help Drive Cloud Adoption on Openstack,» Moor Insights &
Strategy.
|
[41]
|
NetApp, Inc, «OpenStack Deployment and Operations
Guide,» NetApp, Inc, September 2017.
|
[42]
|
D. L. B. Alves, «Implementation of a Private Cloud,»
univrsity of lisbon, Setembre 2016.
|
[43]
|
M. Patrascoiu, «Manila - OpenStack File Sharing
Service,» CERN openlab Summer Student Report, August 2015.
|
[44]
|
OpenStack Documentation Team, «Understanding, using, and
managing persistent storage in OpenStack,» [En ligne]. Available:
https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/16.1/html-single/storage_guide/index.
|
[45]
|
r, «Storage services: OpenStack Cinder and Swift,» chez
RCSIS USER guide, West Cambridge Data Centre, Research Computing
Services at the University of Cambridge.
|
[46]
|
Red Hat, «OpenStack Networking Overview,» [En ligne].
Available: https://access.redhat.com/articles/1146173.
|
Annexe A : Commandes
d'installations et de configurations
Installation d'Openstack Train
sur Centos 7 :
Modifier le fichier etc/environment
vi /etc/environment
LANG=en_US.utf-8
LC_ALL=en_US.utf-8
Vérifier le statut du firewall puis le stopper et le
désactiver
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
Vérifier le statut de NetworkManager puis le stopper et
le désactiver
systemctl status NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager
Désactiver puis activer le réseau
systemctl enable network
systemctl start network
Désactiver SELINUX
vi /etc/selinux/config
SELINUX=disabled
Rebooter le système
reboot
installer openstack Train
sudo yum install -y centos-release-openstack-train
Mettre à jour les package
sudo yum update -y
Installer packstack
sudo yum install -y openstack-packstack
En effet depuis la version Stein d'Openstack (avril 2019) si
on ne prise pas le backend openvswitch(OVS), packstack l'installe avec OVN.
Notre version d'Openstack est Train (Octobre 2019) raison pour laquelle nous
avons précisé le backend dans la commande de packstack
suivante :
packstack -allinone--os-neutron-l2-agent=openvswitch
--os-neutron-ml2-mechanism-drivers=openvswitch
--os-neutron-ml2-tenant-network-types=vxlan
--os-neutron-ml2-type-drivers=vxlan,flat -os-manila-instal=y --provision-demo=n
--os-neutron-ovs-bridge-mappings=extnet:br-ex
--os-neutron-ovs-bridge-interfaces=br-ex:eth0
Redémarrer le service de réseau
service network restart
Configuration du service de réseau Neutron
Configurer le fichier ml2_conf.ini
Vi /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
type_drivers = flat,vlan,vxlan,gre
mechanism_drivers = ovs
Configurer les scripts suivants
Vi /etc/sysconfig/network-scripts/ifcfg-br-ex:
DEVICE=br-ex
TYPE=OVSBridge
DEVICETYPE=ovs
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
Vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
DEVICE=enp0s3
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
Configuration du service de stockage en
objet
Configurer le proxy-server.conf de telle façon à
contenir les informations de sécurité et à prendre en
charge l'hébergement des sites web static
Vi /etc/swift/proxy-server.conf
Configuration du service de systèmes de
fichiers partagés
Installer le plugin de l'interface graphique de Manila dans le
Dashboard avec cette commande :
yum install openstack-manila-ui -y
Redémarrrer le service httpd
Systemctl restart httpd
Redémarrer le service de memcache
Systemctl restart memcached
Configurer le fichier manila.conf de telle façon
à indiquer le protocol et le backend à utiliser :
Vi /etc/manila/manila.conf
Transformer le format d'affichage du conteneur du XML
vers une liste avec lien cliquables
Source les crédentiels
source keystonerc_admin
Créer des ACL de lecture avec cette commande
swift post -r '.r:*,rlistings' nomduconteneur
Créer des métadonnées avec la
requête post :
swift post -m 'web-listings: true' nomduconteneur
Créer le Héader afin de modifier le titre du
lien d'affichage
swift post -H "X-Container-Mea-web-Listings-Label: < List
des objets du conteneur>
Transformer la vue basique de la liste d'objet du conteneur
avec un fichier CSS importé dans le conteneur :
swift post -m 'web-listings-css: nomdufichiercss'
nomduconteneur
Héberger un site internet dans le Conteneur du
service Swift
Importer tous les documents et fichiers lié aux site
internet dans un conteneur via le dashboard
Rendre le conteneur public avec la commande suivante :
swift post -r '.r:*,rlistings' nomduconteneur
utilizer les métadonnées suivantes :
swift post -m 'web-listings: true' nomduconteneur
Indiquer le fichier html du site internet avec la commande
suivante :
swift post -m `web-index:index.html'
Indiquer le fichier css du site avec la commande suivante
swift post -m 'web-listings-css:style.css' nomduconteneur
* 1 Les termes « grid
computing » et « cluster computing » ont été
utilisés de manière presque interchangeable pour décrire
des ordinateurs en réseau qui exécutent des applications
distribuées et partagent des ressources. Ils ont été
utilisés pour décrire un ensemble si diversifié de
solutions informatiques distribuées que leur signification est devenue
ambiguë. Les deux technologies améliorent les performances des
applications en exécutant des calculs parallélisables
simultanément sur différentes machines, et les deux technologies
permettent l'utilisation partagée des ressources distribuées.
* 2 Le CRM ou gestion de la
relation client (Customer Relationship Management) est une stratégie de
gestion des relations et interactions d'une entreprise avec ses clients ou
clients potentiels
* 3Un certificat TLS
(Transport Layer Security), également nommé certificat SSL
(Secure Sockets Layer) est un certificat numérique que l'on associe
à un nom de domaine ou une URL. Il permet d'établir avec
certitude le lien entre le site internet et son propriétaire
(entreprise, marchand ou individu).
* 4LDAP (Lightweight
Directory Access Protocol) est un protocole ouvert et multiplateforme
utilisé pour l'authentification des services d'annuaire. LDAP fournit le
langage de communication utilisé par les applications pour communiquer
avec d'autres serveurs de services d'annuaire
* 5Kerberos est un protocole
d'authentification réseau qui repose sur un mécanisme de
clés secrètes (chiffrement symétrique) et l'utilisation de
tickets, et non de mots de passe en clair, évitant ainsi le risque
d'interception frauduleuse des mots de passe des utilisateurs.
|