*OUSPEVDUJPOËMBWJSUVBMJTBUJPO - parisjug.orgT Coté ops : Meilleure utilisation des ressources...

77
https://github.com/sdouche/presentation-virtualisation; 1 / 77

Transcript of *OUSPEVDUJPOËMBWJSUVBMJTBUJPO - parisjug.orgT Coté ops : Meilleure utilisation des ressources...

Introduction à la virtualisationSébastien Douche @sdouche

https://github.com/sdouche/presentation-virtualisation;

1 / 77

Qui suis je ? 39 ans. Pas trés intelligent mais j'aime comprendre.

Geek depuis 1984

Fan de Logiciels Libres depuis 1995

CTO chez un éditeur logiciel depuis 2007

Développeur (Python, Go, Dart, Rust)

Sysadmin (Linux / BSD)

Speaker (Git, Python, Go, organisation, management...)

Adore les jeux de sociétés modernes

Motard (Honda CBR RR)

Aime l'humour noir et les blagues pourries

2 / 77

Objectif de cette soirée

3 / 77

Vous donnez un peu de culture admin et montrez l'utilité desoutils de virtualisation pour le développemment

4 / 77

Je ne suis pas un spécialiste de la virtualisation, juste ungrand utilisateur

5 / 77

je n'ai rien à vous vendre

6 / 77

Culture

7 / 77

2 anectodes

8 / 77

9 / 77

Déclic

10 / 77

Pattern et anti-pattern

11 / 77

On pense avec des mots

12 / 77

Multiplier les cultures donne une vision plus cohérente

13 / 77

Lean, Agile, Devops sont avant tout une question de culture

14 / 77

Valeur ➜ Principe ➜ Pratique

15 / 77

Intérets

16 / 77

La virtualisation offre plusieurs opportunitésCoté ops :

Meilleure utilisation des ressources (serveur, place, électricité, etc)Installation, déploiement et migration facilitésIsolation (sécurité, modification locale, etc)

Coté dev :

Disposer de plusieurs envionnements de développementTester son code dans un environnent normaliséSimuler la production

Éviter le «ça marche chez moi» !

17 / 77

Et surtout, éliminer un goulet d'étranglement et ainsi réduirele temps de cycle (cycle time)

18 / 77

Histoire

19 / 77

Les premiers travaux proviennent du centre scientifique deCambridge d'IBM pour le développement expérimental de

CP/CMS (1967–1972). Il permet de simuler unenvironnement mono-utilisateur (CMS) par dessus la gestion

des VM (VM-CP). Les versions actuelles sont z/OS et z/VM.

20 / 77

Vocabulaire

21 / 77

Émulation / virtualisation

22 / 77

Hôte (host) / invité (guest)

23 / 77

Bare-metal

24 / 77

VM (Virtual Machine ou Machine virtuelle)

25 / 77

VE (Virtual Environment ou Environnement)

26 / 77

Techniques

27 / 77

Hyperviseur de type 1

28 / 77

Hyperviseur léger et optimisé pour gérer les accés auxmatériels qui tourne en bare-metal

29 / 77

30 / 77

Avantages :

OS complet (avec son noyau)OS non modifiéisolation complète

Inconvénients :

lourdeur de mise en oeuvrelourdeur de gestionoverhead moyen (peut êtrefortement réduit)

Hyperviseur de type 1

31 / 77

Hyperviseur de type 2

32 / 77

Hyperviseur qui fonctionne sur un OS et qui émule le matériel

33 / 77

34 / 77

Avantages :

OS complet (avec son noyau)OS non modifiéisolation complète

Inconvénients :

lourdeur de mise en oeuvrelourdeur de gestionoverhead monstreux

Hyperviseur type 2

35 / 77

Virtualisation (VM) vs Para-virtualisation (PV)

Que ce soit en hyperviseur de type 1 ou 2, on peut ajouterdes drivers pour indiquer au noyau qu'il est un invité. On parle

alors de para-virtualisation. Cela diminue l'overhead etaméliore les performances.

36 / 77

Accélération matérielle

(HVM, HPV)

37 / 77

Virtualisation assisté par le processeurIntel (2005+) :

VT-xVT-d (I/O MMU virtualization)VT-c

AMD (2006+) :

AMD-VAMD-Vi (I/O MMU virtualization)

38 / 77

conteneur

39 / 77

Permet d'isoler l'exécution des applications dans une VE

40 / 77

41 / 77

Avantages :

simplicitérapidité de mise en oeuvregrande densitépeu d'overheadcache commun (page sharing)meilleur gestion des ressources(cpu. disque...)

Inconvénients :

un seul noyaunécessite une couche sécurité(SELinux / Apparmor)

Conteneur

42 / 77

IsolationSous Linux, c'est le service noyau Namespace qui gère l'isolation :

PID namespace : isolation des ID de processNet namespace : isolation du réseauIPC namespace : isolation des ressources IPCUTS namespace : isolation des identifiants de nom et de domaineMount namespace : isolation des points de montage du système

43 / 77

Limitation des ressourcesSous Linux, c'est le service noyau Control Groups (cgroups) aui gère lalimitation :

# root@srv1:/sys/fs/cgroup# ls -1blkiocpucpuacctcpusetdevicesfreezerhugetlbmemoryperf_event

44 / 77

Processus sans privilègeSous Linux, c'est le service noyau capabilities qui gère les droits.

45 / 77

Technologies

46 / 77

Avantages :

Licence Libremature (2003)project actifUtilisé par VirtualBox, Xen etKVMÉmule les architectures IA-32(x86) / x86-64, MIPS R4000, SunSPARC sun4m / sun4u, ARMdevelopment boards, SH4 SHIXboard, PowerPC, ETRAX CRIS,MicroBlaze...KQEMU pour les vieux matériels

Inconvénients :

trés lent !

QEMUType : émulateur

http://wiki.qemu.org

47 / 77

Avantages :

Licence Libremature (2003)projet actif géré par la XenProject Governanceprojet upstream depuis Linux 3.0hyperviseur x86, x86_64,Itanium, ARMPV / HVM / Pv-on-HVMdistribution AlpineLinuxXenServer libéréécosystême riches (2kpartenaires certifiés)nombreuses fonctionnalités(LiveMigration, Save & Restore,sécurité...)

Inconvénients :

pas dans toutes les distributionsLinux / *BSDbien adapté a Red Hat

XenType : hyperviseur de type 1

http://www.xenproject.org

48 / 77

Avantages :

Licence Libremature (2007)hyperviseur x86, x86_64, ARM(en dev)projet actif financé par Red Hatprojet upstream depuis Linux2.6.20ré-intégré dans QEMUmaintenu par les distributionsLinux / *BSDHVM / Pv-on-HVMutilisé par Red Hat comme offrede virtualisation

Inconvénients :

pas de ml utilisateurmanque de documentationécosytème financé par Red Hatdemande un admin Linux plusconfirmépas de PV

KVMType : hyperviseur de type 1

http://www.linux-kvm.org/

49 / 77

Avantages :

gratuitmature (2007)projet actif financé par VMwareoffre la plus complète (vCenter,NSX...)

Inconvénients :

licence propriétaireécosysteme propriétaireoutillage sous Windowsoffre complète très cher

VMware vSphere Hypervisor (ESXi)Type : hyperviseur de type 1

http://vmware.com

50 / 77

Avantages :

Licence Libremature (2007)projet actif financé par OracleIHM / CLILinux, Windows, Mac OS X,Solarispackages pour toutes lesdistributionssimple d'utilisationDocumentation (manuelutilisateur 455 pages, FAQ, ml...)

Inconvénients :

instabilité occasionnelleperformance(http://bit.ly/1h9odf3)

Oracle VM VirtualBoxType : hyperviseur de type 2

http://virtualbox.org

51 / 77

Avantages :

Licence Librefacilité de mise en oeuvre

Inconvénients :

ne gère que l'isolation FS

chroot / FreeBSD JailType : conteneur

Par défaut sur toutes les distributions Linux / BSD

52 / 77

Avantages :

Licence Librematurité (2001)fonctionne à partir du noyau 2.4sécurité ?

Inconvénients :

demande un noyau Linux patchése synchronise avec les noyauxRHELQOS basic (ulimit, rlimit...)plus trop utilisé

Linux-VServerType : conteneur

http://linux-vserver.org

53 / 77

Avantages :

Licence Libremature (2005)Projet très actif (sponsorisé parParallels)beaucoup de fonctionnalitédocumenté (quick start de 119pages)QOS / quotaisolation user, process, FS,réseau, devicefonctionnalités (snapshot, dump /restore, etc)sécurisé

Inconvénients :

demande un noyau Linux patchése synchronise avec les noyauxRHELpas de support des distributionsLinux

OpenVZType : conteneur

http://openvz.org

54 / 77

Avantages :

Licence Libreintégré upstreamutilise des technos standardsbindings python3, ruby, lua andGo

Inconvénients :

manque d'outillagenécessite Apparmor ou SELinux

LXCType : conteneur

http://linuxcontainers.org

55 / 77

Autres :

BochsSolaris ZoneDOSEMUVMware PlayerVMware WorkstationVMware FusionOracle VMMicrosoft Hyper-V ServerMicrosoft VirtualPCMicrosoft Virtual ServerParallels Server Bare MetalParallels DesktopParallels Parallels ServerIBM z/VM

56 / 77

Formats

57 / 77

Plusieurs format existent :IMG / RAWVDIVHDQcow2 (standard Logiciel Libre)VMDK (Standard, Fixed, Split2G, Stream Optimized, ESX)

Note : Il est plus effiace d'utiliser des partitions LVM / ZFS / BTRFS

58 / 77

OVF

59 / 77

OVFFormat normalisé de description d'une VM. Chaque logiciel posséde sonnamespace (vbx, vmdk...)

Malheureusement, il est incomplet.

60 / 77

OVFExemple :

?xml version="1.0"?><Envelope ovf:version="1.0" xml:lang="en-US" xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vbox="http://www.virtualbox.org/ovf/machine">

<References> <File ovf:id="file1" ovf:href="spv-sysdisk.vmdk" ovf:size="430392832" /> </References>

<DiskSection> <Info>List of the virtual disks used in the package</Info> <Disk ovf:diskId="sysdisk" ovf:fileRef="file1" vbox:uuid="8583a587-88c1-45c3-9365-033899064841" ovf:capacity="16106127360" ovf:populatedSize="430392832".../>

61 / 77

Le format OVA embarque la VM + le fichier OVF

62 / 77

Sélections d'outils Libres

63 / 77

Petites sélections personnelles :

Libvirt (OpenVZ, LXC, KVM, Xen, VMWare) http://libvirt.orgProxMox VE (OpenVZ, KVM) https://www.proxmox.comDocker (LXC) http://docker.ioVagrant (VirtualBox) http://www.vagrantup.comoVirt (KVM, Xen, VirtualBox) http://www.ovirt.orgvirt-manager (KVM, Xen, LXC) http://virt-manager.orgLibguestfs (KVM) http://libguestfs.orgvirt-tools (KVM) http://virt-tools.orgKimchi (KVM) https://github.com/kimchi-project/kimchiGaneti (KVM, Xen) https://code.google.com/p/ganetiConVirt Open Source (KVM, Xen)http://www.convirture.com/products_opensource.phpxen-tools (Xen) http://www.xen-tools.orgZentific (Xen) http://www.zentific.comXen Orchestra (Xen) http://xen-orchestra.comXen Server (Xen) http://www.xenserver.org

64 / 77

Cloud Computing

65 / 77

Architecture OpenStack Folsom

66 / 77

Principales technologies Libres Cloud :OpenStack

http://www.openstack.org

Apache CloudStack

http://cloudstack.apache.org

OpenNebula

http://opennebula.org

Eucalyptus

https://www.eucalyptus.com

67 / 77

Software ConfigurationManagement (SCM)

68 / 77

Les outils SCM sont un gros pas en avant en simplifiantgrandement le travail d'administration

69 / 77

Qualitésconfiguration as Codedocumente parfaitement les changementsutilisation d'outils communs avec les dev (outil, langage, etc)langage commun (dev / op)rapidité de déploiementflexibleidempotence

70 / 77

Principaux outils LibresCFEngine (C)

http://cfengine.com

Puppet (Ruby)

http://puppetlabs.com

Chef (Ruby, Erlang)

http://www.getchef.com

SaltStack (Python)

http://www.saltstack.com

Ansible (Python)

http://www.ansible.com

71 / 77

Démo

72 / 77

KVMKVM seul

qemu-system-x86_64 -nodefaults \ -drive file=debian7.qcow2,if=none,media=disk,id=hd0 \ -device driver=virtio-blk-pci,drive=hd0 \ -boot order=c \ -enable-kvm \ -vga cirrus

présentation rapide de virt-manager / virsh

manipulation de VM avec libguestfs

73 / 77

VirtualBoxprésentation rapide de VirtualBox IHM / CLI

démo avec une VM

format OVF / import OVF + VMDK

présentation rapide de Vagrant http://docs.vagrantup.com/v2/

74 / 77

LXCprésentation rapide de LXC (template, commandes)

lancement conteneur Ubuntu

présentation rapie de Docker http://douche.name/presentation-docker)

75 / 77

Saltdémo shell distribué

exemple simple de template SLS

exemple de modules Salt maison

76 / 77

That's all folks!

77 / 77