Migration de Dedibox vers Amazon EC2

Je suis entrain de préparer ma migration depuis Dedibox pro vers Amazon EC2 (Elastic Cloud Compute). Voici mes premières impressions du nuage Amazon.

Pourquoi je migre

Dedibox a un positionnement étrange. Ils proposent des serveurs performants (Dedibox Pro), mais ils empêchent l’utilisation de leur serveurs comme hyperviseur, ce qui en réduit fortement l’intérêt. Leurs switches coupent les ports qui présentent plus d’une adresse mac, ce qui est le cas avec VMware ESXi ou Hyper-V. Je m’étais rabattu sur un Linux avec VMware Server, mais les VM sont très (trop) lentes. Il en résulte une très bon serveur matériel, mais inexploitable pour de la virtualisation décente. Nul doute que ce soit du hasard, la virtualisation étant le moyen principal de consommer les ressources sur ce type de serveur. OVH propose ESXi, mais le coût est plus fort (notamment avec les 15€/mois pour avoir droit à plusieurs IP publiques, sans parler du raid matériel).
Comme de toute façon mon objectif c’est d’avoir des environnements à la demande, et que c’est la cible d’Amazon EC2, leur offre m’a intéressé rapidement. Au pire, cela va me coûter autant que Dedibox, mais au moins j’en aurai pour mon argent!

Etape 1: Le calculateur Amazon

En parlant d’argent, la première difficulté est de savoir combien ça va coûter! Bon en fait, la première difficulté est de savoir le type d’instance qui convient:

  • A la demande: aucun engagement, vous ne payez que la consommation,
  • Réservée: vous payer une fois une somme, et ensuite la consommation coûte très peu,
  • Spot: vous ne savez pas quand la VM sera démarrée, mais elle coûtera peu (moins qu’à la demande, mais plus que réservée). Il s’agit d’enchère où Amazon solde les ressources non utilisées.

De façon logique, avoir une VM à la demande allumée tout le temps coûte beaucoup plus cher qu’une VM réservée allumée tout le temps.
Le calculateur a un problème d’ergonomie. Par défaut, il inclut dans le prix mensuel (1er mois), les frais qu’on ne paye qu’une fois. Machinalement, on multiplie par 12 et on prend peur!

Pour calculer le coût par mois il faut donc faire (pour une instance small, réservée et allumée en permanence):

(227.50$ + 29.28$ * 12)/12 = 48.23$ / mois

Le coût moyen d’un VM est donc de  34€ par mois en lissé. Car les 227.50$ sont à payer tout de suite. Pour cette somme, on a donc un linux 32 bit, sur une VM ayant les capacités suivantes:

  • Processeur: 1VCPU 1,7Ghz : 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit)
  • Mémoire: 1,7Go
  • Stockage: 160Go de disque

Le truc bizarre, c’est les 44$ de taxes sur la facture (voir tout en bas de l’article)…

Etape 2: Réserver une instance

C’est le moment de se jeter à l’eau!! Avant, j’ai tout de même démarré une VM à la demande pendant une 1/2 heure pour être sûr des performances. On choisi la taille de la VM (small en ce qui me concerne), et le lieu où elle sera instanciée (2 sites aux USA, 1 site en Europe (Irelande). J’ai choisi l’Irlande, afin de m’épargner la latence transatlantique. Après 5 cliques de mulot, on est en pending. Après 10 minutes, le statut passe à active.
Il s’en suit un grand moment de solitude, où l’on cherche sa VM tant attendue sans la trouver! L’aide n’est pas très explicite. Il faut en fait créer une VM à la demande sur le même site géographique, dans la même zone (2 possibles en Irelande). On ne voit nulle part que s’est rattaché à notre réservation, il faut faire confiance au système. On a juste la confirmation au bout de quelques heures, dans le suivi de facturation en voyant qu’elle est facturée à 0,04$ par heure où elle est allumée.
A ce jour, une VM réservée ne peut héberger qu’un Linux. Windows est cantonné aux VM à la demande, et son taux horaire est un peu plus élevé, car la licence Windows est fournie par Amazon.
Le choix de l’architecture (32/64 bit) dépend de la taille de VM.

Etape 3: Créer la VM

Maintenant que j’ai compris qu’il faut créer une VM à la demande et faire confiance, cela est très facile (5 écrans + 5 minutes de patience). On n’installe pas son système d’exploitation, mais on choisit une image toute prête parmi plusieurs centaines. Amazon met en avant 5 Fedora (4 en 32bit et 1 en 64bit), et 3 Windows. L’onglet Community AMIs permet d’élargir le choix à 971 images.

Le découpage du stockage pour Linux sur les images Amazon est 10Go pour le système et 150Go pour le reste. La VM voit deux partitions (/dev/sda1 et /dev/sda2):

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             10321208   1383500   8413420  15% /
/dev/sda2            153899044   6793004 139288416   5% /mnt
none                    870472         0    870472   0% /dev/shm

Lors de la création de la VM et ultérieurement, Amazon propose inclus un Firewall externe à la VM. Vous pouvez ainsi définir les flux entrant autorisés. C’est très pratique, car on évite un iptable:

Etape 4: Accès à l’instance

Maintenant que l’instance est running, il est temps d’y accéder. Un clic droit sur l’instance propose le menu suivant:

L’option Connect donne l’écran suivant:

Vous l’aurez compris:

  • pas d’accès de type console (Get System Log permet de voir le log du boot),
  • Pas de mot de passe root, mais l’utilisation d’un certificat (obtenu à la création de la VM).

Sur Windows, un client gratuit pour faire du ssh est Putty. Le problème est que Putty ne reconnait pas le certificat fourni par Amazon. Ce dernier documente la procédure pour le faire fonctionner:
http://docs.amazonwebservices.com/AmazonEC2/gsg/2007-01-19/putty.html

En résumé, il faut utiliser PuttyGen, fourni par les même que Putty, afin de loader le certificat Amazon et le convertir dans le format Putty. Après, ça fonctionne nickel:

Etape 5: Performances

Cet aspect est critique en général et en particulier quand on parle de VM. Bonne nouvelle, je suis très satisfait des performances:

  • Réseau: on tire facilement 20Mb/s
  • Disque: 121Mo/s en écriture (dd if=/dev/zero of=dd.dd bs=1M)

Pourquoi est-ce qu’Amazon fournie de telles performances ? Parce qu’il facture la consommation réseau (0.170$ par Go de data)! Contrairement aux hébergeurs classique qui facture tout compris, Amazon facturant à la consommation, ne perd pas d’argent si de gros consommateurs utilisent son service. Sur Dedibox, vous pouvez consommer du 100Mb/s non stop sans payer pour autant. Ils  mutualisent donc plus fortement les connexions afin de réduire les coûts (avez-vous déjà remarqué qu’au dessus de 50Mb/s il y a un trait rouge sur votre graphe de consommation ?).

Je préfère payer un peu plus cher quand je consomme plus mais avoir cette qualité. On peut suivre presque en temps réel sa facturation à venir:

Etape 6: Les options Amazon

Ils ne sont pas en restent pour vous inciter à prendre plus de service:

  • Répartiteur de charge entre vos VM, avec détection de panne sur les VM (facturé au Go de data)
  • Stockage supplémentaire utilisable par une VM avec des snapshots (mais indépendant de celle-ci) (facturé au Go et million de IO)
  • Adresse IP publique supplémentaire que vous pouvez rattacher à n’importe quelle VM (1/VM) (facturée si non utilisée)

VMware linked clone : ne pas defragmenter!

Une des fonctionnalités que j’utilise le plus sous VMware Workstation: linked clone.

Je crée une VM « modèle » avec tout ce qu’il faut, et je ne crée ensuite que des linked clone. Tous les clone se base sur un snapshot identique « mon model V1.1 », afin de ne pas cumuler les snapshots.

Quand ma VM idéale est prête, je la defrag juste avant de l’arrêter. Elle est stockée sur un disque SSD, ce qui permet un accès rapide, profitant à toutes les VM basées dessus.

Avec le temps, mes clone sont fragmentés. Se pose alors la question : que se passe-t-il si je défragmente un linked clone ?

J’ai fait le test suivant:

  • Création d’une VM linked clone à partir d’un model XP.
  • Premier boot: le vmdk contenant le delta fait 50Mo.
  • Analyse de la fragmentation du disque (0%, ce qui est normal vu que le modèle a été défragmenté.):

Néanmoins, je décide de lancer tout de même un defrag « pour voir »!

Le VMDK passe de 50Mo à 626Mo, soit une augmentation de presque 1200%. Cela réduit fortement un des intérêt qui est le gain de place, surtout quand on a 40 VM !

Le sujet est expliqué dans le document VMware « Performance Best Practices and Benchmarking Guidelines », page 19. Il est téléchargeable ici:

http://www.vmware.com/pdf/ws65_performance.pdf

Conclusion: bien préparer son modèle avant, ne plus défragmenter après!

Tutoriel lotp: VMware Workstation – Windows Server 2008R2 en cluster

Je viens de faire un tutoriel sur la mise en oeuvre d’un cluster Windows Server 2008 R2 dans VMware Workstation.
La partie sensible est la réservation persistante scsi-3 impérative depuis Windows Server 2008.

J’ai poste le tutoriel sur screencast: http://www.screencast.com/t/R7ndyktfNXk
vmware workstation 2008R2 cluster

pour les adeptes de Youtube, je l’ai posté aussi (mais qualité inférieure):

Dedibox pro & VMware: l’aventure!

Utiliser une dedibox pro pour faire de la virtualisation n’est pas aussi simple qu’on pourrait le penser. Deux solutions de virtualisation ont été essayées:

  • VMware ESXi
  • VMware Server sur CentOS

VMware ESXi

Les galères sont multiples dont une rédibitoire:

  • Il faut le KVM IP. IPMI ne permet pas de voir l’installation se dérouler et faire le nécessaire. Il faut prendre rendez-vous au moins la veille avant. La mise à disposition n’est que par demi journée. L’accès au KVM est pratiquement publique (toujours le même compte). Attention donc…
  • La distrib ESXi ne connait pas l’ICH9R. Il faut donc ajouter un pack de pilotes de la communauté, mais il a fallu reprendre un package plus ancien pour qu’il voit les disques! Dans le bios, il faut ahci (raid non supporté)
  • Seulement la deuxième carte réseau est vue. La première est censée utilisée le pilote e1000e mais pas moyen!
  • Il n’y a pas moyen de monter l’iso pour installation via ipmi. Il reste 2 solutions: envoyer un CD chez dedibox ou homemade.Voici la version home made!
  1. Démarrer en mode rescue. /tmp est en mémoire (important pour la suite). Cela correspond à un ramdisk. Si vous poussez le dd à venir depuis un accès ADSL, copiez le aussi sur le dedibackup ou le deuxième disque. Au reboot, tout ce qui est dedans sera perdu, et il y a peu de chance que ca fonctionne du premier coup…
  2. Installer ESXi ailleurs, comme dans une VM. J’ai fait un tutoriel pas à pas ici.
  3. Il faut enrichir ESXi avec les pilotes de la communauté (voir plus haut) (penser à enrichir aussi simple.map comme indiqué)
  4. faire un DD de l’installation, et le déposer dans /tmp via scp
  5. Copier le contenu du DD dans le premier disque (/dev/sda)
  6. reboot!
  • Il faut maintenant le KVM IP pour configurer ESXi. Le minimum est de mettre la carte réseau en dhcp (dedibox fourni vos adresses via DHCP sur les deux cartes)
  • Vous pouvez aller sur le site web afin de télécharger le client VI.

A ce stade, on pourrait se dire « champagne ». Sauf que Dedibox n’autorise qu’une seule et unique adresse MAC par interface. Une demande de dérogation au support sera un échec. Sur la carte réseau fonctionnelle, on a donc déjà au moins l’adresse MAC de la carte elle même et on ne peut même pas en présenter une en plus (une VM pour faire routeur). VMware laisse modifier l’adresse MAC d’une VM, mes les 3 premiers digits sont imposés. Modifier le VMX à la main ne change rien, il bloque le démarrage de la VM. Modifier l’adresse MAC dans la VM fonctionne, mais dès qu’elle veut joindre l’extérieur, le cisco de dedibox bloque le port ethernet! Je pense que ESXi ignore l’adresse MAC source est positionne quand même celle prévue.

On a donc un ESXi prêt à fonctionner, on peut créer des VM, mais aucun accès au réseau :'(.

VMware Server

Cela va « presque » tout seul. Il suffit d’installer un linux, je recommande CentOS 5.1 64 bits. L’idée est d’activer la fonction raid dans le bios (via IPMI ou KVM IP).
La carte mère supporte deux EPROM raid:

  • LSI
  • Intel Matrix Storage

Avec Debian (que je préfère), même avec la dernière version 5, aucun des deux raid n’est pris en charge. Avec CentOS, seul LSI fonctionne.

Après cela tout se passe très bien. Attention au firewall intégré à CentOS. Il vous bloquera le traffic autre qu’ICMP pour les VM utilisant des ip failover (IP dédiée à la VM pour avoir du traffic entrant).

Pour attribuer une IP failover à une VM, pas mal de tutoriels existent:

http://blog.guiguiabloc.fr/index.php/tag/vmware-server/

http://www.superkikim.com/vmware/ip-forwarding-pour-les-serveurs-ovh-avec-vmware-server-2/

1er tutoriel Lotp: installer pas à pas ESXi sur VmWare Workstation 6.5

Voici une vidéo de 10 minutes qui explique comment installer ESXi à l’intérieur d’une VM Workstation 6.5!
l’objectif étant d’évaluer ESXi sans pour autant lui dédier une machine…

N’hésitez pas me dire ce que vous en pensez par commentaire ou mail ! Si ce procédé vous plait, il se pourrait que j’en fasse d’autres 🙂

VmWare: vbscript pour defrag & shrink de tous les vmdk (batch)

Si comme moi, vous commencer à avoir pas mal de VM, compresser et faire un shrink de tous les volumes devient impossible.

J’ai donc écrit un vbscript qui:

  • Parcours de façon récursive tous les dossiers depuis une racine
  • Fais un defrag de tous les vmdk qu’il trouve (vdiskmanager se charge de vérifier si c’est possible)
  • Fais un shrink de tous les vmdk qu’il trouve (vdiskmanager se charge de vérifier si c’est possible

En lançant le vbscript avec cscript, vous avez même le log de vdiskmanager qui s’affiche:

vmware_compressor

Deux variables à changer dans le script suivant votre environnement:

  • Où est installé vmware workstation:
VmWareInstallFolder="C:\" & """" & "Program Files (x86)"
& """" & "\VMware\" & """" & "VMware Workstation" &
""""
  • Où sont les VMDK (dossier racine de toutes les VM):
VmdkRootFolder="F:\vmware"

Mon environnement:

  • Windows vista SP1 64 bit
  • VmWare Workstation 6

Téléchargement: vmware_compressor