Archives de catégorie : Non classé

Azure Site Recovery for Azure Virtual machines (Preview)

I’ve been a big fan of Azure Site Recovery service. The product has evolved a lot since initial release (only capable to orchestrate a failover between two on-premises sites), introducing replication of on-premises workloads to Azure and many more features. Until theses last days, we had to comply with some limitations (Max 64 disks of 1Tb each per protected workload) and a major scenario we could not address. Note that Larger disk sizes just been announced in preview, up to 4Tb per Disk.

Since introduction of ASR replication capabilities (for Hyper-V, VMware or physical), we were not able to protect an Azure Virtual machine with Azure Site Recovery. ASR Team, just announced a preview of Azure Site Recovery for Azure Virtual machines. That was one of the top customer requests about Azure Site Recovery. Introduction of this new Azure Site capability allow to respond to the following scenarios:

  • Can survive to a major Azure Region failure by replicating virtual machines to another region
  • Migrate virtual machines between Azure regions
  • Comply with regulations requesting a Disaster Recovery strategy
  • Ability to clone an application based on Virtual Machines to validate

Feature is now available for public preview. Let’s see how to protect an Azure Virtual machine and develop a Disaster Recovery Plan. Note that even if this preview is available in the Azure portal, it’s still a preview. For example, support for PowerShell and CLI is not yet available.


  • An instance of the Azure Recovery Site service: We will need to have an instance of the service in the Azure region in which we want to replicate with. This can be strange. If you remember Azure backup limitations, Azure Backup instance service must be in the same region as virtual machines we wish to protect.
  • A resource group in the target Azure region to store
  • A virtual network (and subnet) to connect the future Network interface. It’s not mandatory if you plan to establish RDP between two paired Azure regions (Azure virtual Network span between paired Azure regions).
  • A storage account created in the target Azure region to store virtual machines
  • A storage account created in the source Azure region to cache content to be replicated to the Target storage account
  • An availability set depending of the destination Azure region if protected workloads in the source Azure regions are linked to an existing availability set.



This blog post aim to describe the setup Itself, but also:

  • The Failover of an Azure Virtual machine to the target Azure Region
  • The Rollback of an Azure Virtual machine to its initial Azure region

Enabling and managing this new feature is so simple and very attractive from a financial point of view (no extra-cost for compute), that would be a crime to do not use it.

If you know the Azure Site Recovery portal experience, you should discover Azure as a source of a protected workload. Note that service is now in preview. For this blog post, I will be having a workload to protect located in Central US Azure region. My goal is to use the West Europe Azure region for DRP plan.


Azure Site Recovery service instance cannot be in the same Azure region as workloads to be protected. It’s logic. On this first stage, we only select the source Azure region, the deployment model and the resource group containing the workloads you wish to protect. Azure Site Recovery instance must depend of the same Azure subscription (and of course Azure environment). While writing this blog-post, it was not yet possible to protect workloads from different subscriptions. That’s a scenario that Azure CSP vendors are waiting to offer services. At this stage UX experience does not change so much from protecting other workloads:


That’s here that many UX changes are introduced. For this blog post, I choose to select a target Azure region that is not paired with the source Azure Region. We are not limited to the paired Azure regions. Azure Site Recovery portal make some proposal for some resources:



If you click on the « Customize » link in the upper part of the UX, you will be able to change proposal for required resources:

  • A resource Group in the target Azure region
  • A virtual Network in the Target Azure region


For each Virtual machine to protect we can customize:

  • The Storage account to be used to store VHD to be used by future replicated virtual machines
  • The Storage account to be used for ASR cache purpose


For these two storage Accounts, you don’t need more than a Local Redundant Storage.



If your virtual machines to be protected is linked to an Availability set, you will need to select an availability Set in the destination Azure region to offer the same SLA for your virtual machine.

Each Azure Virtual machine to be protected must be associated to a replication Policy.

we can customize the following parameters:

  • Retention policy for the recovery points
  • Frequency for app-consistent snapshot



Initial configuration is now over. We can enable replication.



Once replication is enabled we can follow the Azure Site Recovery Jobs. Bellow we have all jobs related to the setup of the protection of your Azure virtual machine.



If we take a closer look at the jobs related to replication, we will discover that ASR deploy a virtual machine extension in our workload.



Watch out, it’s not because initial replication is considered as enabled that its completed. Initial replication will take some times.



In my case (standard Windows Virtual machine without any data disks), initial replication took around fifty minutes.


Once initial replication is terminated, we can consider that our workloads is protected.



If we take a closer look at virtual machine information page, we discover two type of recovery points:

  • Crash-consistent
  • App-Consistent


In DRP situation, we can choose to prefer RTO versus RPO.


If you are familiar with Azure SQL, you should be familiar with that map. Now I have an Azure Virtual machine located in Central US Azure region with a replica in East US Azure region.



Now you have a DRP, you can test it. Microsoft recommendation is to perform a test failover from times to times to validate our DRP plan. You can choose to ignore the recommendation is you wish but that’s a good idea to test a DRP.



We can select the recovery point using:

  • The latest recovery point (for a lowest RPO)
  • The latest processed (for the best recovery time)
  • The last app-consistent


For this test, recommendation is to select a dedicated Virtual Network that is not connected to the source Virtual Network (Virtual Network Gateway or Peering). In the jobs, we can track the progress.



At this stage of the test we have two virtual machines running: The original and the test. Because the second one is connected to an isolated network you can check the health of the application and validate the DR plan.



Test is now complete we can cleanup used resources.



Our workload is now protected. Let’s see how to initiate a « clean failover ».


The « Clean Failover »

We will be considering that failover is initiated manually. In fact, using Log Analytics we can:

  • Detect an unhealthy virtual machine and initiate a single failover
  • Detect a major outage in Azure Activity and initiate a complete relocation


When initiating the failover process, we need decide if fast service recovery is more important than full service restauration.



Because we have both App-Consistent snapshots and Recovery points (up to 24 hours with the default policy), custom recovery point allows us to choose a specific version of my application. That’s great because, nowadays, applications are distributed among many servers. In DR situation, we will need to restore many servers.



In Azure Site Recovery Jobs view we can notice that failover was initiated.



If we look at the details, we see that the virtual machine located in the source Azure region was shutdown properly and a new virtual machine was provisioned in the target Azure region. In my case, complete failover operation took five minutes and a half (I choose to minimize the Recovery Point objective).



Once terminated Job appear as completed in the Azure Site Recovery Jobs view. From a virtual machine point of view we now have two virtual machines but only the one located in the target Azure region is running.



Once failover is completed we need to commit the operation. Once commit is performed we select another recovery point.



The clean Rollback

Rollback process is named « re-protect ». In fact, it’s the same process but we switched the target and source parameters.



By default, ASR will use the same parameters but you can override them if necessary.



It’s a little bit longer than on the protection phase, but remain an acceptable



Disable replication

That’s the bonus. When failover is committed, you have the choice to disable replication. This option was designed to move a workload from an Azure region to another.


Additional readings

To have more information about the feature, I would recommend the following readings :



What to say. Even if it’s a preview, it’s almost feature complete (CLI & PowerShell support are missing, just like Managed disks). Once feature will be Generally Available, we will have first-class Disaster Recovery service we cannot not implement.


BenoitS – Simple and Secure by design but Business compliant (with disruptive flag enabled)


Certification Azure 70-533 : Implementing Microsoft Azure Infrastructure Solutions

ça c’est fait !


ça faisait longtemps que je devais la passer. J’avais une appréhension car ceux qui l’ont passé avant moi me disaient : Ça parle beaucoup d’ASM, très peu d’ARM. La certification n’était pas à jour par rapport Azure. Pour moi ça posait deux problèmes :

  • Premièrement, je ne fais que du CSP ces jours-ci dont pas possible de pratiquer autre chose que de l’ARM
  • Azure est en perpétuelle évolution. Rien que l’année dernière, Azure c’est plus de 500 nouveaux services ou nouvelles fonctionnalités pour services existants. Si cela se confirmait, cela signifierait que la certification serait totalement déconnectée de la réalité

Heureusement, en préparant ma certification, j’ai découvert plusieurs indices qui m’ont amené à penser que ce n’était pas les cas :

Par contre, cela ne veut pas dire qu’il faille faire l’impasse sur l’ancien Azure (ASM). Même si on ne déploie plus beaucoup de Cloud Services, faut au moins comprendre de quoi on parle. Ce n’est pas encore demain la veille qu’ASM rendra son dernier souffle. Avec les souscriptions Azure CSP, on va clairement dans cette direction.

Comment se préparer

On ne va pas faire de mystères. Il existe bien des outils pour se préparer à la certification. C’est effectivement un accélérateur mais je n’ai jamais été un grand fan. Ce n’est pas par ce qu’on est certifié Azure qu’on sait gérer une infrastructure en production en « Zero Downtime » ni même de concevoir une infrastructure hautement disponible. ça implique de l’expérience et donc de la pratique. Mon premier conseil sera donc de pratiquer pour se préparer à la certification.

Le second, sera de passer par la case formation. Là on dispose de plusieurs options :

  • La formation classique
  • L’auto-formation
  • Microsoft MOOCs

La formation « Classique » que je défends chez ABC-Systèmes. Nous pensons que cette approche est la plus enrichissante car elle permet l’échange entre les stagiaires et surtout la confrontation avec le monde réel. Autre avantage de la formation, pendant sa durée, les stagiaires sont uniquement focalisés sur un seul sujet. Les cours Azure que je délivre sont basés sur les cours Officiel Microsoft que j’enrichi avec mon expérience terrain. Si votre objectif n’est pas nécessairement la certification, c’est la méthode la plus appropriée. Fin de l’autopromotion.

La seconde option en auto-formation implique de la discipline et du temps. Une initiative intéressante en ce moment de la part de Microsoft est ce bundle. Celui-ci propose :

  • L’inscription à l’examen 70-533
  • L’accès à un outil en ligne pour se préparer à la certification 70-533 pendant 30 jours

Dans cette seconde approche, il manque un peu de contenu pour l’auto-formation. Pas de problème, les équipes de DX France ont passé un peu de temps pour concocter plein de contenu dans la Microsoft Virtual Academy :

La dernière option et la plus récente, ce sont les Microsoft MOOCs. L’initiative est intéressante mais implique beaucoup plus de travail. Déjà il n’y a pas de cours MOOC pour préparer l’examen 70-533. Il faudra donc couvrir plusieurs MOOCs pour couvrir tous les sujets de l’examen. Si vous êtes allergiques à l’anglais, passez votre chemin.


Quelques sujets à réviser

C’est posé en vrac, je ne donne pas les questions précise de l’examen mais plutôt le thème général :

  • Sachez identifier un workload supporté / non supporté dans Azure. Et oui, DirectAccess n’est pas supporté dans Azure
  • Sachez comment ajouter un disque de données en PowerShell, que ce soit en ASM ou en ARM. Si vous connaissez l’un, l’autre ressemble beaucoup, c’est de la logique
  • Sachez clairement comment uploader un VHD dans Azure et comment le rendre utilisable comme OS utilisable pour créer une machine virtuelle
  • Un Cloud Service, c’est deux fichiers. Sachez clairement à quoi sert chaque fichier même si vous n’allez plus en déployer
  • Sachez mettre en place un CDN. Pour comprendre faites-le au moins une fois
  • Bien connaître les fonctionnalités offertes par chaque édition de App-Services/ Azure SQL
  • Sachez comment activer le chiffrement de disque avec le Key Vault : Découverte d’Azure Disk Encryption (Preview)
  • Sachez à quoi cela sert de locker des ressources dans Azure : A quoi ça sert de locker ses ressources dans Azure?
  • Sachez comment empêcher le déploiement des certains services / SKU de services : Découverte d’Azure Resource Policy
  • Sachez comment mettre en œuvre Azure Site Recovery avec Hyper-V : Azure Site Recovery avec Hyper-V 1/3


Quelques tips pour le jour de l’examen

  • Anglais et rien qu’anglais. Le peu de fois que j’ai passé un examen Microsoft en Français j’ai clairement eu l’impression que la traduction était faite par les mêmes équipes qui ont fait la localisation de SCVMM. 120 minutes c’est le temps accordé pour répondre aux questions. En choisissant anglais, ce temps passe à 150 minutes vu que ce n’est pas notre langue natale. De plus, si vous avez utilisé les tests d’entrainement, ils sont en anglais, …
  • L’examen est organisé en section, passer à la section suivante implique qu’on ne peut plus revenir en arrière donc penser bien à clore chaque section individuellement.
  • Un doute, on marque la question. En marquant la question, on a une chance de pouvoir revenir dessus. Qui sait, dans les questions suivantes une autre va pouvoir nous orienter. Un des grands jeux de ce qui écrivent ces questions, c’est de poser deux voire trois fois la question, y a juste un détail qui change, à vous de l’identifier.
  • Quand on sait pas on procède par élimination pour ne conserver que les choix les plus logiques.
  • Utilisez la tablette. Certains sont capables de se faire une représentation mentale, d’autres comme moi doivent dessiner. Moi je dessine.
  • Question Hardcore : On reste calme. L’examen est adaptatif. De temps en temps, une question « hardcore » est incluse histoire de voir comment on se comporte. L’idée est de voir comment on réagit pour savoir si on est au-dessus du niveau général ou en dessous.


Voilà pour mon Feedback sur cet examen. Next move : 70-534 : Architecting Microsoft Azure Solutions.


BenoîtS – Simple and secure by design but Business compliant (with disruptive flag enabled)

Mise en oeuvre de Let’sEncrypt dans le PaaS Azure (2/3)

Après la mise en place des prérequis, passons à la configuration de Let’s Encrypt. Techniquement c’est une extension de la Web Application. C’est un plug-in que l’on va venir positionner.



Une fois l’extension ajoutée, on la retrouve dans la liste.



En cliquant sur la Web Extension, on peut avoir quelques informations et surtout l’accès au bouton « Browse ».



On obtient ainsi l’accès à la page de configuration de la Web Extension. C’est maintenant que cela commence à devenir intéressant.



Pour le premier paramètre, c’est simple, c’est notre tenant Azure Active Directory. La Web Extension va avoir besoin d’importer le certificat nouvellement généré dans la configuration de la Web Application. Le problème, c’est qu’une Web Extension n’a pas d’identité au sens propre. On va donc avoir besoin de lui en créer une. On y viendra. Pour l’instant, on a juste besoin du Tenant Azure Active Directory.



Pour le SubscriptionID, on va le retrouver simplement avec la commande Get-AzureRmContext :



C’est maintenant que cela se complique. Première chose dont on va avoir besoin, c’est le nom sous lequel la Web Application va se présenter à l’authentification devant le tenant Azure Active Directory. Avec un peu de PowerShell, on va extraire l’information :

$WebApp = Get-AzureRmWebApp -ResourceGroupName DemoLetsEncrypt




Ce qui va nous intéresser plus précisément c’est le hostname sous lequel le site web va être référencé comme application dans Azure Active Directory.


$Uri = $WebApp.HostNames | Select -Last 1




$Uri = « https://$($uri)« 

$AppName = « DemoLetsEncrypt »

$Password = ‘{P@ssw0rd123}’

$NewApp = New-AzureRmADApplication -DisplayName $AppName -HomePage $uri -IdentifierUris $uri -Password $password




Il ne nous reste plus qu’à créer un nouveau Service Principal (un peu compte un compte de service du vieux temps du On-Premises) :

New-AzureRmADServicePrincipal -ApplicationId $Newapp.ApplicationId



Puis de lui affecter des permissions sur notre application nouvellement créée :

New-AzureRmRoleAssignment -RoleDefinitionName « Contributor » -ServicePrincipalName $NewApp.ApplicationId



Dernière chose dont nous allons avoir besoin, c’est l’ApplicationID associé à notre nouvelle application :




Pour finaliser la configuration, nous avons juste besoin d’une permission pour l’application sur la Web Application



Si vous creusez un peu vous découvrirez les permissions minimales nécessaires pour cela. Prochaine étape, configurer les permissions sur le groupe de ressources ou plus précisément sur la Web Application.



Reste plus qu’à cliquer sur le bouton « Next ». Si les permissions sont les bonnes alors cela devrait fonctionner. L’extension est bien configurée mais pour l’instant le certificat n’est pas encore généré.



Pour générer notre certificat, il manque quelques informations. Cliquons donc sur le bouton « Next ». La première, ce sera de sélectionner le hostname pour lequel nous allons générer le certificat. Au moment de la rédaction de cet article, Let’s Encrypt ne propose pas encore la prise en charge des certificats Wildcard (bientôt).



Pour délivrer un certificat, nous avons besoin de fournir une adresse de messagerie et cliquer sur le bouton « Request and Install certificate ».


Remarque : Let’sEncrypt impose une limite, celle de ne de délivrer que cinq certificats par semaine pour un même domaine DNS. Il faudra utiliser le staging slots pour contourner cette limitation.


C’est l’heure du tour de magie. Si tout se déroule sans accros (un bon plan), alors nous devrions avoir le résultat ci-dessous :



Remarque : Faites attention à la date d’expiration du certificat. Oui, les certificats délivrés par l’autorité Let’s Encrypt ont une durée de vie de trois mois. Nous allons y revenir.


Nous pouvons revenir sur l’interface du portail Azure et constater la présence du certificat dans la Web Application



Ne nous reste plus qu’à mettre en place le binding



Le binding est maintenant en place



Et effectivement, le site web répond bien en HTTPS sur le Custom Domain configuré.



Au passage, le truc est propre puisque voilà le résultat au test SSL de Qualyst :



Maintenant, plus d’excuse pour les développeurs à continuer d’utiliser des certificats auto-signés. Il ne nous reste plus qu’à gérer les points de détails.


BenoîtS – Simple and secure by design but Business compliant (with disruptive flag enabled)

Speaker lors de l’ExaTech Day de Lyon le 1er juin prochain

Tout comme certains de mes collègues d’Exakis, je vais avoir le plaisir de co-animer une session avec mon collègue Alexandre GIRAUD sur nos sujets favoris, à savoir TMG, UAG et mon favoris : DirectAccess.


Si l’ouverture de votre SI vers l’extérieur et la mobilité de vos utilisateurs sont des sujets qui vous concernent, venez assister à notre session “Dépérimètrisation des réseaux, le nouveau challenge de la mobilité”. Peu de théorie, des cas concrets.


ExaTech Day Lyon

Benoîts – Simple and Secure by Design (J’insiste sur le Secure)