Résolution de noms (DNS) dans App Service
Votre application utilise le DNS lors des appels à des ressources dépendantes. Les ressources peuvent être des services Azure tels que Key Vault, Stockage ou Azure SQL, mais il peut également s’agir d’API web dont dépend votre application. Quand vous souhaitez passer un appel à, par exemple, myservice.com, vous utilisez le DNS pour résoudre le nom en une adresse IP. Cet article décrit comment App Service gère la résolution de noms et comment il détermine les serveurs DNS à utiliser. L’article décrit également les paramètres que vous pouvez utiliser pour configurer la résolution DNS.
Fonctionnement de la résolution de noms dans App Service
Si vous n’intégrez pas votre application à un réseau virtuel et que vous n’avez pas configuré de serveurs DNS personnalisés, votre application utilise Azure DNS. Si vous intégrez votre application à un réseau virtuel, celle-ci utilise la configuration DNS du réseau virtuel. En outre, la configuration par défaut pour le réseau virtuel consiste à utiliser Azure DNS. Via le réseau virtuel, il est également possible d’établir une liaison avec des zones privées Azure DNS et de les utiliser pour la résolution de points de terminaison privés ou de noms de domaine privés.
Si vous avez configuré votre réseau virtuel avec une liste de serveurs DNS personnalisés, la résolution de noms dans App Service utilisera jusqu’à cinq serveurs DNS personnalisés. Si votre réseau virtuel utilise des serveurs DNS personnalisés et que vous utilisez des points de terminaison privés, vous devez lire attentivement cet article. Vous devez également tenir compte du fait que vos serveurs DNS personnalisés sont en mesure de résoudre tous les enregistrements DNS publics utilisés par votre application. Votre configuration DNS doit soit transférer les demandes à un serveur DNS public, inclure un serveur DNS public comme Azure DNS dans la liste des serveurs DNS personnalisés ou spécifier un autre serveur au niveau de l’application.
Quand votre application doit résoudre un nom de domaine en utilisant le DNS, elle envoie une demande de résolution de noms à tous les serveurs DNS configurés. Si le premier serveur de la liste retourne une réponse dans le délai d’expiration, le résultat est retourné immédiatement. Si ce n’est pas le cas, l’application attend que les autres serveurs répondent dans le délai d’expiration et évalue les réponses des serveurs DNS dans l’ordre dans lequel vous avez configuré les serveurs. Si aucun des serveurs ne répond dans le délai d’expiration et que vous avez configuré une nouvelle tentative, vous répétez le processus.
Configuration des serveurs DNS
L’application vous permet de remplacer la configuration DNS en spécifiant la propriété dnsServers
dans l’objet de propriété de site dnsConfiguration
. Vous pouvez spécifier jusqu’à cinq serveurs DNS personnalisés. Vous pouvez configurer des serveurs DNS personnalisés en utilisant Azure CLI :
az resource update --resource-group <group-name> --name <app-name> --resource-type "Microsoft.Web/sites" --set properties.dnsConfiguration.dnsServers="['168.63.129.16','xxx.xxx.xxx.xxx']"
Paramètres d’application DNS
App Service a des paramètres d’application existants pour configurer les serveurs DNS et le comportement de résolution de noms. Les propriétés du site ont la priorité sur les paramètres de l’application s’ils existent tous les deux. Les propriétés de site ont l’avantage d’être auditables avec Azure Policy et validées au moment de la configuration. Nous vous recommandons d’utiliser les propriétés du site.
Vous pouvez toujours utiliser le paramètre d’application WEBSITE_DNS_SERVER
existant et vous pouvez ajouter des serveurs DNS personnalisés avec l’un ou l’autre paramètre. Si vous souhaitez ajouter plusieurs serveurs DNS en utilisant le paramètre d’application, vous devez séparer les serveurs par des virgules sans espaces vides ajoutés.
À l’aide du paramètre d’application WEBSITE_DNS_ALT_SERVER
, vous ajoutez le serveur DNS spécifique à la liste des serveurs DNS configurés. L’autre serveur DNS est ajouté aux serveurs DNS configurés explicitement et aux serveurs DNS hérités du réseau virtuel.
Les paramètres d’application existent également pour la configuration du comportement de résolution de noms et sont nommés WEBSITE_DNS_MAX_CACHE_TIMEOUT
, WEBSITE_DNS_TIMEOUT
et WEBSITE_DNS_ATTEMPTS
.
Configurer le comportement de la résolution de noms
Si vous avez besoin de contrôler la résolution de noms de manière affinée, App Service vous permet de modifier le comportement par défaut. Vous pouvez modifier les nouvelles tentatives, le délai d’expiration des nouvelles tentatives et le délai d’expiration du cache. Le changement du comportement, comme la désactivation ou la réduction de la durée du cache, peut influer sur les performances.
Nom de la propriété | Valeur Windows par défaut | Valeur Linux par défaut | Valeurs autorisées | Description |
---|---|---|---|---|
dnsRetryAttemptCount | 1 | 5 | 1-5 | Définit le nombre de tentatives de résolution (1 signifiant aucune nouvelle tentative). |
dnsMaxCacheTimeout | 30 | 0 | 0-60 | Les résultats DNS sont mis en cache en fonction de la durée de vie des enregistrements individuels, mais pas plus que le délai d’attente maximal défini pour le cache. Définir le cache sur zéro signifie que la mise en cache est désactivée. |
dnsRetryAttemptTimeout | 3 | 1 | 1-30 | Délai d’expiration avant une nouvelle tentative ou un échec. Le délai d’expiration définit également le temps d’attente des résultats du serveur secondaire si le serveur principal ne répond pas. |
Notes
- La modification du comportement de résolution de noms n’est pas prise en charge sur les applications conteneur Windows.
- Pour configurer
dnsMaxCacheTimeout
, vous devez vous assurer que la mise en cache est activée en ajoutant le paramètre d’applicationWEBSITE_ENABLE_DNS_CACHE
="true". Si vous activez la mise en cache, mais que vous ne configurez pasdnsMaxCacheTimeout
, le délai d’attente est défini sur 30.
Configurez le comportement de résolution de noms avec les commandes CLI suivantes :
az resource update --resource-group <group-name> --name <app-name> --set properties.dnsConfiguration.dnsMaxCacheTimeout=[0-60] --resource-type "Microsoft.Web/sites"
az resource update --resource-group <group-name> --name <app-name> --set properties.dnsConfiguration.dnsRetryAttemptCount=[1-5] --resource-type "Microsoft.Web/sites"
az resource update --resource-group <group-name> --name <app-name> --set properties.dnsConfiguration.dnsRetryAttemptTimeout=[1-30] --resource-type "Microsoft.Web/sites"
Validez les paramètres avec cette commande CLI :
az resource show --resource-group <group-name> --name <app-name> --query properties.dnsConfiguration --resource-type "Microsoft.Web/sites"