Archive

Posts Tagged ‘VM Role’

Déployer votre propre Machine virtuelle dans Windows Azure (2/2)

Le billet précédent (https://nicolasclerc.wordpress.com/2011/02/22/dployer-votre-propre-machine-virtuelle-dans-windows-azure-12/) vous a expliqué comment créer votre(vos) .VHD et les télécharger vers Azure.

Une fois ce téléchargement terminé, la console d’administration d’Azure doit ressembler à cela :

vhdUploaded

Quelques statistiques post upload :

– mon VHD de base préparé fait environ 8go , l’upload via une ligne ADSL situé a 3500m du central ,devrait durer plus de 1jour, 18h Triste .

image

Au final, 1j et 8h auront “suffi”.

C’est dans ces cas là que l’on apprécie les connexions de type fibre optique. Ceci dit, il apparait clairement que la phase de test local de vos VM préalablement à l’upload est extrêmement importante. Il est en effet totalement inenvisageable de tester l’ensemble une fois la VM déployer et de retenter plusieurs upload en cas de soucis !

En cas de soucis pendant l’envoi des VHD, la commande csupload effectue une reprise par rapport au dernier morceau de VHD transmis. il suffit de relancer la commande pour que le transfert reprenne au point où il s’était arrêté.

Lors de mes 2 uploads, le transfert a généré une erreur a la fin du transfert. Les VHD sont restés en état ‘pending’. Il a suffit de relancer la commande csupload pour que leurs statuts soient corrigés et prennent la valeur ‘commited’.

 

Liaison VHD de Base / VHD Différentiel

Notre machine virtuelle sera instanciée à partir d’un disque différentiel (il ne contient que les différences par rapport au disque de base).

Le fait d’avoir téléchargé nos 2 VHD sur le repository Azure n’a pas recréé le lien logique entre le VHD différentiel et son VHD de base. Il faut le créer explicitement à l’aide de la commande suivante :

csupload Set-Parent -child SPECIFIQUEAzureDIFFW2008R2EN.vhd -parent ImageDeBase.vhd

 

L’affichage de la console d’administration se met à jours pour visualiser cette dépendance :

image

 

Il nous reste maintenant à créer un rôle Azure afin de lancer l’exécution de notre VM au sein des datacenters Azure. Pour ce faire, on aura besoin de Visual Studio 2010avec l’extension Windows Azure Tools for Visual Studio et bien entendu du SDK Azure v1.3 (mais qui est installé en même temps que les tools).

 

Création d’un projet Windows Azure

L’envoi des fichiers .VHDs dans Azure est une condition nécessaire mais pas suffisante pour démarrer votre VM dans Azure. Il faut créer un projet de type Windows Azure avec Visual Studio 2010 :

img1-creationSolution Azure

Pour le moment, on laisse le projet vide (ne pas ajoutez de service à partir du Wizard).

image

On obtient un projet Azure … sans service (ce qui est – vous conviendrez – d’une utilité toute relative Sourire ).

image

Nous allons devoir ajouter maintenant un rôle de type “VMRole”.

 

Point important : Le SDK 1.3 (et les tools associés) possède d’emblée les fonctionnalités pour créer des rôles de type “VMRole” dans un projet Windows Azure, mais cette fonctionnalité est désactivée lors de l’installation des tools. Lorsque vous aurez été accepté dans le programme de Beta VMRole vous recevrez par email un lien permettant de télécharger un fichier .reg qui mettra la base de registre à jour pour activer le support des VMRole dans Visual Studio.

 

Un clic droit sur le dossier “Roles” vous permet de créer un nouveau rôle … sélectionnez “New Virtual Machine role”.

imageimage

Nommez correctement votre rôle : dans cet exemple : “VmDemoBlog”

Dans la fenêtre des propriétés du rôle qui s’ouvre automatiquement, onglet “Virtual Disk”, sélectionnez (ou ajoutez) le compte de stockage utilisé pour stocker votre VM dans Azure.

Sélectionner le VHD différentiel dans la liste déroulante :

image

 

Dans l’onglet “Configuration”, sélectionnez le type et le nombre d’instance de la VM que vous souhaiter lancé. (les instances de type small sont limité à 35Go : http://msdn.microsoft.com/en-us/library/gg465391.aspx). Si vous souhaitez lancez plusieurs instances il faudra vous assurer que vos applications sont compatibles avec des instances multiples … et bien entendu que vous possédez les licences en nombres suffisant.

image

Dans l’onglet “EndPoints”, nous allons configurer les points d’entrées/sorties que l’on souhaite rendre accessible sur notre VM. Dans notre exemple nous allons autoriser l’accès au port http/80 (qui sera géré par IIS).

image

 

Sauvegarder et fermer la fenêtre configuration du Rôle. Cette fenêtre à mis à jour les fichiers .cscfg et .csdef.

Ouvrez le fichier .cscfg (Cloud Service ConFiGuration) :

<?xml version="1.0" encoding="utf-8"?>
<
ServiceConfiguration serviceName="QuidMindVMRoleDemo"
 
xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration"
 
                     
osFamily="1" osVersion="*"
>
  <
Role name="VmDemoBlog"
>
    <
Instances count="1"
  />
    <
OsImage href="ImageDeBase.vhd"
/>
    <
ConfigurationSettings
>
      <
Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString"
 
              
value="UseDevelopmentStorage=true"
/>
    </
ConfigurationSettings
>
    <OsImage href="SPECIFIQUEAzureDIFFW2008R2EN.vhd" />
  </
Role
>
</
ServiceConfiguration>

Par défaut, Visual Studio configure le role comme étant basé sur un Windows Server 2008 SP2. Dans notre cas, notre VM est basé sur Windows Server 2008 R2. Pour assurer une intégration optimale de notre VM dans Azure il convient de préciser la version d’OS en affectant la valeur 2 à l’attribut osFamily (pour plus de détail sur le schéma XML : http://msdn.microsoft.com/en-us/library/ee758710.aspx ) :

<ServiceConfiguration serviceName="QuidMindVMRoleDemo" 
xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration"
 
                     
osFamily="2" osVersion="*">

 

Par curiosité, on peut regarder le fichier .csdef (Cloud Service DEFinition) qui la définition de notre service.

<?xml version="1.0" encoding="utf-8"?>
<
ServiceDefinition name="QuidMindVMRoleDemo" 
xmlns=http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition
>
  <
VirtualMachineRole name="VmDemoBlog" size="Medium"
>
    <
Imports
>
      <
Import moduleName="Diagnostics"
/>
    </
Imports
>
    <
Endpoints
>
      <
InputEndpoint name="IIS" protocol="http" port="80" 
/>
    </
Endpoints
>
  </
VirtualMachineRole
>
</
ServiceDefinition>

 

Comme la plupart des machines virtuelles, la notre sera administrée à distance via une connexion Terminal Server. Même si l’administration à distance est activée dans notre VM, Windows Azure ne permettra pas une connexion directe à nos instances sans une configuration du service.

Cette configuration s’effectue dans les fichiers .CS*, mais il est plus simple d’utiliser le wizard de publication pour activer la connexion à distance.  Faites un clic droit sur le projet et sélectionnez “Publish”. Dans la fenêtre qui apparait cliquez sur le lien “Configure Remote Desktop connection …”.

imageimage

 

Dans la fenêtre “Remote Desktop configuration” saisissez les informations suivantes :

  • cochez “Enable connections for all roles
  • le certificat à utiliser pour sécuriser la communication. Pour mieux gérer la sécurité, il est pertinent d’utiliser un certificat distinct de celui utilisé pour la commande csupload. (L’utilisateur de la VM n’est pas forcement l’administrateur qui a gérer le déploiement).
  • le nom d’utilisateur et le mot de passe à utiliser pour se connecter aux instances.
  • Eventuellement, modifier la date de péremption des informations de connexion.

image

 

Cliquez sur OK pour valider les informations RDP puis fermer la fenêtre “Deploy Windows Azure project”. Par curiosité, ouvrez le fichier .CSCFG, vous y retrouverez la configuration lié à l’utilisation du bureau à distance.

image

Le fichier .CSDEF importe 2 nouveaux modules :

image

 

Le projet Azure est maintenant paré à être déployé sur Azure.

Faites un clic droit sur le projet et sélectionnez “Publish”. Cochez “Create Service Package only”. Visual Studio crée la package de déploiement et ouvre le dossier contenant les fichiers à déployer sur Azure (le .cspkg et le .cscfg).

image

Connectez vous à la console d’administration Azure ( http://windows.azure.com ).

Une fois identifié, il fait créer un nouvel “Hosted Service”. Cette étape n’est possible qu’une fois l’envoi des .VHDs terminé (statut “Commited” ).

Cliquez sur le bouton “New Hosted Service” puis saisissez les informations demandées :

  • sélectionnez une souscriptions activée pour la Beta VMRole
  • Le nom du service
  • l’url de votre déploiement
  • Le datacenter qui hébergera vos VM : sélectionnez le même que lors de l’upload de vos VM.
  • La cible du déploiement. ( Production dans notre cas).
  • Le nom du déploiement
  • Les fichiers .CSPKG et .CSCFG généré par Visual Studio.

image

Cliquez sur le bouton “Add Certificate” et sélectionner le certificat que vous souhaitez utiliser pour la connexion bureau à distance, et saisissez le mot de passe attaché au certificat.

image

Cliquez sur OK pour valider l’ajout du certificat, puis sur OK pour créer le nouveau service.

La console d’administration vous avertie qu’un soucis potentiel a été détecté : Cet avertissement est lié au nombre d’instance demandé : 1. En effet il n’y aura pas de redondance et donc le contrat de qualité de service SLA d’Azure ne pourra pas être appliqué (ce qui n’est pas gênant dans notre cas, mais pensez à évaluer cette situation dans vos projets).

image

Cliquez sur “Yes”. Azure commence le déploiement du VMRole et démarre les instances demandées. (cette étape peut prendre quelques minutes).

image

L’onglet “VM Images” montre que le VHD est en cours d’utilisation :

image

L’instance VM passe par différents statuts, notamment : “Starting Host”, “Setting up Windows for first use”, … et enfin … “Ready”.

image

 

 

Utilisation de notre VM

 

Premier test : le service HTTP

Nous avons déclarer le port 80 comme point d’accès (Endpoint) à la VM  : lancer IE et tester l’url associé au VMRole ( http://demovmroleblog.cloudapp.net/ dans le cas de ce billet ) … oh magie … :

image

 

 

Deuxième test : la connexion RDP

Via la console d’administration d’Azure, sélectionner l’instance sur laquelle ont souhaite se connecter, puis cliquez sur le bouton “Connect” (ce bouton n’est actif que si les connexions RDP ont été activé dans la définition du rôle).

image

 

Acceptez l’ouverture du fichier .rdp qui lancera la client RDP de votre machine avec la bonne configuration pour arriver sur l’instance visée,

image

 

saisissez les informations de connexion paramétrées précédemment, puis acceptez le certificat associé à l’instance de la VM :

imageimage

 

Et enfin … le bureau de notre VM qui tourne dans un datacenter Azure :

image

 

 

Cout et facturation

 

Petit rappel : l’utilisation de la plateforme Azure peut être générateur de cout financier (transfert de données, stockage, calcul). si vous n’êtes pas sur de vous n’entamez pas d’essai inutile et vérifiez au préalable les conditions de facturation de votre abonnement Azure.

 

L’utilisation de ressources Azure pour la rédaction des 2 billets concernant les VMRole à générer des couts (certes infimes, mais qui sont quand même apparu sur la facture : <1€). Ces couts concernent :

  • Bande passante réseau : Envoi des fichiers VHD sur le datacenter (le forfait mensuel de mon abonnement MSDN à même été dépassé).
  • Bande passante réseau : utilisation de la connexion bureau à distance sur la VM
  • Temps CPU Azure sur un VM Rôle (non facturé pendant la période de CTP)
  • Repository de VHD pour le stockage des VHD (non facturé pendant la période de CTP)

 

Et voila, maintenant à vous de ‘jouer’.

Catégories :Windows Azure Étiquettes : , ,

Déployer votre propre Machine virtuelle dans Windows Azure (1/2)

Dans ce billet , un peu plus long que d’habitude, je vous propose de faire un point une des nouvelles fonctionnalités Azure annoncé lors de la PDC 2010 : l’hébergement de machine virtuelle directement dans les datacenters d’Azure.

Il y a 4 pré-requis :

  1. Avoir un abonnement Azure valide AVEC les fonctionnalités Beta (VM Rôle) d’activé
  2. Avoir une machine virtuelle basée sur Windows 2008 R2 64bits.
  3. Avoir les licences des logiciels à installer sur la machine virtuelle Sourire

Licences logicielles et Ressources Windows Azure :

L’ensemble des licences logicielles utilisée dans le cadre de cette article provienne de mon abonnement MSDN (Windows 2008 R2, Azure, Visual Studio 2010, …) : http://www.microsoft.com/visualstudio/en-us/products/2010-editions/ultimate ) . Les abonnement MSDN (Premium, Ultimate et Bizspark) incluent des ressources Azure pour le développement (http://msdn.microsoft.com/fr-fr/subscriptions/ee461076.aspx).

Pour l’activation des avantages Windows Azure de votre abonnement MSDN, je vous recommande la lecture de ce billet écrit par Marine Tranquard.

 

Fonctionnalités Bêta de Windows Azure

L’activation des fonctionnalités Béta de la PDC (VM Role, Windows Azure Connect, …) se fait en ligne sur le site d’administration de votre souscription Azure : https://windows.azure.com

  1. Sélectionner la panneau “Home”
  2. cliquez sur l’option “Beta Programs”
  3. Cliquez sur “Participate”

image

Une fois la demande de participation aux programmes Bêtas effectuée … il peut s’écouler plusieurs jours (voir semaines Triste ) avant que vous n’obteniez l’accord. Tout dépend des ressources disponibles pour ces Betas au sein des datacenters Azure. Donc n’attendez pas, faites la demande dès maintenant !

Au passage, notez l’Id de votre souscription Windows Azure, il vous sera utile par la suite.

 

Création de l’image Windows

Une image Windows pour Azure doit être basé obligatoirement sur une installation de Windows 2008 R2 64bits. L’image doit être créer au préalable sur une des vos serveurs HyperV (en effet l’hyperviseur de virtualisation utilisé dans les data center Azure dérive d’HyperV).

Je ne rentrerai pas dans le détail de cette phase car il  n’y a pas de différence avec la création d’une VM classique dans Hyper-V. Je vous conseillerais néanmoins d’utiliser un disque différentiel qui vous permettra de télécharger une fois pour toute le disque de base  et ensuite uniquement des disques différentiés pour vos instances spécifiques.

Un seul point est important : votre disque VHD doit avoir une taille logique maximum de 66559Mo, sinon il sera refusé par Azure.

Dans le cas de ce billet, il aura donc :

  • un disque de .VHD de base (2008R2_EN_base.vhd) qui contient une installation fraiche de Windows 2008 R2 avec l’ensemble des mise à jours Windows Update.
  • un disque .VHD différentiel (SPECIFIQUE_Azure_DIFF_W2008R2_EN.vhd) qui contient les éléments spécifiques à déployer.

Astuces :

  • N’hésitez pas à activer le bureau a distance d’administration (Remote Desktop)
  • Activez la fonctionnalité “.Net Framework 3.5.1” dans vos VM de base car ce composant sera nécessaire par la suite :

feature .NET 3.5.1

 

“Azurification” de la VM

 

Une fois votre VM prête, il faut la préparer à tourner dans Azure en installant une couche logiciel d’intégration : les “Azure VM Role Integration Components”. Cette couche logicielle permettra à votre VM de remonter des statuts à l’infrastructure Azure, tout en permettant à Azure de gérer correctement les déploiements et mise en production de vos VM dans les datacenters.

Elle est fournit sous la forme d’un fichier .ISO (wavmroleic.iso) installé en même temps que le SDK Windows Azure 1.3 ( ) et se trouve dans le dossier C:\Program Files\Windows Azure SDK\v1.3\iso.

A l’aide d’Hyper-V, il faut connecter cette image iso à un des lecteur de dvd virtuel et installer les composants dans la VM. Si votre image de base est spécifique à Azure, vous pouvez y inclure ces composants.

connect iso vmrole integration

Lancer l’exécution du “waIntegrationComponents-x64.msi” dans votre VM (la fonctionnalité “.Net 3.5.1” est nécessaire).

waintegrationcomponents-x64 msi

icc - step 1

Saisissez le mot de passe Administrateur (ou Administrator) de votre VM. Il sera nécessaire pour le processus de préparation de la VM, puis cliquez sur le bouton “Install” pour que les éléments d’intégration s’installent dans votre VM.

 

icc - step 2icc - step 3

Acceptez l’installation des drivers “Microsoft Storage Controllers”, puis laisser l’installation se terminer. Il faudra redémarrer votre VM pour activer les nouveaux services et drivers.

icc - step 4icc - step 5

 

Préparation de la VM au téléchargement

 

Cette phase est destiné à rendre votre VM générique, c’est à dire à supprimer toutes informations liées à une configuration matérielle précise (nom de machine, configuration hardware, …).  L’image ainsi nettoyée pourra être déployée plusieurs fois, la configuration finale s’exécutera lors de son premier démarrage dans son nouvel environnement (qui sera un datacenter Azure).

L’outils utilisé pour ce nettoyage est “sysprep” (SYStem PREParation). Il n’est pas spécifique à Azure et est souvent employé par les administrateurs pour préconfigurer des images type de déploiement (plus de détail sur sysprep voir ici).

  • dans votre VM, lancer une ligne de commande en mode administrateur et exécuter c:\windows\system32\sysprep\sysprep.exe
  • Sélectionner les valeurs suivantes : “Enter System Out-of-Box Experience (OOBE)”, cochez “Generalize”, “Shutdown

    cmdline admincmdline system32 sysprep

    Cliquez sur le bouton “Ok” pour lancer la préparation de la VM.

syspreparing the VHD

Dès que la VM est préparer, sysprep effectue un arrêt de la VM.  NE RELANCER SURTOUT PAS LA VM car elle se reconfigurerait.

Les 2 fichiers .VHD sont maintenant paré pour un téléchargement vers Azure, mais … Azure n’est pas encore disposé à vous autoriser à envoyer ces fichiers…

 

Création d’un certificat personnel (.pfx)

 

Les envois des fichiers .Vhd sont signés et sécurisés par l’utilisation d’un certificat. Ce certificat permet d’autoriser l’utilisation de l’api de management d’Azure par l’outils d’upload des VHDs.

Si vous ne posséder pas déjà un certificat de management, vous pouvez en générer un avec Visual Studio, ou avec l’outils makecert :

  • Ouvrez une session ligne de commande “Visual Studio command Prompt” en tant qu’administrateur (clic doit, “run as administrator”).
  • Positionnez vous dans le dossier où générer le certificat
  • Entrez la commande suivante :

makecert -sky exchange -r -n "CN=VMRole_Demo" -pe -a sha1 -len 2048 -ss My "VMRole_Demo.cer" (remplacez le CN et le nom du fichier .Cer par vos propre valeur.)

image

Makecert à enregistrer le nouveau certificat dans le ‘store’ personnel.

Il nous faut maintenant exporter ce certificat dans un format compréhensible par Azure : .pfx. Pour se faire, lancer la console d’administration des certificats (Menu démarrer, “Exécuter” et tapez “certmgr.msc”. Sélectionnez le dossier ‘Personnel\Certificats’ et vous devez y retrouver le certificat nouvellement créé. Faites un clic droit dessus, sélectionner ‘tout les taches’ (‘all tasks’) puis  ’exporter’ (‘export’).

export cert

Répondez aux question du wizard d’export ( YES, OUI pour exporter la clé privée, et spécifier un mot de passe).

imageimageimageimage

imageimageimage

 

Les outils Azure auront besoin du “thumbprint” (empreinte numérique) du certificat : double clic sur le certificat dans le gestionnaire de certificat, sélectionner l’onglet “details”. L’empreinte numérique se trouve dans la liste : recopier la valeur ( 20 paires hexadécimale) ! (merci le notepad Sourire ).

detail cert

Ce certificat doit maintenant être déclaré dans votre abonnement azure. Connectez vous à la console d’administration Azure (http://windows.azure.com). Dans la zone “certificates management” des “hosted services”, cliquez sur “Add Certificate”, sélectionnez l’abonnement concerné et le fichier .cer qui vient d’être créé, cliquez sur “Done”. Au bout de quelques secondes le certificat est listé par la console d’administration.

imagecert uploaded

 

L’api de management connait maintenant notre certificat, nous pouvons commencer à télécharger chacun de nos deux fichiers VHD (le VHD de base, et celui de notre vm finale)

Lancer une ligne de commande du Sdk Azure ( Menu démarrer, tous les programmes, Windows Azure SDK v1.3, Windows Azure SDK Command Prompt) puis positionner vous dans le dossier qui contient vos VMs.

Entrez la commande :

csupload Set-Connection "SubscriptionId=VOTREIDSUBSCRIPTIONAZURE; CertificateThumbprint=VOTREEMPREINTE"

(insérer votre Azure SubscriptionId et l’empreinte de votre certificat au bon endroit) afin de mettre à jour les informations de connexion à votre souscription azure. Cette information est mémorisée sur le poste.

cs-upload Set-Connection

 

Entrez maintenant la commande de téléchargement :

csupload Add-VMImage –LiteralPath IMAGEDEBASE.vhd –Location "North Central US" –Name IMAGEDEBASE.vhd

Bien entendu, remplacez ‘IMAGEDEBASE’ par le nom de votre fichier VHD. L’utilisation d’un datacenter US est fortement recommandé pendant la période Beta (seul certains datacenter Azure sont équipés pour supporter ces fonctionnalités durant cette période).

csupload va monter le fichier .vhd, l’analyser et le préparer à un téléchargement (réduction de taille, …) puis déclencher le téléchargement vers Azure.

csupload addvm step 1csupload addvm step 2

csupload addvm step 3

Une fois le premier VHD en cours de téléchargement (“Preparing: 100% complete…”), faites de même pour le 2e fichier VHD correspondant à la VM finale. Un seul téléchargement de chaque vhd est nécessaire, ils peuvent être lancés simultanément.

en vous connectant sur l’interface d’administration d’Azure, vous verrez que la plateforme Azure indique que 2 “VM Role image” sont en cours de création.

image

 

La partie préparation des VHD et téléchargement est maintenant terminé.

Je vous donne rendez vous dans quelques jours pour une 2e billet concernant la création et la configuration des Role Azure afin d’instancier une (ou plusieurs) VM dans Azure.

Catégories :Visual Studio, Windows Azure Étiquettes : , , , ,