VMWare Server 2.0 sur dédiés OVH et mise en oeuvre d
Transcription
VMWare Server 2.0 sur dédiés OVH et mise en oeuvre d
GuiguiAbloc Le Blog Geek de GuiguiAbloc A propos Recherche Retourner au contenu ↓ Home architecture cisco geekerie linux matériel Non classé OpenBSD réseau sécurité vmware wifi VMWare Server 2.0 sur dédiés OVH et mise en oeuvre d’une solution de haute disponibilité avec datastore en DRBD par guiguiabloc le 28.oct, 2008, sous architecture, linux, vmware Dans la continuité de la découverte des petites spécificités de la plateforme d’hébergement dédié d’OVH, aujourd’hui l’installation de VMWare Server 2.0. Nous allons tout d’abord voir son installation en tenant compte des particularités d’OVH, l’utilisation de l’IpFailover et/ou des blocs ip RIPE fournis avec les serveurs et pour finir, en bonus, une petite bidouille à la Guiguiabloc pour intégrer un datastore VMWare en Raid1 over ip et bascule automatique. Bien entendu, je pars d’une distribution Linux de base (Debian Etch ici) et pas la distribution VMware que fourni OVH. Pré-Requis : Vous avez lu CE PRECEDENT BILLET avant et donc vous avez recompilé votre noyau sur vos serveurs. (il vous faut les sources du kernel). Les switchs OVH ont une sécurité sur leurs interfaces empêchant de faire du bridging sur l’interface eth0 de votre serveur (ce qui est très bien en soi). En gros, vous ne pouvez pas sortir sur l’interface du switch avec une adresse MAC différente de celle de votre carte réseau, si vous brigder l’interface vmnet0 avec eth0, le switch se mettra en “défense” (scénario bien connu des bidouilleurs de Cisco ) et vous coupera le port. A savoir que le principe est le même avec XEN donc attention a ce que vous faites… Nous allons donc bridger VMware sur une interface bidon et configurer le Host-Only pour les interfaces réseaux de nos Machines Virtuelles. On commence par monter une fausse interface ethernet, en éditant notre fichier /etc/network/interfaces (Debian) : auto dummy0 iface dummy0 inet static address 10.0.0.1 netmask 255.0.0.0 [ATTENTION CHOISIR UNE IP DE CLASSE PRIVEE] Puis on l’active : ifup dummy0 (on vérifier par ifconfig que cette interface est bien présente). On peut attaquer l’installation de VMware Server (je vous passe la phase de vous rendre sur le site de VMware pour récuperer le package et le numéro de série gratuit…) tar xzvf VMware-server-2.0.0-116503.i386.tar.gz cd vmware-server-distrib/ ./vmware-install.pl Creating a new VMware Server installer database using the tar4 format. Installing VMware Server. Vous répondez aux questions qui s’affichent (en changeant selon vos désirs les réponses pré-définies) Si tout ce passe bien, vous devriez arrivé ici : The installation of VMware Server 2.0.0 build-116503 for Linux completed successfully. You can decide to remove this software from your system at any time by invoking the following command: “/usr/bin/vmware-uninstall.pl”. Before running VMware Server for the first time, you need to configure it by invoking the following command: “/usr/bin/vmware-config.pl”. Do you want this program to invoke the command for you now? [yes] Vous suivez la procédure jusqu’au paramétrage du réseau : La, on devient un peu plus attentif Do you want networking for your virtual machines? (yes/no/help) [yes] Configuring a bridged network for vmnet0. Please specify a name for this network. [Bridged] Your computer has multiple ethernet network interfaces available: dummy0, eth0 . Which one do you want to bridge to vmnet0? [eth0] dummy0 The following bridged networks have been defined: . vmnet0 is bridged to dummy0 Do you wish to configure another bridged network? (yes/no) [no] no Do you want to be able to use NAT networking in your virtual machines? (yes/no) [yes] no Do you want to be able to use host-only networking in your virtual machines? [no] yes Configuring a host-only network for vmnet1. Please specify a name for this network. [HostOnly] Do you want this program to probe for an unused private subnet? (yes/no/help) [yes] no What will be the IP address of your host on the private network? 192.168.1.1 [ATTENTION CHOISIR UNE IP DE CLASSE PRIVEE] What will be the netmask of your private network? 255.255.255.0 the following host-only networks have been defined: . vmnet1 is a host-only network on private subnet 192.168.0. Do you wish to configure another host-only network? (yes/no) [no] (vous pouvez créer d’autres interfaces si vous le souhaitez) None of the pre-built vmnet modules for VMware Server is suitable for your running kernel. Do you want this program to try to build the vmnet module for your system (you need to have a C compiler installed on your system)? [yes] Extracting the sources of the vmnet module. Building the vmnet module etc.. The configuration of VMware Server 2.0.0 build-116503 for Linux for this running kernel completed successfully. Et voila, vous pouvez faire pareil sur l’autre serveur (si vous en avez deux ) Vous pouvez vous connecter sur l’excellente interface d’administration : https://votrededieovh:8333 Lancer la création et l’installation d’une nouvelle machine virtuelle en donnant comme interface réseau, l’interface Host-only VMNET1. (je ne parle pas du fonctionnement de VMware server ici, Google vous rapportera pleins de tutos ) Configuration du réseau On commence par activiter le forwarding entre vos cartes réseaux (en l’occurence etho et vmnet1 ici) : /bin/echo “1″ > /proc/sys/net/ipv4/ip_forward (n’oublier pas de le mettre en dur dans votre /etc/sysctl.conf : sysctl net.ipv4.ip_forward=1) Puis le proxy ARP : echo "net.ipv4.conf.vmnet1.proxy_arp=1" >> /etc/sysctl.conf && sysctl -p Sur la machine virtuelle, on configure notre ipfailover et/ou notre ip bloc RIPE : /etc/network/interfaces : iface eth0 inet static address 91.x.x.x netmask 255.255.255.240 broadcast 91.x.x.x post-up /sbin/route add default dev eth0 Pour une IP bloc RIPE (voir les infos que vous donne OVH pour le netmask et le broadcast lorsque vous commander votre bloc ip ou utiliser l’excellent “sipcalc” pour calculer vos masques/reseau ) Pour un ipfailover (a adapter a votre ipfailover): auto eth0 iface eth0 inet static address 87.98.99.90 netmask 255.255.255.255 post-up /sbin/route add default dev eth0 La commande importante étant de lui spécifier eth0 comme passerelle par défaut ( /sbin/route add default dev eth0). Sur votre dédié maintenant (le serveur VMware), il faut lui donner la route vers votre machine virtuelle : /sbin/ip route add 87.88.89.90 dev vmnet1 Pour le rendre permanent, vous pouvez rajouter la commande dans /etc/init.d/vmware apres le chargement des modules réseaux ou vous basez sur la bidouille de Kro : http://forum.ovh.com/showthread.php?t=37645 (attention a adapter hein !!!). EDIT : Pour l’explication détaillée pour VMWare Server 2.0, le billet de Superkikim ICI vous donnera toute satisafaction. Voila, vous pouvez désormais pinguer le net depuis votre machine virtuelle et inversement. (ne pas oublier le /etc/resolv.conf et tutti quanti…) EDIT 2 : J’ai écris un billet sur la façon d’affecter une ip failover à votre VM, c’est ICI. Bidouille Guiguiabloc Bon maintenant que tout cela tourne très bien, le plus “amusant” serait de pouvoir basculer notre machine virtuelle sur notre deuxième serveur en cas de crash du premier… Je vous préviens tout de suite, cela ne sera pas transparent VMotion n’existe pas sur VMware server Pré-requis : la lecture du précédent billet :-p (encore), un drbd actif, un heartbeat actif et une ipfailover disponible. On se créer un volume DRBD (j’espère que vous avez prévu un stock de partitions de libre lors de l’installation de votre dédié OVH ) en éditant notre fichier /etc/drbd.conf et on ajoute : resource r1 { (ou r0 si c’est votre premiere ressource drbd) protocol C; handlers { pri-on-incon-degr “echo o > /proc/sysrq-trigger ; halt -f”; pri-lost-after-sb “echo o > /proc/sysrq-trigger ; halt -f”; local-io-error “echo o > /proc/sysrq-trigger ; halt -f”; } startup { degr-wfc-timeout 120; # 2 minutes. } disk { on-io-error detach; } net { after-sb-0pri disconnect; after-sb-1pri disconnect; after-sb-2pri disconnect; rr-conflict disconnect; } syncer { rate 20M; al-extents 257; } on ns11111 { device /dev/drbd1; disk /dev/sda11; address 192.168.20.20:7789; (attention a ne pas mettre le meme port de la ressource r0) meta-disk internal; } on ns22222 { device /dev/drbd1; disk /dev/sda11; address 192.168.20.30:7789; meta-disk internal; } } On se coltine les définitions Maitre/Esclave (voir billet précédent), on formate /dev/drbd1. Sur le serveur ns11111, on monte /dev/drdb1 sur /vmfs (par exemple) et on l’ajoute au datastore : Vous devriez voir votre datastore apparaitre dans la liste : Créer une machine virtuelle dedans ou comme moi, copier le repertoire de votre Machine Virtuelle et utilisez le “Add to Inventory” : On stoppe VMware, on démonte /vmfs et on inverse les roles Maitre esclave : sur ns11111 : drbdadm secondary r1 sur ns22222: drbdadm primary r1 on vérifie que l’on voit bien tout avec un cat /proc/drbd puis on monte /dev/drbd1 sur /vmfs. Sur le VMware server de ns22222, on refait la meme manip, déclaration d’un nouveau datastore et “AddVirtual Machine to Inventory”. premier test On se remet en environnement nomimal (vmware qui tourne sur ns11111, drbd1 en maitre et mount sur /vmfs) On lance la VM sur ns11111. On vérifie que tout marche bien et maintenant, simulons le crash manuellement. - on kill -9 tout les process VMware (oui c’est crade, j’adore - on démonte /vmfs - on bascule les ressources DrBD - on lance vmware sur ns22222 - on lance la machine virtuelle. Les soucis rencontrés sont les suivants : L’uid disque a changer et il faut cliquer sur “i ‘ve copied it” Ca c’est facile a régler, vous ajouter uuid.action = “keep” ) Dans le fichier *.vmx de votre machine virtuelle Un répertoire “lock” verrouille le démarrage. Il suffit de faire un petit rm -rf Guiguiabloc.vmdk.lck pour que ca parte. Donc cela marche, mais il faut automatiser tout cela. Heureusement, il existe les commandes vmrun. La syntaxe est la suivante : vmrun -T server -h https://localhost:8333/sdk -u adminvmware -p motdepasse stop “[VMFS-DRBD] Guiguiabloc/Guiguiabloc.vmx” Pour arreter la VM par exemple (je vous laisse consulter la doc VMRUN sur le site de VMware ). Vous avez donc tout les éléments pour inclure cela dans les scripts de Heartbeat (basez vous sur les exemples du précédent billet) : 1. 2. 3. 4. bascule du DRBD et montage sur /vmfs Démarrage de VMware sur le nouveau Maître rm -r /vmfs/machinevirtuelle/machinevirtuellevmdk.lck vmrun start Tout bête quoi Après plusieurs tests cela marche vraiment pas mal donc elle peut repartir un peu en vrac. , bien évidemment le crash du maitre entraîne le “crash” de la VM, C’est pour cela que je vous conseille de programmer des “Snapshots” des VM toutes les nuits (si vous ne connaissez pas, jetez vous dessus et mangez en !!! ) Au pire vous pourrez repartir sur le snapshot de la veille. En tout cas, avec cela l’indisponibilité est de quelques minutes… :bloc ip ripe, cluster vmware, drbd, ha, ipfailover, ovh, vmware, vmware server 24 commentaires pour ce billet: 1. Alexandre Garino octobre 30th, 2008 le 11:55 Si on souhaite utiliser l’IPv6, est ce que la configuration pour passer l’anti spoofing est la même ou faut-il l’adapter ? Merci. 2. guiguiabloc octobre 30th, 2008 le 12:57 On parle de niveau 2 de la couche OSI, là l’ip est au niveau 3, donc la protection est toujours effective (l’adresse MAC = niveau 2). Il faut juste adapter les commandes (exemple /proc/sys/net/ipv6/conf/all/forwarding pour le forwarding , /sbin/route -A inet6 add etc…), bref utiliser les commandes réseaux ipv6 et non ipv4 mais le principe reste le même. 3. Alexandre Garino octobre 31st, 2008 le 0:53 Merci, je voulais juste m’en assurer J’avais essayé de mettre en place du brouting pour contourner l’anti spoofing d’OVH mais avec un résultat qui n’était pas fiable à 100%. Si je comprends bien votre configuration, vous utilisez l’hôte comme routeur en y ajoutant un proxy ARP pour ne pas transmettre au switch les MAC des VM. Encore merci pour ce post. 4. Alexandre Garino octobre 31st, 2008 le 16:43 ARP a été remplacé par NDP avec IPv6. Il faut donc remplacer : echo “net.ipv4.conf.vmnet1.proxy_arp=1″ >> /etc/sysctl.conf && sysctl -p par : echo “net.ipv6.conf.vmnet1.proxy_ndp=1″ >> /etc/sysctl.conf && sysctl -p Merci de confirmer pour les prochains lecteurs de ce billet. 5. guiguiabloc octobre 31st, 2008 le 18:45 Merci pour l’info Je ne joue pas assez avec IPv6 pour confirmer mais si on en croit : http://linux-ip.net/gl/ip-cref/node156.html c’est tout a fait cela. 6. Superkikim novembre 5th, 2008 le 20:13 Hello. petite erreur dans ton article: “Les soucis rencontrés sont les suivants : L’uid disque a changer et il faut cliquer sur “i ‘ve copied it”” Il faut écrire “il faut cliquer sur “I’ve moved it”. C’est ce qui correspond à “keep”. Si tu cliques “I’ve copied it”, il va re faire un nouveau uid. Cordialement 7. guiguiabloc novembre 5th, 2008 le 22:26 Merci pour l’info, mais de tête les bascules maitre/esclave en boucle ne prenait pas ce paramètre, d’ou le forcage dans la configuration. As-tu testé la bacsule dans les deux sens plusieurs fois ? 8. Superkikim novembre 5th, 2008 le 23:33 Non non, pas encore testé la bascule :-). Mais testé le déplacement d’une machine avec le bon paramètre. Ca marche beaucoup mieux essaie uuid au lieu de uid Trouvé ici: http://www.sanbarrow.com/vmx/vmx-advanced.html#uuid 9. Superkikim novembre 6th, 2008 le 2:55 Bon. UUID marche bien par contre, l’astuce de mettre les route dans le script vmware, je trouve pas sur VMWare 2. Il semble que les scripts ont changés… Comment t’y es-tu pris ? 10. guiguiabloc novembre 6th, 2008 le 9:03 c’est bien uuid, faute de frappe (corrigé) 11. guiguiabloc novembre 6th, 2008 le 9:07 Pour les routes, j’utilise les scripts Heartbeat, sinon dans le /etc/init.d/vmware tout simplement. 12. Superkikim novembre 6th, 2008 le 13:41 Oui mais non …. En fait, le problème est que quand je modifie le /etc/init.d/vmware, je me retrouve à plus pouvoir lancer VMware. je dois relancer vmware-config.pl. Je ne sais pas pourquoi. Et je n’ai pas trouvé où mettre ça dans tous les cas dans le script vmware. Il n’y a pas de référence directe à vmnet, mais une sous-routine qui appelle le chargement des modules, dont la configuration vient d’autre autre fichier, qui lui même prend ses repères dans un autre fichier. Enfin, bref. ils n’ont pas fait simple. Donc ce qu’il m’arrangerait, c’est de savoir où exactement tu as glissé les routes dans le script. J’ai essayé aussi de faire un script addroutes dans init.d, que j’ai installé en séquence 91 (juste après le lancement de vmware en 90). Mais là c’est aléatoire. Il charge une seule route, ou d’autres fois, aucune 13. guiguiabloc novembre 6th, 2008 le 21:58 Personne n’a dit que c’était simple Un script digne de ce nom vérifie l’état des VM (vmrun toussa), donc ton script en level 91 doit d’abord checker l’état des VM avant de s’appliquer. Je pense que le mieux est d’apprendre par soi-meme, j’aide mais n’assiste pas, c’est aussi pour cela que parfois je laisse des zones un peu floues. Pour moi la progression se fait par la recherche et la bidouille, donner tout “clés en main” cela ne me semble d’aucun intéret. Etre “hackeur” dans le sens noble et originel du terme c’est comprendre comment ca marche et trouver a le résoudre. Trop d’aide tue la réfléxion, cela se voit tout les jours sur les forums ou Irc ou les gens ne veulent que de l’aide sans chercher a comprendre par eux-meme (je ne dis pas cela pour toi bien évidemment, je vois que tu cherches a comprendre ce que tu fais) mais c’est un état général. Le scripting est une base des plus importantes, surtout en shell. L’idée de ce cluster VMware j’en ai juste donnée les directives, après, a chacun de le peaufiner et d’en apporter si possible ses contributions a la communauté. Je n’ai aucun doute a ce que tu réussises a monter ton architecture et je sais surtout, que tu prendras encore plus de plaisir a l’expliquer aux autres car tu l’auras triturer dans tout les sens Rassure toi, si vraiment tu galères, le coup de pouce naitra forcément de la communauté 14. Superkikim O Blog » Archives du Blog » IP Forwarding pour les serveurs OVH avec VMWare Server 2 novembre 17th, 2008 le 16:37 [...] fois que vous l’avez lu, vous pouvez vous rentre sur le Blog à Guigui pour savoir comment installer VMWare Server 2.0 sur votre propre distrib Debian… Parti de [...] 15. Superkikim novembre 17th, 2008 le 17:55 Hello… Dis, un détail que je suis pas sûr d’avoir compris: Heartbeat nécessite une adresse IP Failover pour lui même déjà, correcte ? Donc l’adresse IP qu’on spécifie dans IPaddrFO est l’adresse pour Heartbeat, pas l’adresse FO qu’on a donné à la VM ? 16. guiguiabloc novembre 17th, 2008 le 18:19 Heartbeat ne fait que monter l’ip sur la machine maître. Dans le cas ou l’ip publique utilisée ne peut être up simultanément sur les deux serveurs. Avec l’architecture VM vue ici, cela ne sert pas à grand chose puisque la machine esclave est éteinte et démarrer uniquement en cas de bascule. Je me sers d’heartbeat pour basculer le volume DRBD de l’un a l’autre et pour monter la partition, pas pour la gestion de l’ip failover. 17. Superkikim novembre 17th, 2008 le 22:18 Me semblait aussi Je vais corriger ça. Ensuite, pour l’instant, le DRBD bascule pas. Faut que je trouve pourquoi. Mais je trouverai… 18. Crazysky décembre 5th, 2008 le 11:15 Merci pour ce tutoriel, il y a vraiment de quoi faire. Cependant je crois avoir lu dans l’article précédent, que tu préfères donner des pistes plutôt qu’une solution. Mais perso je bloque comme un fou sur les routes. Je pensais connaitre les bases du réseau … et bah bonjour le truc =) J’essaye de fournir une ip fail over à un Windows XP virtuelle. je m’en suis donc retourné vers la config de OVH pour le mask and co … mais impossible de ping depuis l’extérieur ou de sortir sur le net avec la machine virtuelle. Je pense que le problème vient de la config IP de windows (car pour OVH, pour la config windows, les DNS et Gateway n’existe pas pour eux … donc voila l’explication technique hyper précise ;p) Enfin bon, si tu as la possibilité d’étoffer ta solution concernant l’utilisation d’une IP failover sur le réseau OVH, vas y. Car en regardant sur Google on trouve nombre de gens qui sont coincé (meme sur du linux) et OVH ne donne aucune solution autre que celle de son tutoriel :-/ Merci 19. guiguiabloc décembre 5th, 2008 le 17:05 J’ai meme fait mieux : http://blog.guiguiabloc.fr/index.php/2008/12/05/ovh-ip-failover-dans-une-machine-virtuelle-vmware/ 20. Crazysky décembre 6th, 2008 le 13:18 Merci beaucoup, je vais regarder ça *salive* 21. Krill février 3rd, 2009 le 13:48 Une petite aide pour monter WmWare server 2 avec machine guest en windows : http://www.nanokrill.com /OVH.ashx 22. Christophe mars 16th, 2009 le 19:41 Bonjour, Avez-vous un retour d’expérience d’un guest Windows dans une config comme celle-ci ? Lors d’un crash du serveur maître, le remontage de l’image sur le second serveur fonctionne t’elle correctement ? 23. guiguiabloc mars 16th, 2009 le 21:01 Bonsoir, Je n’ai fait le test qu’un fois avec un windows 2003 server, il est reparti correctement. Mais j’avoue ne pas avoir poussé plus loin mes tests avec un guest Windows. 24. Nuts avril 8th, 2009 le 12:23 Pour répondre à superkikim qui devait relancer vmware-config.pl après chaque reboot … J’avais le même problème. C’était une bêtise de ma part, l’install d’origine, je l’ai faite dans /tmp , et une partie de la conf était enregistrée dans /tmp (qui forcément est vidé à chaque reboot). Leave a Reply Nom (required) Mail (ne sera pas publié) (required) Site Web Laisser un commentaire Bienvenue sur GuiguiAbloc! Billets récents Mise en oeuvre d’un cluster Zimbra avec synchronisation multi-plateformes Scans web, engluer les requètes automatisées Vyatta, un JunOS like et une alternative sérieuse a Quagga Nouveaux jouets… Petit break… MogileFS, un système de fichier distribué différent Passage du blog sous Memcached et eAccelerator Authentification par mot de passe jetable avec RADIUS et MOTP Interception des erreurs applicatives dans Nagios avec SEC et Prelude-lml Ma petite vie de Geek, ou comment je raconte ma life… Categories architecture cisco geekerie linux matériel Non classé OpenBSD réseau sécurité vmware wifi Nuage de tags Vous cherchez quelque chose ? Utilisez le formulaire ci-dessous: Mot clés Recherche Vous ne trouvez pas ce que vous voulez ? Laisser un Commentaire sur un Billet ! Special Copinage! Quelques sites amis ou recommandés... Bluetouff’s blog Crashdump fo0 Mark Photos prises au hasard Toonux.net Archives Toutes les entrees, chronologiquement... août 2009 juillet 2009 juin 2009 mai 2009 avril 2009 mars 2009 février 2009 janvier 2009 décembre 2008 novembre 2008 octobre 2008 septembre 2008 Powered by WordPress , Memcached, eAccelerator and pixeled by samk. Sweet icons by famfamfam. Back to top ↑