Résoudre les problèmes liés aux instances de rôle Azure Cloud Services (support étendu) qui ne parviennent pas à démarrer
Cet article explique comment résoudre les échecs de démarrage dans les instances de rôle Azure Services cloud (support étendu).
Liste de contrôle pour la résolution des problèmes
Choisissez parmi les options suivantes pour diagnostiquer les problèmes qui se produisent dans les instances de rôle.
Option 1 : Désactiver les erreurs personnalisées
Pour afficher les informations d’erreur complètes, ouvrez le fichier Web.config pour le rôle web, définissez le mode Off
d’erreur personnalisé sur , puis redéployez le service :
Dans Visual Studio, ouvrez la solution.
Dans Explorateur de solutions, ouvrez le fichier Web.config.
Dans la
system.web
section, ajoutez le code XML suivant :<customErrors mode="Off" />
Enregistrez le fichier.
Recréez le package et redéployez le service.
Une fois le service redéployé, les messages d’erreur que vous pouvez recevoir sur le service incluent les noms des assemblys manquants ou des DLL.
Option 2 : Utiliser PowerShell pour afficher l’état de l’instance de rôle
Pour obtenir des informations sur l’état d’exécution de l’instance de rôle, exécutez l’applet de commande Get-AzCloudServiceRoleInstanceView :
$roleInstanceView = @{
CloudServiceName = "<cloud-service-name>"
ResourceGroupName = "<resource-group-name>"
RoleInstanceName = "WebRole1_IN_0"
}
Get-AzCloudServiceRoleInstanceView @roleInstanceView
L’état de l’instance de rôle est répertorié dans la première colonne, comme indiqué dans l’exemple de sortie suivant :
Statuses PlatformFaultDomain PlatformUpdateDomain
-------- ------------------- --------------------
{RoleStateStarting} 0 0
Option 3 : Utiliser le Portail Azure pour afficher l’état de l’instance de rôle
Pour afficher les informations d’état sur une instance de rôle dans le Portail Azure, procédez comme suit :
Dans le Portail Azure, recherchez et sélectionnez Services cloud (support étendu).
Dans la liste des services cloud, sélectionnez le nom de votre service cloud.
Dans le volet de menu, recherchez les paramètres, puis sélectionnez Rôles et instances.
Sélectionnez le nom de l’instance de rôle.
Dans le volet d’instance de rôle, notez l’état de l’instance de rôle dans le champ État .
Option 4 : Utiliser le Bureau à distance pour afficher les informations d’erreur
Pour accéder au rôle et afficher les informations d’erreur complètes, utilisez le protocole RDP (Remote Desktop Protocol) en procédant comme suit :
Ajoutez l’extension Bureau à distance à Azure Cloud Services (support étendu).
Dans le Portail Azure, lorsque l’instance de service cloud affiche un état Prêt, utilisez le Bureau à distance pour vous connecter au service cloud. Pour plus d’informations, consultez Se connecter à des instances de rôle avec Bureau à distance activé.
Connectez-vous à la machine virtuelle à l’aide des informations d’identification que vous avez utilisées pour configurer le Bureau à distance.
Ouvrez une fenêtre Invite de commandes.
Exécutez la commande ipconfig . Copiez la valeur retournée pour l’adresse IPv4.
Ouvrez un navigateur web.
Dans la barre d’adresses, collez l’adresse IPv4, puis ajoutez une barre oblique et le nom du fichier par défaut de l’application web. Par exemple,
http://<ipv4-address>/default.aspx
.
Si vous accédez au site web maintenant, vous verrez des messages d’erreur contenant plus d’informations. Voici un exemple :
Erreur de serveur dans l’application « / ».
Impossible de charger le fichier ou l’assembly « Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string> » ou l’une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.
Description : une exception non gérée s’est produite pendant l’exécution de la requête web actuelle. Veuillez consulter l’arborescence des appels de procédure pour plus d’informations sur l’erreur et sa source dans le code.
Détails de l’exception : System.IO.FileNotFoundException
Option 5 : Utiliser l’émulateur de calcul
Vous pouvez utiliser l’émulateur de calcul Azure pour diagnostiquer et résoudre les problèmes liés aux dépendances manquantes et aux erreurs Web.config . Pour obtenir de meilleurs résultats lorsque vous utilisez cette méthode pour diagnostiquer les problèmes, utilisez un ordinateur ou une machine virtuelle disposant d’une installation propre de Windows.
Pour diagnostiquer les problèmes à l’aide de l’émulateur de calcul Azure :
Installez le kit SDK Azure.
Sur l’ordinateur de développement, générez le projet de service cloud.
Dans l’Explorateur de fichiers, dans le projet de service cloud, accédez au dossier bin\debug.
Copiez le dossier .csx et le fichier .cscfg sur l’ordinateur que vous utilisez pour déboguer les problèmes.
Sur l’ordinateur propre, ouvrez une fenêtre d’invite de commandes du Kit de développement logiciel (SDK) Azure.
À l’invite de commandes, exécutez la commande suivante
csrun
:csrun.exe /devstore:start
Exécutez la commande suivante :
run csrun <path-to-.csx-folder> <path-to-.cscfg-file> /launchBrowser
Au démarrage du rôle, le navigateur web affiche des informations d’erreur détaillées.
Si vous avez besoin de diagnostics supplémentaires, vous pouvez utiliser les outils de résolution des problèmes Windows standard.
Option 6 : Utiliser IntelliTrace
Note
Vous ne pouvez pas utiliser IntelliTrace dans Visual Studio 2022. IntelliTrace est toujours disponible si vous utilisez Visual Studio 2019, 2017 ou 2015.
Pour les rôles de travail et les rôles Web qui utilisent .NET Framework 4, vous pouvez utiliser IntelliTrace. IntelliTrace est disponible dans Visual Studio Enterprise.
Pour déployer votre service cloud pendant qu’IntelliTrace est activé :
Vérifiez qu’Azure SDK 1.3 ou une version ultérieure est installée.
Dans Visual Studio, déployez la solution. Quand vous configurez le déploiement, cochez la case Activer IntelliTrace pour les rôles .NET 4.
Une fois l’instance de rôle démarrée, ouvrez l’Explorateur de serveurs.
Développez le nœud Azure\Services cloud.
Pour répertorier les instances de rôle, développez le déploiement. Ensuite, cliquez avec le bouton droit sur une instance de rôle.
Sélectionnez Afficher les fichiers journaux IntelliTrace.
Dans IntelliTrace Summary, accédez à Données d’exception et développez ce nœud.
Dans la liste des exceptions, recherchez une ligne qui contient une valeur de colonne Type de System.IO.FileNotFoundException. La valeur de colonne message correspondante doit ressembler au texte suivant :
Impossible de charger le fichier ou l’assembly « Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string> » ou l’une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.
Cause 1 : Échec de l’opération de service cloud en raison de RoleInstanceStartupTimeoutError
Une ou plusieurs instances de rôle dans Azure Services cloud (support étendu) peuvent être lentes à démarrer. Ou bien, votre instance de rôle peut être recyclée ou bloquée dans un état occupé et ne démarre pas comme prévu. Dans ce cas, le message d’erreur de l’application RoleInstanceStartupTimeoutError
de rôle s’affiche.
L'application de rôle contient deux parties susceptibles de provoquer un recyclage de rôle :
- Tâches de démarrage
- Code de rôle (implémentation de RoleEntryPoint)
Si le rôle s’arrête, l’agent PaaS (Platform as a Service) redémarre le rôle.
Pour déterminer si le problème est dû à une tâche de démarrage, procédez comme suit :
Essayez d’utiliser le Bureau à distance pour vous connecter à l’instance de rôle problématique.
Après vous être connecté à l’instance de rôle, sélectionnez Démarrer, puis recherchez et sélectionnez Gestionnaire des tâches.
Pour afficher la liste des processus, sélectionnez l’onglet Détails dans le Gestionnaire des tâches.
Vérifiez s’il existe des processus pour WaIISHost.exe (pour un WebRole) ou WaWorkerHost.exe (pour un WorkerRole). Si ces deux processus sont manquants, une tâche de démarrage échoue probablement.
Avez-vous pu vérifier que le problème est dû à une tâche de démarrage ? Si c’est le cas, vous pouvez appliquer la solution suivante. Toutefois, la solution n’est disponible que si la tâche de démarrage est une tâche de premier plan ou simple. La solution ne s’applique pas aux tâches de démarrage en arrière-plan. Elles sont exécutées de façon asynchrone, en parallèle du démarrage du rôle.
Solution : Déboguer le script de tâche de démarrage
Pour résoudre les problèmes d’échec d’une tâche de démarrage, déboguez le script qui s’exécute pendant le démarrage de la machine virtuelle. Ce script de tâche de démarrage est le fichier Startup.cmd. Pour vous aider à examiner les problèmes dans le script, vous pouvez choisir parmi les options suivantes :
Affichez le fichier journal C:\Resources\WaHostBootstrapper.log. Ce fichier est le journal du processus de WaHostBootstrapper.exe . Ce processus est responsable des tâches de démarrage. Il est décrit dans le flux de travail de l’architecture de machine virtuelle Classique Windows Azure. Ensuite, recherchez une erreur ou une exception qui implique l’exécution de Startup.cmd. Vérifiez en particulier si le code de sortie est 0. Si ce n’est pas le cas, la tâche de démarrage s’est terminée mais comporte des erreurs. S’il n’existe pas de journaux liés au code de sortie du script, la tâche de démarrage est toujours en cours d’exécution.
Si le script de tâche de démarrage ne peut pas être exécuté librement dans l’environnement de production en raison de l’impact métier attendu, personnalisez le mécanisme de journalisation sur la ligne de commande. Par exemple, vous pouvez rediriger la sortie des informations de clé dans une commande de script vers un fichier. Pour ce faire, vous devez ajouter
> "%TEMP%\StartupLog.txt"
à la fin de la commande.Sur la ligne de commande, exécutez manuellement le script de tâche de démarrage. Les emplacements de ce script pour les rôles WebRole ou WorkerRole sont indiqués dans le tableau suivant.
Rôle Emplacement du script WebRole E :\approot\bin\Startup.cmd WorkerRole E :\approot\Startup.cmd
Cause 2 : les DLL ou les assemblys sont manquants
Les instances de rôle et les instances de rôle qui circulent entre les états peuvent être provoquées par des DLL ou des assemblys manquants.
Voici quelques symptômes liés à l’absence de bibliothèques DLL ou d’assemblys :
Votre instance de rôle passe par les états Initialisation, Occupé et Arrêt .
Votre instance de rôle a été déplacée vers l’état Prêt , mais la page n’est pas visible dans votre application web.
Si un site web est déployé dans un rôle web et qu’il manque une DLL, il peut afficher le message d’erreur d’exécution du serveur suivant.
Erreur de serveur dans l’application « / ».
Erreur d’exécution
Description : Une erreur d’application s’est produite sur le serveur. Les paramètres d’erreur personnalisés actuels de cette application empêchent l’affichage à distance de l’erreur de l’application (pour des raisons de sécurité). Il peut toutefois être consulté par des navigateurs fonctionnant sur la machine serveur locale.
Détails : Pour activer les détails de ce message d’erreur spécifique à afficher sur l’ordinateur distant, créez une
<customErrors>
balise avec un fichier de configuration « web.config » situé dans le répertoire racine de l’application web actuelle. Cette<customErrors>
balise doit ensuite avoir son attribut «mode
» défini sur «Off
».
Solution : Résoudre les DLL et les assemblys manquants
Pour résoudre les erreurs de DLL et d’assemblys manquants
Dans Visual Studio, ouvrez la solution.
Dans l’Explorateur de solutions, ouvrez le dossier Références.
Sélectionnez l’assembly identifié dans le message d’erreur.
Dans Propriétés, affectez la valeur True à la propriété Copie locale.
Redéployez le service cloud.
Après avoir vérifié que les erreurs n’apparaissent plus, redéployez le service. Quand vous configurez le déploiement, ne cochez pas la case Activer IntelliTrace pour les rôles .NET 4.
Prochaines étapes
- Découvrez comment résoudre les problèmes de rôle de service cloud à l’aide des données de diagnostic informatique Azure PaaS.
Plus d’informations
Pour plus d’informations sur la configuration initiale, l’exécution et les exemples de tâches de démarrage dans le service cloud classique, consultez les articles suivants :
- Comment configurer et exécuter des tâches de démarrage pour un service cloud Azure (classique)
- Tâches de démarrage courantes du service cloud (classique)
Contactez-nous pour obtenir de l’aide
Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.