module admin des infrastructures avancées - … (docker, lxc) = cgroups + namespaces + interface...

16
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

Upload: doanminh

Post on 04-Apr-2018

229 views

Category:

Documents


4 download

TRANSCRIPT

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