none
Emulateur Azure - Tests de haute disponibilité RRS feed

  • Discussion générale

  • Une problématique courante sur le Cloud est la haute disponibilité ou High Availability en anglais.

    Je voulais vérifier si l'émulateur Azure pouvait gérer le cas où une des instances de mon Web Role tombait. Le test que j'ai mis en place est simple. J'ai créé un site ASP.NET MVC avec une page affichant l'instance courante sur laquelle le site devrait démarrer. Pour cela, j'affiche la propriété "RoleEnvironment.CurrentRoleInstance.Id" (http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.serviceruntime.roleenvironment.currentroleinstance.aspx)

    Je démarre mon site en local en utilisant IIS Express avec 2 instances du Web Role. Ces 2 instances sont bien localisées au niveau de 2 processus "WAHostBootstrapper.exe" dans le gestionnaire de tâches. A l'aide de l'utilitaire "Procexp.exe" de SysInternals, j'identifie le processus qui correspond au "CurrentRoleInstance" affiché sur ma page d'infos (dans l'onglet "Job") : il s'agit de l'instance 0. Je tue donc ce processus.

    J'observe le résultat dans la console de l'émulateur. L'instance 0 est bien morte. Le site par contre ne bascule pas sur ma l'instance 1 tout de suite. C'est au bout de quelques minutes que j'arrive à naviguer de nouveau. Oh joie, l'émulateur gère le load-balancing mais il y a un hic !

    Ma page d'infos de test affiche toujours le CurrentRoleInstance.Id de ma précédente instance soit 0 et non 1. Dans le debugger de Visual Studio, pas de changement, pour lui, je devrais toujours pointer sur l'instance 0 dont le processus a pourtant été tué. Si je mets un point d'arrêt dans le code, la console de l'émulateur affiche bien le statut "Unresponsive" sur l'instance 1. L'instance 0 est à "Unknown". Et rien ne s'y passe à part une boucle "Role state Destroyed et Role state Unknown".

    Donc ma question est : doit-on vraiment faire confiance à la propriété "RoleEnvironment.CurrentRoleInstance.Id" pour nous dire que le code s'exécute sur l'instance de rôle courante ?

    Si non, comment identifier l'instance courante autrement en intégration sur Azure ?


    • Modifié CHLEQ jeudi 23 janvier 2014 14:09
    • Type modifié Aurel Bera mardi 4 février 2014 10:06 disc
    jeudi 23 janvier 2014 14:08

Toutes les réponses