Endormez vos VMs AVD inutilisées

Azure Virtual Desktop propose deux types d’environnement virtualisé en fonction des usages attendus. Voici une méthode simple de les différencier :

  • Environnement partagé : plusieurs utilisateurs sur une machine virtuelle
  • Environnement individuel : un utilisateur par machine virtuelle

Seulement ces types d’environnement ne conviennent pas à tous les usages. Par exemple, des besoins variés entre les utilisateurs, des droits d’administrateurs ou encore une fréquence d’utilisation ponctuelle d’Azure Virtual Desktop correspondent plus à un environnement AVD individuel.

Dans cet article, nous allons justement nous intéresser aux environnements AVD individuels. La configuration de ces machines mono-utilisateur permet de diminuer les coûts quand ces dernières sont uniquement démarrées si leur utilisateur a en réellement besoin.

Justement, que propose Azure pour allumer et éteindre les machines AVD ?

Pour les environnements AVD partagés, le démarrage et l’arrêt des machines virtuelles est configurable dynamiquement grâce à la nouvelle fonction d’autoscalling : un article est déjà disponible sur ce blog juste ici.

En quelques mots, la fonction de mise à l’échelle automatique (autoscalling) vous permet de démarrer des machines virtuelles Azure Virtual Desktop, en modulant à la hausse ou à la baisse leur nombre selon les besoins à l’instant T.

Est-ce aussi compatible pour les environnements AVD individuels ?

Oui pour le démarrage des machines virtuelle. Appelé démarrage à la demande, sa mise en place est très simple. Un autre article de ce blog en parle juste ici.

En quelques mots, l’utilisateur se connecte et attend quelques minutes, si la machine est éteinte, le temps qu’Azure démarre sa machine virtuelle AVD. Voici également une vidéo de Dean qui en parle très bien :

Quand s’éteindra alors sa machine individuelle AVD ?

Concernant l’arrêt de sa machine virtuelle individuelle AVD, il n’existe pas encore d’option native qui agit dynamiquement. Par défaut, l’arrêt d’une machine virtuelle Azure est :

  • Manuel : réalisé par script ou depuis le portail Azure.
  • Programmé : via la fonction auto-shutdown, configurable individuellement sur chaque VM.

Cette seconde option pose un souci dans un environnement AVD : l’absence de corrélation entre un auto-shutdown à heure fixe durant l’utilisation d’AVD risque de déconnecter à tort des utilisateurs.

Est-il envisageable de laisser l’utilisateur éteindre sa propre machine virtuelle ?

Cela vous oblige à lui donner des droits sur une ressource Azure : sa machine virtuelle.

Que peut-on faire pour gérer dynamiquement l’arrêt des machines virtuelles individuelles AVD ?

Azure est une chose flexible ! Une combinaison de services est possible pour arriver à cet objectif. Soyons clair, je n’ai rien trouvé n’y inventé, mais je me suis appuyé sur cette excellente documentation Microsoft.

Comme le montre le schéma ci-dessous, différentes étapes sont présents pour arriver à l’arrêt complet du service Azure :

  • Premier déclencheur = déconnecte l’utilisateur inactif
  • Second déclencheur = éteint l’OS de la machine virtuelle
  • Troisième déclencheur = désalloue la ressource Azure
Un mécanisme anticipe le retour de l’utilisateur avant l’arrêt de l’OS.

Différents composants sont nécessaires pour réaliser toutes ces étapes :

  • Ressources Azure :
    • Automation Account / Runbook / Identité managé
    • Alertes journalisées / Groupe d’action
  • Ressources Windows :
    • GPOs ou Polices locales
    • Tâches planifiées
    • Scripts

Etape 0 – Rappel des prérequis :

Des prérequis sont nécessaires pour réaliser ce test sur un environnement individuel AVD :

  • Un tenant Microsoft
  • Une souscription Azure valide

Etape I – Déploiement de l’environnement AVD :

Pour déployer rapidement un environnement AVD joint à Azure AD, déployez un réseau virtuel Azure :

Continuez en déployant un environnement individuel AVD :

Ajoutez une ou plusieurs machines virtuelles pour les tests :

Renseignez les informations de réseau et un identifiant / mot de passe pour l’administrateur local :

Créez votre espace de travail AVD :

Une fois validation terminée, lancez la création des ressources Azure Virtual Desktop :

Attendez que le déploiement de votre AVD se termine :

Etape III – Finalisation de la configuration initiale :

Quelques opérations sont nécessaires pour finaliser l’installation de l’environnement AVD.

Ajoutez les 3 rôles Azure RBAC suivants sur votre groupe de ressources AVD :

  • Contributeur à la mise en route de la virtualisation des postes de travail : permet à l’application AVD de démarrer une machine virtuelle éteinte.
  • Utilisateur de la virtualisation du poste de travail : assigne l’utilisateur au groupe d’applications AVD.
  • Connexion de l’administrateur de la machine virtuelle : autorise l’utilisateur à se connecter à distance sur sa machine virtuelle avec les droits d’administrateur local.

Activez cette option pour mettre en route la fonction d’authentification SSO entre Azure AD la machine virtuelle AVD (expliquée juste ici) :

Activez la fonction de démarrage à la demande (expliquée juste ici et documentée officiellement ) :

Assignez votre utilisateur AVD de test à une des machines virtuelles :

Etape IV – Test de l’environnement AVD :

Avant de déployer la solution de configuration d’arrêt dynamique, testez le bon fonctionnement de l’accès à votre environnement AVD avec votre utilisateur de test.

Depuis votre poste local, connectez-vous à l’URL suivante, puis renseignez vos identifiants :

Ouvrez la session de bureau à distance AVD :

Acceptez la fin de la configuration SSO :

Attendez que la session Windows s’ouvre :

Une fois connecté, fermez la session utilisateur :

Depuis votre portail Azure, éteignez la machine virtuelle AVD :

Relancez la même connexion AVD depuis la page web de votre utilisateur de test :

Constatez la présence du message du démarrage de la machine virtuelle, vous invitant à patienter :

Attendez quelques minutes et constatez l’ouverture de la session Windows AVD :

Si tout fonctionne correctement pour vous, continuez la suite de cet article pour configurer l’arrêt dynamique AVD.

Etape V – Configuration des composants Azure

Pour cela, créez un compte Azure Automation :

Une fois la validation terminée, lancez sa création :

Une fois la ressource créée, allez dans le service appelé Azure Monitor :

Ajoutez une Règle d’alerte d’état de santé comme ceci :

Cochez uniquement les 4 conditions suivantes de cette façon :

Créez un nouveau Groupe d’action :

Rattachez le Groupe d’action à votre compte Azure Automation précédemment créé :

Lancez la création de votre Groupe d’action :

Nommez votre Règle d’alerte :

Lancez la création de votre Règle d’alerte :

L’étape suivante concerne maintenant la configuration Windows des machines virtuelles AVD. Il est possible de l’établir cela par :

  • des Polices locales sur chaque VM AVD
  • des GPOs créées sur un Active Directory

N’ayant pas d’Active Directory dans mon environnement de test, nous allons créer des polices locales sur la machine AVD de test. C’est aussi votre cas si les machines virtuelles AVD sont jointes à Azure AD.

Etape VI – Configuration des composants Windows

Comme votre utilisateur de test est considéré comme un administrateur local, ouvrez le Planificateur de tâche Windows depuis le menu Démarrer :

Créez une nouvelle Tâche planifiée :

Nommez la Tâche planifiée, puis cochez les cases suivantes :

Ajoutez un déclencheur sur le second onglet :

Choisissez le motif de déconnexion avec un délai de 30 minutes :

Sur l’onglet des actions, ajoutez le lancement du programme Shutdown avec les arguments suivants:

/f /s /t 0

Validez la création de la Tâche planifiée, puis lancez la création d’une seconde Tâche planifiée :

Choisissez le démarrage de la Tâche planifiée avec l’ouverture d’une session utilisateur :

Sur la VM AVD, créez un nouveau fichier texte avec les lignes ci-dessous :

@echo off
schtasks /change /tn  Deconnexion /disable
schtasks /change /tn  Deconnexion /enable
exit

Enregistrez-le sous le nom reset.cmd dans le dossier C:\Windows\System32 :

Appelez-le dans l’action de la Tâche planifiée :

Validez la création de la Tâche planifiée :

Ouvrez le Gestionnaire de police locale :

Naviguez dans l’arborescence suivante :

  • Configuration utilisateur
    • Paramètres Windows
      • Scripts (Logon/Logoff)

Cliquez sur le script suivant :

Cliquez sur Ajouter :

Ajoutez le nom de script suivant :

C:\Windows\System32\tsdiscon.exe

Validez ce script en cliquant sur OK :

Toujours dans le Gestionnaire de police locale, naviguez dans la seconde arborescence suivante :

  • Configuration utilisateur
    • Modèle administratif
      • Composants Windows
        • Services de bureau à distance
          • Hôte de session de bureau à distance
            • Limite de temp de session

Cliquez sur la configuration suivante :

Configurez comme ceci, puis validez vos modifications :

Etape VII – Test de la configuration

Il ne reste qu’à tester tout ça. Voici un rappel des temps de phase configurés :

Avant la première authentification de mon utilisateur AVD, la VM qui lui est attitrée est désallouée, comme le montre le portail Azure ci-dessous :

Je connecte mon utilisateur de test au bureau AVD. Comme sa machine virtuelle est en statut désalloué, je dois attendre quelques minutes pour accéder à son bureau Windows :

Quelques minutes plus tard, la session Windows s’ouvre sans autre action de sa part ni de la mienne :

Le statut de la machine virtuelle AVD a lui aussi changé dans Azure :

Son horloge Windows indique 19:31, j’attends donc les 30 minutes nécessaires, sans effectuer aucune activité sur la session AVD. Environ 30 minutes plus tard, le message suivant apparaît sur sa session AVD :

Si rien n’est fait pendant ces deux minutes, la suite logique est la déconnexion de cet utilisateur :

A ce moment-là, Le portail Azure nous affiche que la machine virtuelle est toujours bien fonctionnelle :

Par contre, AVD reconnait bien que sa session AVD est bien en statut déconnecté :

Environ 30 minutes après la déconnexion de l’utilisateur de test, sa machine virtuelle AVD passe en statut arrêté :

La machine virtuelle devient alors indisponible pour le service AVD :

Environ 5 minutes plus tard , la machine virtuelle passe en statut désalloué :

Une nouvelle tentative d’ouverture AVD depuis le portail utilisateur relancera le démarrage de sa machine virtuelle :

Conclusion

La mise en place de la configuration de déconnexion des sessions inactives fonctionne très bien dans les environnements individuels d’Azure Virtual Desktop. Cette approche va sans nul doute diminuer les coûts liés au Cloud pour des besoins spécifiques et/ou périodiques, sans avoir à se soucier du démarrage et de l’arrêt des machines virtuelles individuelles.

Il sera même intéressant de combiner cette approche avec des instances réservées. Le nombre d’instances réservées approprié dépendra du plancher constant d’utilisateurs AVD connectés.

Comprenez les coûts d’une ressource Azure

Un des principes fondamentaux du Cloud est fonctionner, et de facturer, selon la consommation. Cela permet de payer un service uniquement quand celui-ci est utilisé. Associé à ce principe, une transparence des coûts est présente via une décomposition précise.

Néanmoins, la compréhension de la tarification et de la facturation d’Azure n’est pas chose aisée durant la mise en place des premières architectures, tant la granularité tarifaire peut s’avérer pleine de coûts combinés et de variantes possibles selon les scénarios.

Un premier article dédié à l’optimisation des coûts est déjà disponible sur ce blog juste ici. Ce second article est quant à lui dédié à la décomposition tarifaire d’une machine virtuelle, très utilisée sur Azure.

Optimisez votre Azure : 1/4 – Les Coûts

Comment fonctionne la politique tarifaire d’Azure ?

Azure propose deux méthodes de tarification, assez classiques chez tous les fournisseurs de Cloud :

  • Paiement à la demande : aussi appelé PAYG (Pay-As-You-Go), cette méthode de facturation est sans engagement. Le décompte tarifaire commence selon les cas quand la ressource est créée ou allumée, et se termine quand la ressource est supprimée ou arrêtée.
  • Engagement de durée : disponibles sur certaines ressources Azure, les engagements sur Azure sont généralement disponibles sur un ou trois ans avec un paiement unique en début d’engagement ou mensuellement. Durant cette durée, le coût de la ressource n’est plus facturé en PAYG, on profite alors d’un rabais très intéressant. L’annulation de l’engagement durant la période n’est pas toujours possible.

Il est possible de combiner les deux méthodes dans un seul environnement Azure sans difficulté.

Attention : un engagement ne couvre généralement pas l’ensemble des coûts d’une ressource Azure.

Quels sont les principaux types de coûts d’une ressource Azure ?

La liste des prix publics des ressources est accessible sur la Calculatrice de prix Azure.

Aucun identifiant n’est nécessaire.

Rien de telle qu’une vidéo pour comprendre comment celui-ci fonctionne :

Seyfallah Tagrerout

Le coût d’une ressource Azure se décompose généralement en plusieurs types de coût. Par exemple, le stockage de données sur Azure générera les coûts suivants :

  • Le volume de stockage : Mo, Go, To, …
  • Le volume de transactions : lectures, écritures, …
  • Le volume de données transitant par les réseaux : Mo, Go, To, …
  • Les services additionnels : réplication, sauvegarde, sécurité, …
Ce lien ouvre une page détaillée des coûts.

Dans cet article, nous allons nous intéresser aux machines virtuelles Azure et à quatre de ses principaux types de coûts :

  • Le Calcul : le traitement de l’information nécessite un service capable d’effectuer des calculs. Azure considère couple processeur / mémoire comme un couple de calcul. On retrouve cet ensemble dans les machines virtuelles, les serveurs de base de données ou les services Web. Assez simplement, le coût du service calcul va dépendre de sa taille, donc de sa technologie, de son nombre de coeurs et de sa taille de mémoire.
  • Le Stockage : Bien souvent, de l’information a besoin d’être stockée dans une architecture. Qu’elle soit utilisée par le service de calcul, mise à disposition pour des accès externes ou pour des besoins de sauvegarde, le stockage disposera généralement de 3 variables : taille (Go; To), débit (Mo/sec; Go/sec) et puissance transactionnelle (IOPS).
  • Le Réseau : Une ressource Azure a besoin de communiquer avec des utilisateurs ou d’autres ressources IT. Par exemple, le réseau virtuel Azure est un moyen simple de faire communiquer des ressources Azure entre elles, une passerelle VPN ou ExpressRoute Azure sera un moyen facile et sécurisé d’établir une communication vers un environnement local. Comme pour le stockage, la tarification réseau repose sur des variables : taille de la bande passante et le volume de données en transition.
  • La licence logicielle : Là encore, la ressource Azure sera souvent exploitée par un système d’exploitation et/ou logiciel, dont certains fonctionnent sous licence payante. Dans l’exemple des licences Microsoft, comme Windows Server ou SQL Server, la tarification Azure repose sur la taille du service de calcul, comme le nombre de coeurs des machines virtuelles. Il est aussi possible de réduire les coûts des licences en réutilisant, sous certaines conditions, des licences existantes.

La machine virtuelle Azure est le meilleur exemple car elle est présente dans de nombreux déploiements Cloud et comporte une variété de coûts Azure.

Tous les champs indiqués dans la Calculatrice de prix Azure ont un impact sur le prix, mais les trois champs entourés en rouge sont ajustables selon les besoins dans le temps :

Taille de l’instance de calcul :

Pas de mystère, plus une machine virtuelle dispose de coeurs et/ou de mémoire, plus son coût est élevé. Il est donc important de choisir une taille adaptée selon les besoins pour éviter des ralentissements ou une sous-utilisation.

Peut-on moduler la taille de la machine virtuelle selon les besoins ?

Il est envisageable de redimensionner la taille durant la nuit ou le week-end quand la période de calcul est plus faible, via le portail Azure ou même de l’automatiser grâce à un script.

Attention : un changement de taille engendre un repositionnement de la machine virtuelle par l’hyperviseur, donc un redémarrage systématique de l’OS.

Durée de fonctionnement :

Une fois créée, une machine virtuelle Azure oscille sur 3 différents statuts :

  • Démarrée : fonctionnement normal et tarification des 4 coûts : calcul, stockage, réseau et licence.
  • Arrêtée : machine virtuelle non accessible, tarification maintenue pour le calcul et le stockage.
  • Arrêtée (Désallouée) : machine virtuelle non accessible, tarification maintenue pour le stockage.

Dans certains cas, l’arrêt complet de la machine virtuelle est donc une approche intéressante pour réduire les coûts. Imaginez un scénario où la machine virtuelle ne démarre qu’au moment où l’utilisateur en a besoin, par exemple durant les heures des jours de la semaine.

Important : à noter que le démarrage d’une machine virtuelle dépend aussi des ressources disponibles dans le datacenter Azure où elle se situe. Ce point de détail a pu être épineux, par le passé, pour certaines tailles de machines exotiques.

Engagement, ou pas :

Comme indiqué plus haut, deux méthodes de facturations sont disponibles sur Azure. Prendre un engagement sur une machine virtuelle est une méthode pratique pour diminuer les coûts quand l’utilisation de la ressource est en 24/7.

Comment fonctionne une instance réservée ?

Il faut voir une instance réservée Azure comme une place de parking, louée pour une durée d’un ou trois ans auprès de Microsoft :

L’instance réservée est une méthode d’engagement historique, elle a depuis été complétée avec le Plan d’économies, disponible depuis quelques mois :

Disque de stockage :

Le stockage de données est un élément indispensable pour une machine virtuelle Azure. Il s’agit d’un coût que l’on paye en permanence, même si la machine virtuelle est éteinte. La taille, la SLA et les performances des disques sont des vecteurs de coûts et donc d’économies potentielles.

Quatre niveaux de disque sont actuellement disponibles sure Azure :

  • Standard HDD
  • Standard SDD
  • Premium SSD v1/v2
  • Ultra disk

L’économie va alors dépendre des besoins : une taille de disque adaptée, des performances suffisantes vous permettrons de répondre au mieux à ces derniers et donc de réduire les coûts :

Les disques premium SSD v2 apportent plus de flexibilité sur le choix des performances voulues.

Quelques remarques :

  • La taille du disque dépendra de la taille de l’image ou de la partition. Il n’est pas possible de choisir une taille plus petite que l’image.
  • Certains niveaux de disques n’incluent pas les coûts liés au volume de transaction dans le prix de base. Il faut donc en tenir compte dans le calcul de coût du stockage.
  • Le meilleur prix final, et donc la meilleure économie possible, peut reposer sur l’achat de disque plus cher pour ne pas payer un gros et coûteux volume de transactions.
  • Le changement de niveau de disque est possible au démarrage de la machine virtuelle via le portail Azure ou avec la mise en place d’un script.

Le réseau :

Inutile de se le cacher, la tarification du réseau d’Azure n’est pas simple. Azure considère un transfert de données et son prix change en fonction de sa destination :

Interne à la région Azure : transfert de données entre deux ressources d’une même région Azure. Dans ce scénario, le coût du traffic est nul, pour la plupart des cas :

A noter que le peering de réseaux virtuels, d’une même région Azure ou non, n’est pas gratuit.

Entre deux régions Azure : certains architectures Cloud sont réparties sur plusieurs régions Azure afin de disposer les ressources au plus près des utilisateurs. Tous les mois, les 5 premiers gigas de transfert de données inter-région sont gratuits :

Vers le réseau internet : tous les mois, les 100 premiers gigas de transfert de données vers internet sont gratuits :

Comme pour toute ressource Azure mise en réseau, une machine virtuelle communique via 2 types de flux :

  • Entrant : connexions entrantes, comme un accès RDP distant ou encore un service web accessible en local ou sur internet. Les flux réseaux entrants vers Azure ne génèrent pas de coûts.
  • Sortant : connexions sortantes, comme un accès RDP distant ou lors d’un téléversement de fichiers. Les flux réseaux sortant d’Azure génèrent des coûts si la destination est en dehors du réseau Microsoft ou sur une autre région Azure.
Le routage du trafic via Microsoft Global Network sera plus résilient qu’un routage Internet, mais un peu plus cher.

Licences logicielles :

La majorité des machines virtuelles vont fonctionner sur Windows ou Linux. Bien souvent, un système d’exploitation nécessite de disposer d’une licence. Microsoft propose donc de payer cette licence uniquement quand la machine est démarrée.

Vous retrouvez ce détail personnalisable dans le Calculateur de prix Azure :

Deux facteurs existent sur le prix de la licence en PAYG :

  • Le coût de licence va dépendre du nombre de coeurs.
  • Un nombre d’heures moins important fera baisser le montant du coût de licence.

Qu’est-ce qu’Azure Hybrid Benefit ?

Azure Hybrid Benefit est un avantage en matière de licences qui vous permet de réduire considérablement les coûts d’exécution de vos charges de travail dans le cloud. Son fonctionnement consiste à vous autoriser à utiliser vos licences Windows Server et SQL Server compatibles sur Azure.

L’activation de cette fonction est faisable pendant ou après la création de la machine virtuelle en quelques clics :

Vous pouvez acheter des licences en souscription annuelle ou pluriannuelle. Les économies réalisées représentent des sommes non négligeables.

Enfin, il ne faudra pas oublier d’autres coûts annexes comme la sauvegarde de données, la sauvegarde de logs ou de métriques, ou encore la mise en place d’un service de reprise après sinistre, qui seront rattachés à différents services Azure.

Conclusion

La tarification d’un hébergeur Cloud peut sembler complexe, mais une prédiction des coûts est possible grâce à l’utilisation du Calculateur de prix Azure. La documentation Azure est aussi là pour mieux comprendre les différences entre les SKU et leurs politiques tarifaires.

Enfin, je conseille également un suivi de la consommation post-déploiement via le Gestionnaire des coûts Azure afin de comparer votre prévision avec la réalité, et donc d’améliorer vos estimations futures.