Module Admin des Infrastructures Avancées
Objectif :I Panorama des technologies et outils utilisés aujourd’hui dans les
grandes infrastructures
Trois intervenants :I Lucas Nussbaum ([email protected])I Yohan Parent ([email protected])I Laurent Vallar ([email protected])
Lucas Nussbaum Introduction à la virtualisation 1 / 16
Module Admin des Infrastructures Avancées (2)11 séances : (dont 7 liées à la virtualisation)
1 (LN) Intro virtualisation + LXC/LXD2 (LV) Cloud computing3 (LN) TP Cloud Computing4 (YP) KVM / oVirt5 (LV) Gestion de configuration (Ansible)6 (LN) Réseau et virtualisation7 (YP) Docker8 (YP) Installation automatisée9 (LN) systemd
10 (LV) Kubernetes11 (YP) Haute disponibilité
Evaluation : un examen final, TPs notés
Lucas Nussbaum Introduction à la virtualisation 2 / 16
Introduction à la virtualisation
Lucas [email protected]
Licence professionnelle ASRALLAdministration de systèmes, réseaux et applications à base de logiciels libres
Lucas Nussbaum Introduction à la virtualisation 3 / 16
VirtualisationPrincipe : faire fonctionner plusieurs systèmes d’exploitation sur unseul ordinateur comme s’ils fonctionnaient sur des ordinateurs distincts
Objectifs :I Réduire les coûts
� Moins de serveurs nécessaires� Serveurs mieux utilisés
I Faciliter l’administration� Chaque service isolé sur son propre serveur� Découpler le cycle de vie du matériel de celui des services� Découpler le matériel des services ; Software-Defined
Infrastructure
Mais il faut être capable de gérer de nombreux serveurs !
Deux grandes familles de virtualisation :I ContainersI Hyperviseurs et machines virtuelles (VM)
Lucas Nussbaum Introduction à la virtualisation 4 / 16
Containers (OS-level virtualization)I Un seul noyau, plusieurs espaces utilisateurs (contextes)I chroot, Linux-VServer, OpenVZ, Linux Containers (LXC), BSD
Jails, Docker
(images Wikipédia)
Lucas Nussbaum Introduction à la virtualisation 5 / 16
LXC & Docker
I Base technique : fonctions du noyau Linux� Control groups (cgroups) : groupes de processus� Namespaces : limite l’accès et la visibilité des ressources
F sudo unshare -npf -mount-proc bash ; lancer unshell dans un cgroup avec des nouveaux namespacesPID et NET
� Containers (Docker, LXC) = cgroups + namespaces +interface
Lucas Nussbaum Introduction à la virtualisation 6 / 16
HyperviseursI Un noyau par système hébergéI L’hyperviseur agit comme intermédiaire entre le système invité
(guest) et le matérielI Distinction entre hyperviseurs de Type 1 et de Type 2
� Floue et peu utile en pratique 1
I Xen, KVM, VMWare, VirtualBox
1. http://blog.codemonkey.ws/2007/10/myth-of-type-i-and-type-ii-hypervisors.html
Lucas Nussbaum Introduction à la virtualisation 7 / 16
Xen
I Un des projets les plus anciens, la solution libre la plus utiliséeI Vocabulaire :
� OS privilégié = Dom0� OS invité = DomU
I Deux modes d’utilisation� Paravirtualisation
F Noyau spécifique dans le domUF Très bonnes performances
� Virtualisation matérielleF Virtualisation transparente pour le système invitéF Besoin d’un support dans le processeur (AMD-V,
Intel VT)I En cours d’intégration dans le noyau Linux
Lucas Nussbaum Introduction à la virtualisation 8 / 16
KVM
I Projet un peu plus jeune (2006), mais de plus en plus populaire
I Basé en partie sur Qemu (émulateur) pour le support despériphériques
I Entièrement intégré dans le noyau Linux → facile à utiliser
I Support de la virtualisation dans le processeur obligatoire� Ne fonctionne pas sur les processus anciens
I Paravirtualisation (virtio) pour les performances (réseau, disque)
Lucas Nussbaum Introduction à la virtualisation 9 / 16
Containers : avantages & inconvénients
I Partage facile (plus fluide) de ressources entre containers :espace disque, mémoire, caches� Plus de containers par serveur physique (densité)
I Couche de virtualisation plus légère� Meilleures performances, quasi équivalentes à une machine
physiqueI Mais isolation plus faible qu’avec des VM
� Plus difficile de contrôler l’utilisation des ressources� Surface d’attaque plus importante ; sécurité
I Démarrage et instanciation des containers plus rapide (quelquessecondes vs quelques dizaines de secondes)
I Forte adhérence entre l’OS du container et l’OS hôteI La migration en cours d’exécution fonctionne moins bien
Lucas Nussbaum Introduction à la virtualisation 10 / 16
Plusieurs échelles pour la virtualisationI Un seul serveur
I Quelques serveurs� Géré avec des solutions légères comme libvirt (virsh,
virt-manager)
I Toute une infrastructure� Y compris le stockage (centralisé ou distribué) et le réseau
; infrastructure hyper-convergée� Solutions : Ganeti, oVirt (séance 4), Proxmox� Gestion centralisée, haute disponibilité intégrée, etc.
I Cloud (virtualisation multi-tenants) – séances 2 et 3� Privés (internes à l’organisation) : OpenStack, CloudStack� Publics : Amazon Web Services (pdm : 47.1%), Microsoft
Azure (10%), Google Cloud Platform (3.95%), OVHF Crédits gratuits pour étudiants (par exemple
http://www.awseducate.com/)
Lucas Nussbaum Introduction à la virtualisation 11 / 16
Connexion au réseau
La machine virtuelle exporte une interface virtuelle sous forme de tapdans l’hôte, puis différents modes de fonctionnement possibles :I Le système hôte agit comme un routeur (niveau 3)
� Éventuellement avec du NAT
I Le système hôte agit comme un bridge/pont (niveau 2)� Les machines virtuelles sont directement visibles sur le
réseau physique
I Disponible dans KVM uniquement :NAT en mode utilisateur
I Plus de détails dans la séance 6
Lucas Nussbaum Introduction à la virtualisation 12 / 16
Cloud ComputingPrincipe de base : l’informatique comme un serviceI Hébergement local ; externalisationI Automatisation, élasticité
Différents types de Cloud :I IaaS (Infrastructure as a Service) : machines virtuelles, stockage
� Amazon Web Services, Google Cloud Platform, Microsoft Azure� Anciennement : Dedibox, Linode
I PaaS (Platform as a Service) : déploiement facilité d’applicationspour une certaine plate-forme. intégration avec serveur de basede données.� Google AppEngine (Python), Heroku (Rails), Azure (ASP.NET)� Anciennement : mygale.org ,, pages perso de Free?
I Saas (Software as a Service) : application hébergée� Google Apps (Docs), Salesforce.com� Anciennement : Wordpress.com?
Lucas Nussbaum Introduction à la virtualisation 13 / 16
Cloud & Pizzas
source : https://www.linkedin.com/pulse/20140730172610-9679881-pizza-as-a-service
Lucas Nussbaum Introduction à la virtualisation 14 / 16
Cette séance : LXC, puis LXDI Installez LXC : apt-get install lxc
I Vérifiez que votre système a bien le support nécessaire pourLXC : lxc-checkconfig
I Créez un conteneur : lxc-create -n monconteneur -t debian
I Consultez le résultat, dans /var/lib/lxc/, et en particulier lefichier de configuration du conteneur.
I Consultez la documentation (par exemplehttp://wiki.debian.org/LXC), et� Démarrez le conteneur en arrière-plan (détaché)� Connectez-vous à la console du conteneur� Vérifiez que vous pouvez vous connecter en root� Déconnectez-vous de la console� Arrêtez le conteneur
I Même s’il est plus basique que celui de Docker par exemple, LXCpropose aussi un annuaire d’images, accessible avec lxc-create
-t download. Créez un conteneur Centos 7.Lucas Nussbaum Introduction à la virtualisation 15 / 16
LXD
I LXD : solution de gestion de conteneurs construite au-dessus deLXC (développé par la même équipe)
I Documentez-vous sur LXDI Essayez LXD :
� Soit en ligne surhttps://linuxcontainers.org/lxd/try-it/ (attention :fonctionne mal avec Chromium) – le plus facile
� Soit dans une VM Vagrant Ubuntu 16.04 – difficulté moyenne� Soit dans une VM Vagrant Debian 9, en installant LXD avec
snap – difficulté un peu plus élevéeVoir https://stgraber.org/2017/01/18/lxd-on-debian/
I Question subsidiaire : reprenez votre environnement LXC, etconfigurez LXC pour que les conteneurs aient accès au réseau
Lucas Nussbaum Introduction à la virtualisation 16 / 16