View
109
Download
0
Embed Size (px)
Citation preview
KOUOTOU Aboubakar Sidiki
RESUME Pour développer leur activité, les entreprises ont besoin de contrôler les coûts, réduire
les risques et favoriser la flexibilité dans le choix des solutions informatiques. Le déploiement
rapide des environnements de tests, l'évaluation et la comparaison de plusieurs logiciels sans
investissements supplémentaires sur le matériel, la mise en œuvre rapide et en production de
nouveaux services à la demande; ce sont là quelques possibilités que nous offre la
virtualisation. Le compromis est donc désormais trouvé entre faible coûts et amélioration de
l'agilité des organisations qui ont, grâce à la consolidation des ressources logiciels et au
partage des ressources matérielles que leur offre la virtualisation, une solution pour réduire les
coûts et améliorer leur productivité. Penser, planifier et mettre en œuvre un projet de
virtualisation des serveurs, est une tâche ardue pour les administrateurs système car les outils
et les concepts ici sont divers et pas encore standardisés.
L'objectif de ce mémoire est donc de proposer une méthode simple, permettant la
conception et le déploiement d'un système virtualisé, l'intégration d'applications d'entreprise
sur des machines virtuelles accessibles par le réseau et enfin l'observation des performances et
l'évaluation des coûts d'entretien par rapport à un système "normal".
Le travail effectué s'appuie sur les technologies de virtualisation. Nous proposons une
méthode de virtualisation, que nous utilisons pour mettre en place notre système virtualisé sur
une machine linux dont les outils d'administration du réseau et du stockage, nous ont servi de
support pour le déploiement de nos machines virtuelles. Certaines de celles-ci hébergent des
applications web de GED et d'ERP auxquelles l'utilisateur final a un accès transparent via le
réseau.
Mots clés: virtualisation, hyperviseur, système hôte, système invité, consolidation des
serveurs
VIRTUALISATION ET INTEGRATION DES APPLICATIONS
D’ENTREPRISE EN ENVIRONNEMENT DE PRODUCTION
ABSTRACT Organizations need to control costs, improve quality, reduce risks and increase
business agility. These elements are essential for business' success. Virtualization allows the
rapid establishment of development systems for the creation of custom-software, the ability to
quickly set up test environments, the capability to provide alternate software solutions and
compare them without extensive hardware investments, and many more features. Lower costs
and business flexibility are no longer trade-offs. By enabling IT resources to be pooled and
shared, enterprises are provided with the ability to reduce costs and improve overall IT
performances. However, a bad implementation of virtualization can lead companies to
catastrophic losses.
The aim of this dissertation is to avoid this by on the one hand help CEOs to have a
view of a virtualization project, and on the other hand provide system administrators with a
simple "step by step" virtualization guide. We accomplish this by designing and setting up a
virtualized system, deploying GED and ERP applications on accessible network virtual
machines, and evaluating costs of the virtualized system compared to a "normal" one.
Our work is based on virtualization technologies. Linux systems networking and
storage administration utilities are used to deploy and configure enterprise applications on
virtual machines for a transparent network access.
Key words: virtualization, hypervisor, host system, guest system, servers’
consolidation
1. INTRODUCTION ˝ La virtualisation est l’ensemble des techniques matérielles et/ou logicielles qui
permettent de faire fonctionner sur une seule machine plusieurs systèmes d’exploitation
et/ou plusieurs applications, séparément les uns des autres, comme s’ils fonctionnaient
sur des machines physiques distinctes ˝ [WIKIV 09].
La virtualisation offre ainsi de nouvelles opportunités aux entreprises dans la gestion
et la mise en œuvre de leurs infrastructures réseaux et la configuration de leur parc de
serveurs. En effet, les objectifs de toute technologie de virtualisation sont les suivants:
Ajouter une couche d'abstraction entre le matériel et les applications;
Favoriser la réduction des coûts de maintenance et réduire la complexité de
l'administration système;
Augmenter la sécurité et la fiabilité par l'isolation des ressources ;
Optimiser l'utilisation des ressources.
On peut donc comprendre pourquoi malgré leur assez récente arrivée à maturité, les
produits de virtualisation ont rapidement conquis le monde de l'administration système et
des infrastructures d'hébergement.
Notre travail aura donc pour but de : - Concevoir et proposer une méthode de virtualisation des serveurs pour une entreprise;
- Implémenter un prototype qui permettra de valider cette méthode.
Pour notre prototype, il s’agira de déployer sur une même ressource des
environnements de travail hétérogènes accessibles en temps réel via le réseau et des
applications d'entreprise (ERP et GED) dans des environnements virtualisés.
Notre document est structuré comme suit :
La section 1 qui est une introduction est suivie de la section 2 qui explique le contexte de
notre travail et définit clairement la problématique du sujet traité.
La section 3 est une étude approfondie des différents concepts théoriques et techniques
liés à la virtualisation. Il permettra aussi de scruter les différents produits du marché et
débouchera sur le choix d'une solution à utiliser pour nos besoins. Nous terminerons cette
partie par une brève présentation des architectures web, qui sont celles des applications que
nous avons déployées.
La section 4 définit clairement une méthode de virtualisation et détaille les différentes
étapes de la mise en œuvre de notre serveur virtualisé puis fait une analyse des résultats
obtenus.
Enfin nous achèverons notre travail par une synthèse du travail effectué, les difficultés
rencontrées et les perspectives d'évolution de notre méthode de virtualisation.
2. CONTEXTE ET PROBLEMATIQUE
Avec l’arrivée à maturité des outils libres de virtualisation, il est nécessaire de définir
une nouvelle offre de services d’administration systèmes pour les entreprises. Cependant, la
définition d’une offre nécessite une maîtrise technique des outils associés. A l’heure actuelle,
très peu d’administrateurs système ont une connaissance poussée des outils de virtualisation
au Cameroun. En environnement serveur, les systèmes d’exploitation linux sont très utilisés
dans les PME et PMI. D’où la nécessité de travailler avec des outils libres fonctionnant avec
les systèmes GNU/Linux, eux aussi libres. De plus la mise sur pied d’un serveur virtualisé
nécessite la prise en compte des ressources matérielles et des ressources logicielles à
déployer.
Traditionnellement, l'usage était de consacrer une machine physique à un service
(messagerie, DHCP, Intranet, etc.), tant pour des raisons pratiques (associer une machine à un
rôle unique) que pour la sécurité (séparation des services). Cette architecture favorise un
déséquilibre notoire dans l'utilisation des serveurs avec des serveurs surchargés (messagerie)
et des serveurs sous-utilisés (DNS). Dans la plupart des cas une sous utilisation des
ressources serveurs est à noter. Le problème est donc de proposer un modèle de virtualisation
des serveurs pour une entreprise favorisant à la fois un gain sur le plan financier et des
performances proches des systèmes non-virtualisés sur un plan technique.
Aussi devrons-nous mettre en oeuvre une méthode de virtualisation des serveurs
d’entreprise. Cette méthode sera validée par un prototype. Nous déploierons aussi des
applications libres d’ERP (open ERP) et de GED (Alfresco) très demandées en entreprise
actuellement pour présenter les résultats de notre travail.
3. VIRTUALISATION : ÉTAT DE L’ART Depuis 2006, les deux principaux fabricants de processeurs X86 que sont Intel et
AMD ont mis sur pied un jeu d’instructions destiné aux outils de virtualisation. Généralement
désignées extensions de virtualisation, ces instructions sont appelées VT (Virtual
Technology) [NSL 06] chez Intel et SVM (Secure Virtual Machine) chez AMD [AMD 06].
Ces outils permettent aux machines virtuelles d’approcher les performances de 100% par
rapport aux systèmes natifs.
3.1 Définition des concepts
3.1.1 Virtualisation
Les définitions du concept de virtualisation sont nombreuses. Cependant quelques
soient la technologie ou l'objectif final visé, la virtualisation permet l'ajout d'une couche
d'abstraction entre le matériel et les applications. Qu’il s’agisse des ressources physiques d'un
serveur ou d'un réseau, des disques de stockage d'un ensemble de machine, des techniques et
outils de virtualisation existent. Toutefois, dans le cadre de notre étude (virtualisation des
serveurs), nous pouvons définir la virtualisation comme le moyen de faire fonctionner sur une
seule machine physique, plusieurs systèmes d’exploitation ou plusieurs applications.
3.1.2 Hyperviseur
Un hyperviseur est une couche logicielle qui abstrait les ressources physiques de la
machine, permettant ainsi l'exécution de plusieurs systèmes d'exploitation sur la même
machine. L'hyperviseur est installé sur le système d'exploitation hôte (ou dom0, ou host) et
contrôle le partage des ressources avec les systèmes invités (ou domU, ou guest). Plusieurs
technologies de virtualisation se basent sur un hyperviseur pour émuler le matériel du système
hôte.
3.1.3 Domaine
Dans la terminologie des systèmes à hyperviseur, un domaine est une machine
virtuelle, c'est-à-dire un système d'exploitation s'exécutant sur des ressources virtualisées.
Ainsi on distingue deux sortes de domaines:
Le domaine hôte (ou dom0, ou host) qui est le système exécutant l'hyperviseur ;
Le domaine invité (ou domU, ou guest) qui est une instance de machine virtuelle.
3.2 La virtualisation des serveurs
Plusieurs techniques peuvent être utilisées pour la virtualisation des serveurs. Les plus connues sont l’isolation, l’émulation et les systèmes à hyperviseurs.
3.2.1 L’isolation L'isolation (aussi appelé cloisonnement) est une technique qui intervient au sein d’un
même système d'exploitation. Elle permet de séparer un système en plusieurs contextes ou environnements d’exécution. Chacun d'entre eux est régi par l'OS hôte, mais les programmes de chaque contexte ne sont capables de communiquer qu'avec les processus et les ressources associés à leur propre contexte [SMIV 08]. Ce n'est donc pas de la virtualisation à proprement parler. Cependant, l'isolation peut rendre les mêmes services que la virtualisation, notamment grâce à la forte isolation des contextes logiciels, qui peut donc permettre par exemple de faire tourner diverses versions d'une même application sur une même machine. Toutefois il est impossible de faire tourner plusieurs types de systèmes d’exploitation sur un même matériel physique. L’émulation vient donc palier à ce défaut.
3.2.2 L’émulation
Un émulateur est un logiciel permettant de simuler un ou plusieurs OS sur le système
d'exploitation de base [LB 08]. L'émulateur est une machine virtuelle installée sur le système
hôte pour supporter l'exécution d'OS invités. Le système invité n'a pas besoin d'une
quelconque modification pour s'exécuter sur la machine virtuelle. Cette dernière doit simuler
le fonctionnement du CPU et de la RAM afin de permettre à l'invité de tourner de manière
transparente. L'émulateur n'étant en réalité qu'un programme utilisateur sur l'hôte, il peut être
démarré ou arrêté.
Pour réaliser sa tâche, l'émulateur doit interpréter tous les exécutables des invités pour
le processeur du serveur physique disponible. Cette interprétation est coûteuse en termes de
performances et constitue un handicap pour les technologies de virtualisation par émulation.
Pour améliorer la performance des émulateurs, un nouvel outil est né : l'hyperviseur.
3.2.3 Les systèmes à hyperviseur
Bien qu'étant une évolution des émulateurs mais fonctionnant à un niveau plus bas, ils
proposent une approche différente basée sur un contrôle total du matériel par l'hyperviseur. En
effet au démarrage du système d'exploitation hôte, c'est l’hyperviseur qui se démarre en
premier puis passe la main au système pour le démarrage des services et du démon de
l’hyperviseur. Ce dernier reprend alors le contrôle du matériel et se charge de démarrer le
système d'exploitation complet. L'hyperviseur a un accès exclusif au matériel et tous les
systèmes d'exploitation installés, qu'il s'agisse d'un hôte ou d'un invité, passe par lui pour
avoir accès au matériel. Pour permettre une amélioration des performances afin de se
rapprocher de celles des systèmes natifs, deux modes de fonctionnement existent : le mode
paravirtualisé et le mode complètement virtualisé.
La virtualisation complète
La virtualisation complète (ou full virtualization) est l'émulation par l'hyperviseur de
toutes les ressources physiques du serveur. Il présente donc du matériel virtuel aux systèmes
invités qui peuvent dès lors s'exécuter sans jamais se rendre compte qu'ils sont dans un
environnement virtuel.
Figure 1: Système de virtualisation complète
La paravirtualisation
La paravirtualisation fonde son principe sur l'utilisation de systèmes invités au noyau
modifié. Cette modification a pour but d'y incorporer des pilotes spécifiques pour l'accès
concurrent aux ressources à travers l'interface que leur présente l'hyperviseur. Plusieurs
noyaux des systèmes GNU/linux sont patchés pour le support des pilotes paravirtualisés. En
permettant un accès direct au matériel, la paravirtualisation offre des performances proches
de celles des OS natifs. Mais la nécessité d'utiliser un OS au noyau modifié exclut donc
l'utilisation des systèmes fermés comme Microsoft Windows en mode paravirtualisé.
Figure 2 : Système Paravirtualisé
Conformément à nos objectifs de départ, les systèmes à hyperviseur sont les mieux adaptés pour la définition d’une méthode de virtualisation. Nous allons donc aborder les outils utilisant cette technique.
3.3 Les outils de virtualisation
Plusieurs outils de virtualisation existent sur le marché libre et base essentiellement leurs technologies sur l’une des trois techniques étudiées précédemment. Parmi ceux qui utilisent les hyperviseurs XEN et KVM sont les plus utilisés du marché open source. Nous allons dresser un tableau comparatif des deux solutions.
XEN KVM Hyperviseur externe au noyau linux Module du noyau linux
Gestionnaire de processus propre Gestionnaire de processus de linux Mature et utilisé en production
En développement mais intégré dans la future version de RHEL (un leader des systèmes GNU/Linux)
Problèmes de mise à jour (compatibilité avec les versions du noyau)
Mise à jour simple car module du noyau
Tableau 1 : Comparaison de Xen et KVM
Nous utiliserons KVM pour la simplicité des mises à jour et le support de Redhat.*
Il faut associer à ces hyperviseurs plusieurs outils d’administration :
virt-install et virsh : le premier sert à l’installation et le second à la gestion des machines virtuelles (VMs) en ligne de commande
virt-manager est un utilitaire graphique pour l’installation et la gestion des VMs.
4 MISE EN OEUVRE
4.1 Méthode de virtualisation
Les différents points clés pour mettre en œuvre un serveur virtuel sont inclus
dans notre méthode que nous déclinons en 5 principales étapes :
1. Planifier l'architecture matérielle et logicielle
- Identification des serveurs à déployer ;
- Inventaire des ressources matérielles disponibles et/ou nécessaires ;
- Configuration de l'infrastructure de stockage ;
- Plan d'adressage et de nommage pour les machines virtuelles.
2. Déployer le domaine zéro (dom0)
- Choisir l'outil de virtualisation et les outils d'administration associés ;
- Installer le serveur VNC et/ou activer SSH pour l’accès distant;
- Sécurité du système (SELinux) ;
- Configurer le réseau avant le déploiement des guests.
3. Déployer un serveur d’infrastructure (images des disques (serveur de
fichiers), DHCP, DNS, …)
4. Déployer les machines virtuelles (avec un utilitaire graphique ou en ligne
de commande)
5. Définir une architecture de backup du système.
Cette Nous allons dans la suite essayer de décrire chaque étape de la méthode
4.2 Prototype
Nous allons suivre les étapes de la méthode proposée. Nous commençons par présenter le plan de virtualisation et le réseau virtuel.
domU Nom VM VCPUs RAM min/max (MB)
OS Type de virtualisation (para ou full)
Rôle Applications nécessaires
Nom VL Espace disque (GB)
Adresse IP / MAC
dom0 Hypervisor 2 256/512 FC9 Hyperviseur KVM
KVM, Qemu 10 192.168.0.253/ 00:23:54:C2:81:30 (NIC physique)
dom1 isoServerVM
1 256/512 CentOS 5.1
full Serveur d'images et serveurs dhcp
dhcpd, vsftpd Iso-server 40 192.168.0.252/ 00:23:54:C2:80:01
dom2 Alfresco 1 256/512 Centos 5.1
para Serveur de GED
Alfresco labs 3 final, tomcat 6, MySQL server
alfresco 10 192.168.0.251/ 00:23:54:C2:80:02
dom3 ERP 1 256/512 Centos 5.1
para Applications d'ERP
Openerp-sever, openerp-web, paquetages pythons associés PostgreSQL 8.1
Erp-VL 40 192.168.0.250/ 00:23:54:C2:80:03
Dom4 winXP 1 192/256 Windows XP
full Tester le fonctionnement de XP virtualisé
Winxp-VL
5 192.168.0.248/ 00:23:54:C2:80:04
Tableau 2: Plan de virtualisation du serveur
Figure 3 : Architecture du réseau virtuel
5 CONCLUSION Bilan
Le besoin de réduire les coûts de maintenance et d’entretien des serveurs, la nécessité de
réduire les temps de déploiement et d’intégration des applications par la fourniture
d’applications déjà déployées et prêtes à l’emploi (virtual appliances), ont été les principales
sources de motivations de ce travail.
En étudiant le concept de virtualisation et les différents contours techniques associés,
nous avons pu concevoir et proposer une méthode de virtualisation des serveurs que nous
avons utilisée par la suite pour implémenter un serveur virtuel. Cette démarche permet de
mettre en œuvre de façon simple et efficace un serveur virtuel et pourra par conséquent servir
de support pour le suivi des projets de consolidation des serveurs de ses clients ou pour la
fourniture de machines virtuelles prêtes à l’emploi.
Perspectives
L’administration système nécessite en permanence l’automatisation des tâches de
routine pour plus d’efficacité. Il est alors nécessaire pour rendre notre méthode plus efficace
et favoriser un gain de temps conséquent dans la mise en œuvre d’une plateforme virtualisée :
- De mettre sur pied des scripts de déploiements pour les autres distributions linux
majoritairement utilisés par les PME (Ubuntu, Debian) et des scripts permettant la
programmation du démarrage des machines virtuelles.
- De détailler les méthodes de migrations à chaud
- D’implémenter et de déployer une virtual appliance.
6 REFERENCES
[AMD 06] AMD. 2006. AMD64 Architecture Programmer’s Manual, Volume 2 :
System Programming. AMD, septembre 2006, chapitre 15, pp 355–
412.
[LB 08] Lucas Bonnet, 2008. Etat de l’art des solutions libres de virtualisation pour
une petite entreprise. Bearstech. 98 pages.
[NSL 06] Gil NEIGER, Amy SANTONI, Felix LEUNG, et al. Intel Virtualization
Technology : hardware support for efficient processor virtualization. Intel
Technology. Journal, août 2006.
[SMIV 08] Smile. 2008. Livre blanc : Virtualisation [en ligne]. [Version 1.0, Consulté
le 15-04-2009]. Disponible sur internet : http://www.smile.fr
[WIKIV 09] Virtualization [en ligne]. [Wikipedia]. [Consulté le 10-04-2009].
Disponible sur internet : http://en.wikipedia.org/wiki/Virtualization.