La virtualisation dans le Datacenter

3 267 vues

Publié le

Conférence de Jérôme Petazzoni (Pilot Systems) à Solutions Linux 2009.

La virtualisation réunit les avantages techniques d'un serveur dédié et d'un environnement mutualisé : les performances et la sécurité sont au rendez-vous, pour un coût opérationnel optimal. Contrairement à un serveur dédié, dont l'évolution nécessite des interventions matérielles (et des interruptions de services), un serveur virtualisé peut être reparamétré en quelques minutes, avec des interruptions de services minimes (voire nulles). Cette présentation montre comment tirer parti de la virtualisation pour l'hébergement des applications critiques de l'entreprise, en particulier dans les environnements Open Source utilisant Xen et Debian GNU/Linux.

Publié dans : Technologie
2 commentaires
2 j’aime
Statistiques
Remarques
Aucun téléchargement
Vues
Nombre de vues
3 267
Sur SlideShare
0
Issues des intégrations
0
Intégrations
542
Actions
Partages
0
Téléchargements
4
Commentaires
2
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • La virtualisation dans le Datacenter

    1. 1. La virtualisation dans le Datacenter <ul> <ul> <li>Déploiement d'applications critiques </ul> </ul> <ul> <ul> </ul> </ul> <ul> <ul> <li>Bonnes pratiques avec Debian+Xen </ul> </ul> <ul> <ul> <li>(entre autres) </ul> </ul> <ul> <ul> </ul> </ul> <ul> <ul> <li>Jérôme Petazzoni – Pilot Systems </ul> </ul> <ul> <ul> <li>Solutions Linux 2009 </ul> </ul>
    2. 2. Plan <ul> <li>Public concerné </ul> <ul> <li>Pourquoi virtualiser ? </ul> <ul> <li>Que virtualiser, comment, avec quoi ? </ul> <ul> <li>Quels enjeux pour l'infrastructure : sécurité, fiabilité, déploiement supervision ? </ul> <ul> <li>Quel coût (humain) ? </ul> <ul> <li>Le Cloud computing </ul> <ul> <li>Xen + Debian en 20 minutes </ul>
    3. 3. À qui s'adresse cette présentation <ul> <li>Au décideur pressé qui veut diminuer les coûts / augmenter la rentabilité de ses serveurs </ul> <ul> <li>Au sysadmin qui veut se mettre à la virtualisation (sous Linux, parcequ'on n'est pas à « Solutions Windows ») </ul> <ul> <li>À l'utilisateur Debian/Ubuntu qui veut virtualiser </ul> <ul> <li>... des applications critiques (haute disponibilité) </ul> <ul> <li>... des applications lourdes (gourmandes en ressources) </ul> <ul> <li>... de 7 à 77 ans, depuis 1 serveur jusqu'à 10 baies ! </ul>
    4. 4. Virtualiser ... pour quoi faire ? <ul> <li>Vos serveurs passent leur temps à ne rien faire </ul> <ul> <li>Vos disques sont utilisés à 10% à peine </ul> <ul> <li>Combien vous faut-il : </ul> <ul> <ul> <li>de cœurs ? </ul> </ul> <ul> <ul> <li>de gigas de RAM ? 42 ? </ul> </ul> <ul> <li>Vous avez besoin de machines temporaires </ul> <ul> <li>Vous voulez pouvoir changer de fournisseur facilement </ul> <ul> <li>Vous voulez faire de la haute dispo à moindre coût </ul>
    5. 5. Virtualiser ... le CPU et RAM <ul> <li>Virtualisation « dure » : Xen, KVM </ul> <ul> <ul> <li>Xen et la RAM : pas d' overcommit ; ballooning </ul> </ul> <ul> <ul> <li>KVM et la RAM : guest memory swapping </ul> </ul> <ul> <ul> <li>Xen, KVM et le CPU : scheduling et pinning </ul> </ul> <ul> <li>Virtualisation « molle » : VServer, OpenVZ </ul> <ul> <ul> <li>CPU et RAM partagés </ul> </ul> <ul> <ul> <li>Pas vraiment de limites dures </ul> </ul> <ul> <ul> <li>Accounting utilisable </ul> </ul>
    6. 6. Virtualiser ... le stockage de données (1) <ul> <li>À l'ancienne : fdisk </ul> <ul> <ul> <li>Découpage du disque en partitions </ul> </ul> <ul> <ul> <li>Redimensionnement pénible </ul> </ul> <ul> <ul> <li>Agrégation avec du RAID (hard ou soft) </ul> </ul> <ul> <li>Aujourd'hui : lvm </ul> <ul> <ul> <li>Découpage d'un volume group en logical volumes </ul> </ul> <ul> <ul> <li>Redimensionnement facile (ext3 online growing ) </ul> </ul> <ul> <ul> <li>Ajout de physical volumes à chaud </ul> </ul>
    7. 7. Virtualiser ... le stockage de données (2) <ul> <li>Demain : des snapshots qui marchent </ul> <ul> <ul> <li>Ext3cow : mûr, mais plus développé </ul> </ul> <ul> <ul> <li>Nilfs : intégré récemment au noyau </ul> </ul> <ul> <ul> <li>ZFS : license wars, Solaris strikes back </ul> </ul> <ul> <ul> <li>Btrfs : un nouvel espoir ? </ul> </ul> <ul> <li>On a dit : « demain » ! </ul> <ul> <ul> <li>Pour l'instant, merci d'utiliser lvcreate --snapshot </ul> </ul>
    8. 8. Virtualiser ... l'accès aux données <ul> <li>NFS (via un serveur ou un NAS) </ul> <ul> <ul> <li>Disponible partout, facile à déployer </ul> </ul> <ul> <ul> <li>Difficile à sécuriser, performances variables </ul> </ul> <ul> <li>iSCSI (via un serveur, un NAS, ou un SAN) </ul> <ul> <ul> <li>Disponible sur les plateformes récentes </ul> </ul> <ul> <ul> <li>Interopérabilité parfois hasardeuse </ul> </ul> <ul> <ul> <li>Bonnes performances, mais il faut un bon réseau </ul> </ul> <ul> <li>Disques locaux (migration avec DRBD) </ul>
    9. 9. Virtualiser ... la connectivité réseau <ul> <li>VLANs </ul> <ul> <ul> <li>Création d'un VLAN par serveur (physique ou virtuel) </ul> </ul> <ul> <ul> <li>Provisioning : </ul> </ul> <ul> <ul> <ul> <li>Manuel (un nouveau serveur = je crée un VLAN) </ul> </ul> </ul> <ul> <ul> <ul> <li>Automatique (GARP/GVRP) </ul> </ul> </ul> <ul> <ul> <ul> <li>Intermédiaire (pré-configuration de 4000 VLANs) </ul> </ul> </ul> <ul> <li>La plupart (toutes?) les technos de virtualisation sont indépendantes des VLANs </ul> <ul> <li>L'allocation de ressources se fait au niveau 2 ( switches ) </ul>
    10. 10. Virtualiser ... l'infrastructure <ul> <li>Routeurs / Firewalls </ul> <ul> <ul> <li>Débit brut : jusqu'à 1 Gb/s dans du Xen </ul> </ul> <ul> <ul> <li>Petits firewalls ad hoc </ul> </ul> <ul> <li>Load balancers </ul> <ul> <ul> <li>150 kpps / 50000 sessions (~100 Mb/s) </ul> </ul> <ul> <li>Filers </ul> <ul> <ul> <li>Attention, les performances sont affectées </ul> </ul> <ul> <ul> <li>Mais cela permet de tester une technologie </ul> </ul>
    11. 11. Virtualiser ... la sécurité <ul> <li>Security track de Xen : principalement avec pygrub et le framebuffer virtuel (composants peu déployés, et dont on peut se passer) </ul> <ul> <li>AWS EC2 est basé sur Xen ... et n'a pas (encore) été victime de faille de sécurité </ul> <ul> <li>Isoler les réseaux est possible (et facile) </ul> <ul> <li>Pour les paranoïaques : le CPU-pinning permet d'éviter les attaques sur le cache L2 </ul>
    12. 12. Virtualiser ... la haute disponibilité <ul> <li>On déplace la problématique de haute disponibilité (heartbeat, DRBD, CARP...) vers la machine hôte </ul> <ul> <li>... Donc on sépare plus clairement les tâches & rôles </ul> <ul> <li>Une VM démarre plus vite qu'une machine physique </ul> <ul> <li>Il est plus facile de faire des tests avec des VM (on peut simuler facilement allumage, extinction, coupure réseau, erreurs disques, etc.) </ul> <ul> <li>Pour les PRA : économie car mutualisation du backup </ul>
    13. 13. Virtualiser ... le déploiement <ul> <li>Essayons d'oublier l'installation « à l'ancienne » (GUI) </ul> <ul> <li>Procédures existantes réutilisables : </ul> <ul> <ul> <li>PXE+NFSROOT </ul> </ul> <ul> <ul> <li>Debootstrap (et équivalents) </ul> </ul> <ul> <ul> <li>Single System Image </ul> </ul> <ul> <li>Nouvelles procédures : </ul> <ul> <ul> <li>Déploiement par clone / snapshot </ul> </ul> <ul> <ul> <li>Technologies émergentes (DotCloud, EC2...) </ul> </ul>
    14. 14. Virtualiser ... la supervision <ul> <li>On garde les bases : Nagios, Cacti, Munin, Zabbyx ... </ul> <ul> <li>On configure correctement les dépendances/groupes </ul> <ul> <li>On ajoute des briques logicielles pour l'inventaire </ul>
    15. 15. C'est compliqué ! <ul> <li>Non ! </ul> <ul> <ul> <li>Tous les composants décrits sont indépendants les uns des autres (sauf la virtualisation CPU/RAM) </ul> </ul> <ul> <ul> <li>Les problématiques sont indépendantes (on peut virtualiser le stockage avec un SAN, et virtualiser plus tard les machines, ou pas) </ul> </ul> <ul> <ul> <li>Prise en main rapide (on va y revenir!) </ul> </ul>
    16. 16. Le Cloud dans tout ça <ul> <li>Dans la suite : Cloud = HaaS </ul> <ul> <li>Mise à disposition de ressources (CPU, RAM, disque, réseau) à la demande </ul> <ul> <li>Pas d'investissement </ul> <ul> <li>Facturation plus fine (au mois, voire à l'heure) </ul> <ul> <li>Ensemble d'API permettant le provisioning </ul>
    17. 17. Glossaire marketto-buzz du Cloud <ul> <li>AWS S3 = service de stockage de masse d'Amazon </ul> <ul> <li>AWS EC2 = Cloud (CPU on-demand ) d'Amazon </ul> <ul> <li>Eucalyptus = implémentation Open Source d'EC2 </ul> <ul> <li>NiftyName = API ouverte de gestion de Cloud (~EC2) </ul> <ul> <li>RightScale, Morph ... = fournisseurs de services Cloud (déploiement / gestion / monitoring ) </ul> <ul> <li>DotCloud = stack gérant le packaging , le déploiement, la configuration et la mise à jour de logiciels dans le Cloud </ul> <ul> <li>PODP = Power-On-Demand Platform (Pilot Systems) </ul>
    18. 18. Xen + Debian en 20 minutes (1) <ul> <li>Installation des packages </ul> <ul> <li># apt-get install xen-linux-system-2.6.26-1-xen-amd64 </ul> <ul> <li># apt-get install vlan bridge-utils lvm2 mdadm ucarp </ul> <ul> <li># apt-get install debootstrap xen-tools </ul> <ul> <li>... reboot ... </ul> <ul> <li># xm list </ul> <ul> <li>Name ID   Mem VCPUs State Time(s) </ul> <ul> <li>Domain-0 0  64766     8 r----- 5570.0 </ul> <ul> </ul>
    19. 19. Xen + Debian en 20 minutes (2) <ul> <li>Configuration du LVM </ul> <ul> <li># mdadm -C /dev/md0 -n2 -l1 /dev/sda /dev/sdb </ul> <ul> <li># mdadm -C /dev/md1 -n2 -l1 /dev/sdc /dev/sdd </ul> <ul> <li># pvcreate /dev/md0 /dev/md1 </ul> <ul> <li># vgcreate melody /dev/md0 /dev/md1 </ul> <ul> <li># lvcreate melody -n jack-disk -L 50G </ul> <ul> <li># mke2fs -j /dev/melody/jack-disk </ul> <ul> <li># mount /dev/melody/jack-disk </ul> <ul> <li># lvextend /dev/melody/jack-disk -L 100G </ul> <ul> <li># resize2fs /dev/melody/jack-disk </ul> <ul> <li># rsync --numeric-ids --del -xa jack:/ /dev/melody/jack-disk/ </ul>
    20. 20. Xen + Debian en 20 minutes (3) <ul> <li>Affichage du LVM </ul> <ul> <li># vgs VG #PV #LV #SN Attr VSize VFree melody 2 9 0 wz--n- 602.48G 301.97G </ul> <ul> <li># pvs PV VG Fmt Attr PSize PFree /dev/md0 melody lvm2 -- 136.73G 86.60G /dev/md1 melody lvm2 a- 465.76G 215.37G </ul> <ul> <li># lvs LV VG Attr LSize [...] jack-disk melody -wi-ao 100.00G jack-swap melody -wi-ao 128.00M plonenet-disk melody -wi-ao 50.00G plonenet-swap melody -wi-ao 128.00M [...] </ul> <ul> </ul>
    21. 21. Xen + Debian en 20 minutes (4) <ul> <li>Configuration des VLANs </ul> <ul> <li>/etc/network/interfaces : </ul> <ul> <li>auto vlan42 </ul> <ul> <li>iface vlan42 inet static address 10.42.0.12 netmask 255.255.0.0 gateway 10.42.254.254 bridge_ports eth1.42 bridge_fd 0 bridge_stp off </ul> <ul> <li># ifup vlan42 </ul> <ul> <li># brctl show bridge name   bridge id           STP enabled  interfaces vlan42        8000.003048c66c93   no            eth1.42 </ul> <ul> </ul>
    22. 22. <ul> <li>Déploiement </ul> <ul> <li># vi /etc/xen-tools/xen-tools.conf </ul> <ul> <li>Modifier : lvm=melody size=5Gb memory=1000Mb swap=128Mb dist=lenny gateway=10.42.254.254 netmask=255.255.0.0 mirror= ftp://debian.worldcompany.net/debian </ul> <ul> <li># xen-create-image --ip 10.42.3.4 --hostname foo                  --size 50G --memory 4000 </ul> <ul> <li># xm create /etc/xen/foo.cfg -c </ul> Xen + Debian en 20 minutes (5)
    23. 23. <ul> <li>Le fichier de configuration de la VM </ul> <ul> <li># vi /etc/xen/foo.cfg kernel = '/boot/vmlinuz-2.6.26-1-xen-amd64' ramdisk = '/boot/initrd.img-2.6.26-1-xen-amd64' memory = '4000' root = '/dev/sda2 ro' disk = [ 'phy:/dev/melody/foo-swap,sda1,w', 'phy:/dev/melody/foo-disk,sda2,w', ] name = 'foo' ###vif = [ 'ip=10.42.3.4,mac=00:16:3E:40:72:16' ] on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' maxmem      = '16000' ### ajoutons ça vcpus       = '2' ### et puis ça vif         = ['ip=10.42.3.4,mac=00:16:3E:40:72:16,bridge=vlan42'] ### changeons ça </ul> Xen + Debian en 20 minutes (6)
    24. 24. <ul> <li>Opérations diverses </ul> <ul> <li># xm console foo </ul> <ul> <li># xm shutdown foo -w # arrêt propre </ul> <ul> <li># xm destroy foo # arrêt sale </ul> <ul> <li># xm mem-set foo 8000 # more memory, please </ul> <ul> <li># xm vcpu-set foo 1 # less CPU, please </ul> <ul> </ul> <ul> <li># brctl show bridge name   bridge id           STP enabled  interfaces vlan42        8000.003048c66c93   no            eth1.42                                                vif3.0                                                vif3.0 </ul> Xen + Debian en 20 minutes (7)
    25. 25. <ul> <li>Un peu de haute dispo (début) </ul> <ul> <li># apt-get install module-assistant </ul> <ul> <li># m-a -t prepare && m-a -t update && m-a -t a-i drbd8 </ul> <ul> <li># vi /etc/drbd.conf ressource foo { protocol C; on melody { device /dev/drbd0; disk /dev/melody/foo-disk; address 10.42.0.12:9000; flexible-meta-disk /dev/melody/foo-meta; } on nelson { ... idem ... } </ul> <ul> <li>Copier le fichier (à l'identique) sur l'hôte nelson </ul> <ul> </ul> Xen + Debian en 20 minutes (8)
    26. 26. <ul> <li>Un peu de haute dispo (suite et fin) </ul> <ul> <li>S'assurer que la VM ”foo” est arrêtée ! </ul> <ul> <li># drbdadm create-md foo # sur melody et nelson </ul> <ul> <li># /etc/init.d/drbd start # sur melody et nelson </ul> <ul> <li># drbdsetup /dev/drbd0 primary -o # sur melody </ul> <ul> <li>... Modifier la configuration Xen pour utiliser /dev/drbd0 au lieu de /dev/melody/foo-disk </ul> <ul> <li>... Démarrer la VM sur melody </ul> <ul> <li>... Attendre la fin de la synchro </ul> <ul> <li>... Copier (et adapter - s/melody/nelson/) la config VM </ul> <ul> <li>Pour switcher : drbdsetup /dev/drbd0 primary -o </ul> <ul> <li>... et démarrer la VM </ul> Xen + Debian en 20 minutes (9)
    27. 27. <ul> <li>Migration </ul> <ul> <li>On peut sauver une VM avec ”xm save” </ul> <ul> <li>La restaurer avec ”xm restore” </ul> <ul> <li>... Donc si on reboot l'hôte, les VM ne rebootent pas </ul> <ul> <li>Si on utilise NFS ou iSCSI : ”xm migrate” </ul> <ul> <li>Avec du stockage local : </ul> <ul> <ul> <li>Vaudou avec xm save + DRBD + xm restore </ul> </ul> <ul> <ul> <li>Migration, puis re-Vaudou dans l'autre sens </ul> </ul> <ul> </ul> Xen + Debian en 20 minutes (10)
    28. 28. <ul> <li>Avec Xen, on peut faire tourner (sur un hôte 64 bits) : </ul> <ul> <ul> <li>Un Linux 64 bits </ul> </ul> <ul> <ul> <li>Un Linux 32 bits (kernel en 64, userland en 32) </ul> </ul> <ul> <ul> <li>Un OpenSolaris 64 bits </ul> </ul> <ul> <ul> <li>Un FreeBSD 64 bits (bientôt?) </ul> </ul> <ul> <ul> <li>À peu près n'importe quoi en HVM 32 ou 64 bits (ça veut dire aussi du Windows, et ça marche pour de vrai) </ul> </ul> <ul> <li>Donc des appliances ( firewall , NAS...) pour tester ou en prod </ul> Quelques pistes
    29. 29. <ul> <li>Xen + Debian = la virtualisation pour les nuls </ul> <ul> <li>Bonne intégration des outils dans la distribution </ul> <ul> <li>Les gens qui connaissent déjà le RAID, le LVM, le NFS, l'iSCSI ; qui ont un NAS, un SAN, des VLANs... peuvent tout garder et le mettre à profit en virtualisé </ul> <ul> <li>Ceux qui ne connaissent pas peuvent s'en passer </ul> <ul> <li>Plateformes en production depuis 2004 (Les mises à jour se passent bien) </ul> Conclusions
    30. 30. Questions ? <ul> </ul> <ul> <li>Jérôme Petazzoni </ul> <ul> <li>[email_address] </ul> <ul> <li>Pilot Systems </ul> <ul> <li>http://fon.gs/xenforever </ul> <ul> </ul> <ul> </ul>

    ×