Configurer des environnements intermédiaires dans Azure App ServiceSet up staging environments in Azure App Service

Lorsque vous déployez votre application web, votre application web Linux, votre backend mobile ou votre API dans Azure App Service, vous pouvez utiliser un autre emplacement de déploiement que l’emplacement de production par défaut lorsque vous exécutez le niveau de plan Standard, Premium ou Isolé d’App Service.When you deploy your web app, web app on Linux, mobile back end, or API app to Azure App Service, you can use a separate deployment slot instead of the default production slot when you're running in the Standard, Premium, or Isolated App Service plan tier. Les emplacements de déploiement sont des applications en production pourvues de leur propre nom d’hôte.Deployment slots are live apps with their own host names. Les éléments de contenu et de configuration des applications peuvent être échangés entre deux emplacements de déploiement, y compris l’emplacement de production.App content and configurations elements can be swapped between two deployment slots, including the production slot.

Le déploiement de votre application sur un emplacement hors production présente les avantages suivants :Deploying your application to a non-production slot has the following benefits:

  • Vous pouvez valider les modifications d’une application dans un emplacement de déploiement intermédiaire avant de l’échanger avec l’emplacement de production.You can validate app changes in a staging deployment slot before swapping it with the production slot.
  • Déployer d’abord une application dans un emplacement et la basculer ensuite en production permet de vous assurer que toutes les instances de l’emplacement sont initialisées avant d’être basculées en production.Deploying an app to a slot first and swapping it into production makes sure that all instances of the slot are warmed up before being swapped into production. Cela permet d’éliminer les temps d’arrêt lors du déploiement de l’application.This eliminates downtime when you deploy your app. La redirection du trafic est transparente et aucune requête n’est abandonnée du fait d’opérations de permutation.The traffic redirection is seamless, and no requests are dropped because of swap operations. Vous pouvez automatiser l’intégralité de ce workflow en configurant l’échange automatique lorsqu’aucune validation n’est nécessaire avant l’échange.You can automate this entire workflow by configuring auto swap when pre-swap validation isn't needed.
  • Après basculement, la précédente application de production se retrouve dans l’emplacement de l’application précédemment intermédiaire.After a swap, the slot with previously staged app now has the previous production app. Si les modifications permutées en production ne vous conviennent pas, vous pouvez effectuer la même permutation afin de récupérer immédiatement le contenu du précédent site qui vous plaisait.If the changes swapped into the production slot aren't as you expect, you can perform the same swap immediately to get your "last known good site" back.

Chaque niveau de plan App Service prend en charge un nombre différent d’emplacements de déploiement.Each App Service plan tier supports a different number of deployment slots. L’utilisation de ces emplacements de déploiement n’entraîne aucun coût supplémentaire.There's no additional charge for using deployment slots. Pour connaître le nombre d’emplacements pris en charge par le plan de votre application, consultez Limites App Service.To find out the number of slots your app's tier supports, see App Service limits.

Pour mettre votre application à l’échelle vers un autre niveau, vérifiez que le niveau cible peut prendre en charge le nombre d’emplacements déjà utilisés par votre application.To scale your app to a different tier, make sure that the target tier supports the number of slots your app already uses. Par exemple, si votre application comprend plus de cinq emplacements, vous ne pouvez pas effectuer de scale-down vers le niveau Standard, car le niveau Standard ne prend en charge que cinq emplacements de déploiement.For example, if your app has more than five slots, you can't scale it down to the Standard tier, because the Standard tier supports only five deployment slots.

Ajouter un emplacementAdd a slot

Pour que vous puissiez activer plusieurs emplacements de déploiement, l’application doit s’exécuter au niveau Standard, Premium ou Isolé.The app must be running in the Standard, Premium, or Isolated tier in order for you to enable multiple deployment slots.

  1. Dans le portail Azure, accédez à la page de ressources de votre application.In the Azure portal, open your app's resource page.

  2. Dans le volet gauche, sélectionnez Emplacements de déploiement > Ajouter un emplacement.In the left pane, select Deployment slots > Add Slot.

    Add a new deployment slot

    Notes

    Si l’application ne s’exécute pas au niveau Standard, Premium ou Isolé, vous recevez un message précisant les niveaux pris en charge pour la publication intermédiaire.If the app isn't already in the Standard, Premium, or Isolated tier, you receive a message that indicates the supported tiers for enabling staged publishing. À ce stade, vous pouvez sélectionner Mettre à niveau et accéder à l’onglet Mettre à l’échelle de votre application avant de continuer.At this point, you have the option to select Upgrade and go to the Scale tab of your app before continuing.

  3. Dans la boîte de dialogue Ajouter un emplacement, nommez l’emplacement, puis indiquez si vous souhaitez cloner une configuration d’application à partir d’un autre emplacement de déploiement.In the Add a slot dialog box, give the slot a name, and select whether to clone an app configuration from another deployment slot. Sélectionnez Ajouter pour continuer.Select Add to continue.

    Source de configuration

    Vous pouvez cloner une configuration à partir d’un emplacement existant.You can clone a configuration from any existing slot. Parmi les paramètres pouvant être clonés figurent des paramètres de l’application, des chaînes de connexion, des versions du framework de langage, des sockets web, la version HTTP et le nombre de bits de la plateforme.Settings that can be cloned include app settings, connection strings, language framework versions, web sockets, HTTP version, and platform bitness.

  4. Une fois l’emplacement ajouté, sélectionnez Fermer pour fermer la boîte de dialogue.After the slot is added, select Close to close the dialog box. Le nouvel emplacement est désormais affiché dans la page Emplacements de déploiement.The new slot is now shown on the Deployment slots page. Par défaut, l’option % de trafic est définie sur 0 pour le nouvel emplacement, avec tout le trafic client acheminé vers l’emplacement de production.By default, Traffic % is set to 0 for the new slot, with all customer traffic routed to the production slot.

  5. Sélectionnez le nouvel emplacement de déploiement pour ouvrir la page des ressources de cet emplacement.Select the new deployment slot to open that slot's resource page.

    Titre de l’emplacement de déploiement

    L’emplacement intermédiaire dispose d’une page de gestion, comme n’importe quelle application App Service.The staging slot has a management page just like any other App Service app. Vous pouvez modifier la configuration de l’emplacement.You can change the slot's configuration. Le nom de l’emplacement est indiqué en haut de la page, pour vous rappeler que c’est l’emplacement de déploiement qui est affiché.The name of the slot is shown at the top of the page to remind you that you're viewing the deployment slot.

  6. Sélectionnez l’URL de l’application dans la page des ressources de l’emplacement.Select the app URL on the slot's resource page. L’emplacement de déploiement est une application en production et il a son propre nom d’hôte.The deployment slot has its own host name and is also a live app. Pour limiter l’accès public à l’emplacement de déploiement, consultez Restrictions d’adresse IP avec Azure App Service.To limit public access to the deployment slot, see Azure App Service IP restrictions.

Le nouvel emplacement de déploiement n’a aucun contenu, même si vous clonez les paramètres à partir d’un autre emplacement.The new deployment slot has no content, even if you clone the settings from a different slot. Par exemple, vous pouvez publier sur cet emplacement avec Git.For example, you can publish to this slot with Git. Vous pouvez effectuer un déploiement sur l’emplacement à partir d’une autre branche du dépôt, ou d’un dépôt différent.You can deploy to the slot from a different repository branch or a different repository.

Que se passe-t-il pendant un échange ?What happens during a swap

Étapes qui composent une opération d’échangeSwap operation steps

Lorsque vous échangez deux emplacements (en général, vous passez d’un emplacement de préproduction à un emplacement de production), App Service effectue ce qui suit pour éviter que l’emplacement cible ne subisse un temps d’arrêt :When you swap two slots (usually from a staging slot into the production slot), App Service does the following to ensure that the target slot doesn't experience downtime:

  1. Applique les paramètres suivants de l’emplacement cible (par exemple, l’emplacement de production) à toutes les instances de l’emplacement source :Apply the following settings from the target slot (for example, the production slot) to all instances of the source slot:

    Quel que soit le cas, cela déclenche le redémarrage de toutes les instances dans l’emplacement source.Any of these cases trigger all instances in the source slot to restart. Au cours d’un échange avec aperçu, cela marque la fin de la première phase.During swap with preview, this marks the end of the first phase. L’opération d’échange est suspendue, ce qui vous permet de vérifier que l’emplacement source fonctionne correctement avec les paramètres de l’emplacement cible.The swap operation is paused, and you can validate that the source slot works correctly with the target slot's settings.

  2. Attendez que chaque instance de l’emplacement source ait terminé son redémarrage.Wait for every instance in the source slot to complete its restart. Si l’une des instances ne parvient pas à redémarrer, l’opération d’échange rétablit toutes les modifications apportées à l’emplacement source, puis cesse d’être exécutée.If any instance fails to restart, the swap operation reverts all changes to the source slot and stops the operation.

  3. Si le cache local est activé, déclenchez son initialisation en envoyant une requête HTTP à la racine de l’application (« / »), sur chaque instance de l’emplacement source.If local cache is enabled, trigger local cache initialization by making an HTTP request to the application root ("/") on each instance of the source slot. Attendez que chaque instance retourne une réponse HTTP.Wait until each instance returns any HTTP response. L’initialisation du cache local provoque un autre redémarrage sur chaque instance.Local cache initialization causes another restart on each instance.

  4. Si l’échange automatique est activé avec l’initialisation personnalisée, déclenchez l’initialisation de l’application en envoyant une requête HTTP à la racine de l’application (« / ») sur chaque instance de l’emplacement source.If auto swap is enabled with custom warm-up, trigger Application Initiation by making an HTTP request to the application root ("/") on each instance of the source slot.

    Si applicationInitialization n’est pas spécifié, déclenchez une requête HTTP à la racine de l’application de l’emplacement source sur chaque instance.If applicationInitialization isn't specified, trigger an HTTP request to the application root of the source slot on each instance.

    Si une instance retourne une réponse HTTP, elle est considérée comme initialisée.If an instance returns any HTTP response, it's considered to be warmed up.

  5. Si toutes les instances de l’emplacement source sont correctement initialisées, échangez les deux emplacements en échangeant leurs règles de routage.If all instances on the source slot are warmed up successfully, swap the two slots by switching the routing rules for the two slots. Après cette étape, l’emplacement cible (par exemple, l’emplacement de production) dispose de l’application déjà initialisée dans l’emplacement source.After this step, the target slot (for example, the production slot) has the app that's previously warmed up in the source slot.

  6. Maintenant que l’emplacement source dispose de l’application de l’emplacement cible avant échange, effectuez la même opération en appliquant tous les paramètres et en redémarrant les instances.Now that the source slot has the pre-swap app previously in the target slot, perform the same operation by applying all settings and restarting the instances.

Lors d’une opération d’échange, l’intégralité du processus d’initialisation des applications échangées se déroule dans l’emplacement source.At any point of the swap operation, all work of initializing the swapped apps happens on the source slot. L’emplacement cible reste en ligne pendant la préparation et l’initialisation de l’emplacement source, que l’échange ait réussi ou échoué.The target slot remains online while the source slot is being prepared and warmed up, regardless of where the swap succeeds or fails. Pour échanger un emplacement de préproduction avec un emplacement de production, vérifiez que l’emplacement de production est toujours l’emplacement cible.To swap a staging slot with the production slot, make sure that the production slot is always the target slot. De cette façon, l’opération d’échange n’affectera pas votre application de production.This way, the swap operation doesn't affect your production app.

Quels sont les paramètres échangés ?Which settings are swapped?

Lorsque vous clonez la configuration depuis un autre emplacement de déploiement, celle-ci est modifiable.When you clone configuration from another deployment slot, the cloned configuration is editable. Au cours d’un échange, certains éléments de configuration suivent le contenu (éléments non propres à un emplacement) tandis que d’autres restent dans le même emplacement après l’échange (éléments propres à un emplacement).Some configuration elements follow the content across a swap (not slot specific), whereas other configuration elements stay in the same slot after a swap (slot specific). Les listes suivantes représentent les paramètres qui évoluent lorsque vous échangez les emplacements.The following lists show the settings that change when you swap slots.

Paramètres échangés:Settings that are swapped:

  • Paramètres généraux, par exemple versions du framework, 32/64 bits, sockets webGeneral settings, such as framework version, 32/64-bit, web sockets
  • Paramètres d’application (peuvent être configurés pour respecter un emplacement)App settings (can be configured to stick to a slot)
  • Chaînes de connexion (peuvent être configurées pour respecter un emplacement)Connection strings (can be configured to stick to a slot)
  • Mappages de gestionnairesHandler mappings
  • Paramètres de surveillance et de diagnosticsMonitoring and diagnostic settings
  • Certificats publicsPublic certificates
  • Contenu WebJobsWebJobs content
  • Connexions hybrides*Hybrid connections *
  • Intégration du réseau virtuel*Virtual network integration *
  • Points de terminaison de service*Service endpoints *
  • Azure Content Delivery Network*Azure Content Delivery Network *

Prochainement, les fonctionnalités marquées d’un astérisque (*) ne pourront plus être échangées.Features marked with an asterisk (*) are planned to be made sticky to the slot.

Paramètres non échangés :Settings that aren't swapped:

  • Points de terminaison de publicationPublishing endpoints
  • Noms de domaine personnalisésCustom domain names
  • Certificats privés et liaisons SSLPrivate certificates and SSL bindings
  • Paramètres de mise à l'échelleScale settings
  • Planificateurs WebJobsWebJobs schedulers
  • Restrictions d’adresse IPIP restrictions
  • Always OnAlways On
  • Paramètres de protocole (HTTPS, version TLS, certificats clients)Protocol settings (HTTPS, TLS version, client certificates)
  • Paramètres des journaux de diagnosticDiagnostic log settings
  • Partage des ressources cross-origin (CORS)Cross-origin resource sharing (CORS)

Si vous souhaitez configurer un paramètre d’application ou une chaîne de connexion pour qu’ils restent dans leur emplacement d’origine (et ne puissent donc pas être échangés), accédez à la page Configuration de l’emplacement en question.To configure an app setting or connection string to stick to a specific slot (not swapped), go to the Configuration page for that slot. Ajoutez ou modifiez un paramètre, puis sélectionnez Paramètre d’emplacement de déploiement.Add or edit a setting, and then select deployment slot setting. Le fait de cocher cette case indique à App Service que le paramètre n’est pas échangeable.Selecting this check box tells App Service that the setting is not swappable.

Paramètre de l’emplacement

Permuter deux emplacementsSwap two slots

Vous pouvez échanger des emplacements de déploiement dans la page Emplacements de déploiement et la page Vue d’ensemble de votre application.You can swap deployment slots on your app's Deployment slots page and the Overview page. Pour obtenir des détails techniques sur l’échange des emplacements, consultez Que se passe-t-il pendant un échange ?.For technical details on the slot swap, see What happens during swap.

Important

Avant de basculer une application de l’emplacement de déploiement vers l’emplacement de production, vérifiez que l’emplacement de production est bien votre emplacement cible, et que tous les paramètres de l’emplacement source sont configurés comme vous le souhaitez dans l’emplacement de production.Before you swap an app from a deployment slot into production, make sure that production is your target slot and that all settings in the source slot are configured exactly as you want to have them in production.

Pour échanger des emplacements de déploiement :To swap deployment slots:

  1. Accédez à la page Emplacements de déploiement de votre application, puis sélectionnez Échanger.Go to your app's Deployment slots page and select Swap.

    Bouton Échanger

    La boîte de dialogue Échanger regroupe les paramètres des emplacements source et cible sélectionnés qui vont être échangés.The Swap dialog box shows settings in the selected source and target slots that will be changed.

  2. Sélectionnez les emplacements Source et Cible souhaités.Select the desired Source and Target slots. En général, la cible correspond à l’emplacement de production.Usually, the target is the production slot. Sélectionnez également les onglets Modifications sources et Modifications cibles pour vérifier que les changements de configuration à opérer correspondent à ce que vous attendez.Also, select the Source Changes and Target Changes tabs and verify that the configuration changes are expected. Lorsque vous avez terminé, vous pouvez échanger les emplacements immédiatement en sélectionnant Échanger.When you're finished, you can swap the slots immediately by selecting Swap.

    Échange effectué

    Pour voir comment votre emplacement cible s’exécuterait avec les nouveaux paramètres avant que l’échange ne soit réellement effectué, ne sélectionnez pas Échanger, mais suivez les instructions fournies dans Échange avec aperçu.To see how your target slot would run with the new settings before the swap actually happens, don't select Swap, but follow the instructions in Swap with preview.

  3. Lorsque vous avez terminé, fermez la boîte de dialogue en sélectionnant Fermer.When you're finished, close the dialog box by selecting Close.

Si vous rencontrez des problèmes, consultez Résoudre les problèmes liés aux échanges.If you have any problems, see Troubleshoot swaps.

Échange avec aperçu (échange multiphase)Swap with preview (multi-phase swap)

Notes

L’échange avec aperçu n’est pas pris en charge dans les applications web sur Linux.Swap with preview isn't supported in web apps on Linux.

Avant de passer à l’emplacement de production (emplacement cible), contrôlez l’exécution de l’application avec les paramètres échangés.Before you swap into production as the target slot, validate that the app runs with the swapped settings. L’emplacement source est également initialisé avant la fin de l’échange, ce qui est souhaitable pour les applications stratégiques.The source slot is also warmed up before the swap completion, which is desirable for mission-critical applications.

Lorsque vous effectuez un échange avec aperçu, App Service effectue la même opération d’échange, mais il fait une pause après la première étape.When you perform a swap with preview, App Service performs the same swap operation but pauses after the first step. Vous pouvez donc vérifier le résultat sur l’emplacement de préproduction avant la fin de l’échange.You can then verify the result on the staging slot before completing the swap.

Si vous annulez l’échange, App Service réapplique les éléments de configuration à l’emplacement source.If you cancel the swap, App Service reapplies configuration elements to the source slot.

Pour effectuer un échange avec aperçu :To swap with preview:

  1. Procédez comme indiqué dans Échanger des emplacements de déploiement, mais sélectionnez Effectuer l’échange avec aperçu.Follow the steps in Swap deployment slots but select Perform swap with preview.

    Échange avec aperçu

    La boîte de dialogue montre comment la configuration de l’emplacement source est modifiée dans la phase 1, et comment les emplacements source et cible sont modifiés dans la phase 2.The dialog box shows you how the configuration in the source slot changes in phase 1, and how the source and target slot change in phase 2.

  2. Lorsque vous êtes prêt à démarrer l’échange, sélectionnez Démarrer l’échange.When you're ready to start the swap, select Start Swap.

    Lorsque la phase 1 est terminée, vous en êtes averti dans la boîte de dialogue.When phase 1 finishes, you're notified in the dialog box. Affichez l’aperçu de l’échange dans l’emplacement source en accédant à https://<app_name>-<source-slot-name>.azurewebsites.net.Preview the swap in the source slot by going to https://<app_name>-<source-slot-name>.azurewebsites.net.

  3. Lorsque vous êtes prêt à effectuer l’échange en attente, sélectionnez Terminer l’échange dans Action d’échange, puis sélectionnez Terminer l’échange.When you're ready to complete the pending swap, select Complete Swap in Swap action and select Complete Swap.

    Pour annuler un échange en attente, sélectionnez plutôt Annuler l’échange.To cancel a pending swap, select Cancel Swap instead.

  4. Lorsque vous avez terminé, fermez la boîte de dialogue en sélectionnant Fermer.When you're finished, close the dialog box by selecting Close.

Si vous rencontrez des problèmes, consultez Résoudre les problèmes liés aux échanges.If you have any problems, see Troubleshoot swaps.

Pour automatiser un échange multiphase, consultez Automatiser avec PowerShell.To automate a multi-phase swap, see Automate with PowerShell.

Restaurer un échangeRoll back a swap

Si des erreurs se produisent dans l’emplacement cible (par exemple, l’emplacement de production) après une permutation d’emplacements, rétablissez ces deux emplacements comme ils étaient avant l’opération, en les intervertissant immédiatement.If any errors occur in the target slot (for example, the production slot) after a slot swap, restore the slots to their pre-swap states by swapping the same two slots immediately.

Configurer l’échange automatiqueConfigure auto swap

Notes

L’échange automatique n’est pas pris en charge dans les applications web sur Linux.Auto swap isn't supported in web apps on Linux.

L’échange automatique simplifie les scénarios Azure DevOps impliquant un déploiement de l’application en continu, sans démarrage à froid ni temps d’arrêt pour les utilisateurs de l’application.Auto swap streamlines Azure DevOps scenarios where you want to deploy your app continuously with zero cold starts and zero downtime for customers of the app. Lorsque vous activez l’échange automatique d’un emplacement vers l’emplacement de production, chaque fois que vous envoyez (push) des modifications de votre code à cet emplacement, App Service fait basculer automatiquement l’application vers la production après son initialisation dans l’emplacement source.When auto swap is enabled from a slot into production, every time you push your code changes to that slot, App Service automatically swaps the app into production after it's warmed up in the source slot.

Notes

Avant de configurer l’échange automatique pour l’emplacement de production, il est conseillé de tester l’échange automatique sur un emplacement cible hors production.Before you configure auto swap for the production slot, consider testing auto swap on a non-production target slot.

Pour configurer l’échange automatique :To configure auto swap:

  1. Accédez à la page des ressources de votre application.Go to your app's resource page. Sélectionnez Emplacements de déploiement > <emplacement source souhaité > > Configuration > Paramètres généraux.Select Deployment slots > <desired source slot> > Configuration > General settings.

  2. Pour Échange automatique activé, sélectionnez Activé.For Auto swap enabled, select On. Ensuite, sélectionnez l’emplacement cible souhaité pour Échanger automatiquement l’emplacement de déploiement, puis sélectionnez Enregistrer dans la barre de commandes.Then select the desired target slot for Auto swap deployment slot, and select Save on the command bar.

    Sélections pour la configuration de l’échange automatique

  3. Exécutez un push de code sur l’emplacement source.Execute a code push to the source slot. L’échange automatique se produit peu après, et la mise à jour est appliquée dans l’URL de votre emplacement cible.Auto swap happens after a short time, and the update is reflected at your target slot's URL.

Si vous rencontrez des problèmes, consultez Résoudre les problèmes liés aux échanges.If you have any problems, see Troubleshoot swaps.

Spécifier l’initialisation personnaliséeSpecify custom warm-up

Quand vous utilisez Échange automatique, certaines applications peuvent nécessiter quelques actions préparatoires personnalisées avant l’échange.When you're using auto swap, some apps might require custom warm-up actions before the swap. L’élément de configuration applicationInitialization du fichier web.config vous permet de spécifier les actions d’initialisation personnalisées à exécuter.The applicationInitialization configuration element in web.config lets you specify custom initialization actions. L’opération d’échange attend la fin de l’initialisation personnalisée pour procéder à l’échange avec l’emplacement cible.The swap operation waits for this custom warm-up to finish before swapping with the target slot. Voici un exemple de fragment web.config.Here's a sample web.config fragment.

<system.webServer>
    <applicationInitialization>
        <add initializationPage="/" hostName="[app hostname]" />
        <add initializationPage="/Home/About" hostName="[app hostname]" />
    </applicationInitialization>
</system.webServer>

Pour plus d’informations sur la personnalisation de l’élément applicationInitialization, consultez Most common deployment slot swap failures and how to fix them.For more information on customizing the applicationInitialization element, see Most common deployment slot swap failures and how to fix them.

Vous pouvez également personnaliser le comportement d’initialisation en utilisant l’un des deux paramètres d’application suivants (ou les deux) :You can also customize the warm-up behavior with one or both of the following app settings:

  • WEBSITE_SWAP_WARMUP_PING_PATH: chemin permettant d’effectuer un test ping afin d’initialiser votre site.WEBSITE_SWAP_WARMUP_PING_PATH: The path to ping to warm up your site. Ajoutez ce paramètre d’application en spécifiant un chemin d’accès personnalisé qui commence par une barre oblique comme valeur.Add this app setting by specifying a custom path that begins with a slash as the value. Par exemple /statuscheck.An example is /statuscheck. La valeur par défaut est /.The default value is /.
  • WEBSITE_SWAP_WARMUP_PING_STATUSES: Codes de réponse HTTP valides pour l’opération d'initialisation.WEBSITE_SWAP_WARMUP_PING_STATUSES: Valid HTTP response codes for the warm-up operation. Ajoutez ce paramètre d’application avec une liste séparée par des virgules de codes HTTP.Add this app setting with a comma-separated list of HTTP codes. Par exemple 200,202.An example is 200,202 . Si le code d’état retourné ne figure pas dans la liste, les opérations d’initialisation et d’échange sont arrêtées.If the returned status code isn't in the list, the warmup and swap operations are stopped. Par défaut, tous les codes de réponse sont valides.By default, all response codes are valid.

Si vous rencontrez des problèmes, consultez Résoudre les problèmes liés aux échanges.If you have any problems, see Troubleshoot swaps.

Superviser un échangeMonitor a swap

Si l’exécution de l’opération d’échange prend beaucoup de temps, vous pouvez obtenir des informations au sujet de cette opération dans le journal d’activité.If the swap operation takes a long time to complete, you can get information on the swap operation in the activity log.

Sur le portail, dans la page des ressources de votre application, sélectionnez Journal d’activité dans le volet de gauche.On your app's resource page in the portal, in the left pane, select Activity log.

Une opération d’échange s’affiche dans la requête de journal en tant que Swap Web App Slots.A swap operation appears in the log query as Swap Web App Slots. Vous pouvez la développer et sélectionner l’une des sous-opérations ou erreurs afin d’afficher le contenu en détail.You can expand it and select one of the suboperations or errors to see the details.

Acheminer le traficRoute traffic

Par défaut, toutes les requêtes clientes vers les URL de production de l’application (http://<app_name>.azurewebsites.net) sont acheminées vers l’emplacement de production.By default, all client requests to the app's production URL (http://<app_name>.azurewebsites.net) are routed to the production slot. Vous pouvez acheminer une partie du trafic vers un autre emplacement.You can route a portion of the traffic to another slot. Cette fonctionnalité est utile si vous avez besoin d’un retour d’expérience utilisateur pour une nouvelle mise à jour, mais que vous n’êtes pas prêt à la publier en production.This feature is useful if you need user feedback for a new update, but you're not ready to release it to production.

Acheminer le trafic de production automatiquementRoute production traffic automatically

Pour router le trafic de production automatiquement :To route production traffic automatically:

  1. Accédez à la page des ressources de votre application et sélectionnez Emplacements de déploiement.Go to your app's resource page and select Deployment slots.

  2. Dans la colonne % de trafic de l’emplacement vers lequel vous souhaitez acheminer le trafic, spécifiez un pourcentage (compris entre 0 et 100) pour représenter la quantité totale de trafic à diriger.In the Traffic % column of the slot you want to route to, specify a percentage (between 0 and 100) to represent the amount of total traffic you want to route. Sélectionnez Enregistrer.Select Save.

    Définition d’un pourcentage de trafic

Une fois le paramètre enregistré, le pourcentage de clients spécifié est routé de manière aléatoire vers l’emplacement hors production.After the setting is saved, the specified percentage of clients is randomly routed to the non-production slot.

Lorsqu’un client est automatiquement routé vers un emplacement particulier, il est « épinglé » à cet emplacement pendant toute la durée de cette session cliente.After a client is automatically routed to a specific slot, it's "pinned" to that slot for the life of that client session. Dans le navigateur client, vous pouvez voir à quel emplacement votre session est épinglée en examinant le cookie x-ms-routing-name dans les en-têtes HTTP.On the client browser, you can see which slot your session is pinned to by looking at the x-ms-routing-name cookie in your HTTP headers. Une requête qui est acheminée vers l’emplacement « intermédiaire » contient le cookie x-ms-routing-name=staging.A request that's routed to the "staging" slot has the cookie x-ms-routing-name=staging. Une requête qui est acheminée vers l’emplacement de production a le cookie x-ms-routing-name=self.A request that's routed to the production slot has the cookie x-ms-routing-name=self.

Acheminer le trafic de production manuellementRoute production traffic manually

Parallèlement au routage automatique du trafic, App Service peut acheminer les requêtes vers un emplacement particulier.In addition to automatic traffic routing, App Service can route requests to a specific slot. Cela s’avère utile si vous souhaitez que vos utilisateurs puissent choisir d’accepter ou de refuser votre application bêta.This is useful when you want your users to be able to opt in to or opt out of your beta app. Pour router le trafic de production manuellement, vous utilisez le paramètre de requête x-ms-routing-name.To route production traffic manually, you use the x-ms-routing-name query parameter.

Par exemple, pour permettre aux utilisateurs de refuser votre application bêta, vous pouvez placer ce lien dans votre page web :To let users opt out of your beta app, for example, you can put this link on your webpage:

<a href="<webappname>.azurewebsites.net/?x-ms-routing-name=self">Go back to production app</a>

La chaîne x-ms-routing-name=self spécifie l’emplacement de production.The string x-ms-routing-name=self specifies the production slot. Lorsque le navigateur client accède au lien, il est redirigé vers l’emplacement de production.After the client browser accesses the link, it's redirected to the production slot. Chaque requête ultérieure comprendra le cookie x-ms-routing-name=self qui épinglera la session à l’emplacement de production.Every subsequent request has the x-ms-routing-name=self cookie that pins the session to the production slot.

Pour permettre aux utilisateurs d’accepter votre application bêta, définissez le même paramètre de requête pour le nom de l’emplacement hors production.To let users opt in to your beta app, set the same query parameter to the name of the non-production slot. Voici un exemple :Here's an example:

<webappname>.azurewebsites.net/?x-ms-routing-name=staging

Par défaut, les nouveaux emplacements se voient attribuer une règle de routage de 0% (indiquée en gris).By default, new slots are given a routing rule of 0%, shown in grey. Lorsque vous définissez cette valeur explicitement sur 0% (indiquée en noir), vos utilisateurs peuvent accéder à l’emplacement de préproduction manuellement, à l’aide du paramètre de requête x-ms-routing-name.When you explicitly set this value to 0% (shown in black text), your users can access the staging slot manually by using the x-ms-routing-name query parameter. Toutefois, ils ne seront pas routés vers l’emplacement automatiquement, car le pourcentage de routage est défini sur 0.But they won't be routed to the slot automatically because the routing percentage is set to 0. Il s’agit d’un scénario avancé où vous pouvez « cacher » votre emplacement de préproduction du public, tout en permettant aux équipes internes de tester les modifications sur l’emplacement.This is an advanced scenario where you can "hide" your staging slot from the public while allowing internal teams to test changes on the slot.

Supprimer un emplacementDelete a slot

Accédez à la page des ressources de votre application.Go to your app's resource page. Sélectionnez Emplacements de déploiement > <emplacement à supprimer> > Vue d’ensemble.Select Deployment slots > <slot to delete> > Overview. Sélectionnez Supprimer dans la barre de commandes.Select Delete on the command bar.

Supprimer un emplacement de déploiement

Automatiser avec PowerShellAutomate with PowerShell

Notes

Cet article a été mis à jour pour tenir compte de l’utilisation du nouveau module Az d’Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Vous pouvez toujours utiliser le module AzureRM, qui continue à recevoir des correctifs de bogues jusqu’à au moins décembre 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Pour en savoir plus sur le nouveau module Az et la compatibilité avec AzureRM, consultez Présentation du nouveau module Az d’Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Pour des instructions d’installation du module Az, consultez Installer Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Azure PowerShell est un module qui fournit des applets de commande pour gérer Azure via Windows PowerShell, notamment la prise en charge de la gestion des emplacements de déploiement des applications dans Azure App Service.Azure PowerShell is a module that provides cmdlets to manage Azure through Windows PowerShell, including support for managing deployment slots in Azure App Service.

Pour plus d’informations sur l’installation et la configuration d’Azure PowerShell et sur l’authentification d’Azure PowerShell avec votre abonnement Azure, consultez la page Installation et configuration d’Azure PowerShell.For information on installing and configuring Azure PowerShell, and on authenticating Azure PowerShell with your Azure subscription, see How to install and configure Microsoft Azure PowerShell.


Créer une application webCreate a web app

New-AzWebApp -ResourceGroupName [resource group name] -Name [app name] -Location [location] -AppServicePlan [app service plan name]

Créer un emplacementCreate a slot

New-AzWebAppSlot -ResourceGroupName [resource group name] -Name [app name] -Slot [deployment slot name] -AppServicePlan [app service plan name]

Démarrer un échange avec aperçu (échange multiphase) et appliquer la configuration de l’emplacement de destination à l’emplacement sourceInitiate a swap with a preview (multi-phase swap), and apply destination slot configuration to the source slot

$ParametersObject = @{targetSlot  = "[slot name – e.g. “production”]"}
Invoke-AzResourceAction -ResourceGroupName [resource group name] -ResourceType Microsoft.Web/sites/slots -ResourceName [app name]/[slot name] -Action applySlotConfig -Parameters $ParametersObject -ApiVersion 2015-07-01

Annuler un échange en attente (échange avec aperçu) et restaurer la configuration de l’emplacement sourceCancel a pending swap (swap with review) and restore the source slot configuration

Invoke-AzResourceAction -ResourceGroupName [resource group name] -ResourceType Microsoft.Web/sites/slots -ResourceName [app name]/[slot name] -Action resetSlotConfig -ApiVersion 2015-07-01

Échanger des emplacements de déploiementSwap deployment slots

$ParametersObject = @{targetSlot  = "[slot name – e.g. “production”]"}
Invoke-AzResourceAction -ResourceGroupName [resource group name] -ResourceType Microsoft.Web/sites/slots -ResourceName [app name]/[slot name] -Action slotsswap -Parameters $ParametersObject -ApiVersion 2015-07-01

Superviser les événements d’échange dans le journal d’activitéMonitor swap events in the activity log

Get-AzLog -ResourceGroup [resource group name] -StartTime 2018-03-07 -Caller SlotSwapJobProcessor  

Supprimer un emplacementDelete a slot

Remove-AzResource -ResourceGroupName [resource group name] -ResourceType Microsoft.Web/sites/slots –Name [app name]/[slot name] -ApiVersion 2015-07-01

Automatiser avec l’interface CLIAutomate with the CLI

Pour connaître les commandes de l’interface Azure CLI pour les emplacements de déploiement, consultez az webapp deployment slot.For Azure CLI commands for deployment slots, see az webapp deployment slot.

Résoudre les problèmes liés aux échangesTroubleshoot swaps

Si une erreur se produit pendant un échange d’emplacement, celle-ci est journalisée dans D:\home\LogFiles\eventlog.xml.If any error occurs during a slot swap, it's logged in D:\home\LogFiles\eventlog.xml. Elle est également journalisée dans le journal des erreurs propres à l’application.It's also logged in the application-specific error log.

Voici quelques erreurs courantes liées aux échanges :Here are some common swap errors:

  • Une requête HTTP envoyée à la racine de l’application a expiré.An HTTP request to the application root is timed. L’opération d’échange attend 90 secondes pour chaque requête HTTP, et retente jusqu’à 5 fois.The swap operation waits for 90 seconds for each HTTP request, and retries up to 5 times. Si toutes les nouvelles tentatives expirent elles aussi, l’opération d’échange est arrêtée.If all retries are timed out, the swap operation is stopped.

  • L’initialisation du cache local peut échouer si le contenu de l’application dépasse le quota de disque local spécifié.Local cache initialization might fail when the app content exceeds the local disk quota specified for the local cache. Pour plus d’informations, consultez Vue d’ensemble du cache local.For more information, see Local cache overview.

  • Pendant l’initialisation personnalisée, les requêtes HTTP sont effectuées en interne (sans passer par l’URL externe).During custom warm-up, the HTTP requests are made internally (without going through the external URL). Elles peuvent échouer avec certaines règles de réécriture d’URL dans Web.config. Par exemple, les règles de redirection des noms de domaine ou d’application du protocole HTTPS peuvent empêcher les requêtes d’initialisation d’atteindre le code de l’application.They can fail with certain URL rewrite rules in Web.config. For example, rules for redirecting domain names or enforcing HTTPS can prevent warm-up requests from reaching the app code. Pour contourner ce problème, modifiez vos règles de réécriture en ajoutant les deux conditions suivantes :To work around this issue, modify your rewrite rules by adding the following two conditions:

    <conditions>
      <add input="{WARMUP_REQUEST}" pattern="1" negate="true" />
      <add input="{REMOTE_ADDR}" pattern="^100?\." negate="true" />
      ...
    </conditions>
    
  • Sans une initialisation personnalisée, les règles de réécriture d’URL peuvent encore bloquer les requêtes HTTP.Without a custom warm-up, the URL rewrite rules can still block HTTP requests. Pour contourner ce problème, modifiez vos règles de réécriture en ajoutant la condition suivante :To work around this issue, modify your rewrite rules by adding the following condition:

    <conditions>
      <add input="{REMOTE_ADDR}" pattern="^100?\." negate="true" />
      ...
    </conditions>
    
  • Certaines règles de restriction IP peuvent empêcher l’opération d’échange d’envoyer des requêtes HTTP à votre application.Some IP restriction rules might prevent the swap operation from sending HTTP requests to your app. Les plages d’adresses IPv4 qui commencent par 10. et 100. sont internes à votre déploiement.IPv4 address ranges that start with 10. and 100. are internal to your deployment. Vous devez les autoriser à se connecter à votre application.You should allow them to connect to your app.

Étapes suivantesNext steps

Bloquer l’accès à des emplacements hors productionBlock access to non-production slots