Condividi tramite


Risoluzione dei nomi (DNS) nel servizio app

L'app usa DNS quando si effettuano chiamate a risorse dipendenti. Le risorse possono essere servizi di Azure, ad esempio Key Vault, Archiviazione o Azure SQL, ma possono anche essere API Web da cui dipende l'app. Quando si vuole effettuare una chiamata, ad esempio, a myservice.com, si usa DNS per risolvere il nome in un indirizzo IP. Questo articolo descrive come il servizio app gestisce la risoluzione dei nomi e come determina quali server DNS usare. L'articolo descrive anche le impostazioni che è possibile usare per configurare la risoluzione DNS.

Funzionamento della risoluzione dei nomi nel servizio app

Se non si integra l'app con una rete virtuale e i server DNS personalizzati non sono configurati, l'app usa DNS di Azure. Se si integra l'app con una rete virtuale, l'app usa la configurazione DNS della rete virtuale. L'impostazione predefinita per la rete virtuale consiste anche nell'usare DNS di Azure. Tramite la rete virtuale, è anche possibile collegarsi a zone private DNS di Azure e usarle per la risoluzione dei nomi di endpoint privati o per la risoluzione dei nomi di dominio privato.

Se la rete virtuale è stata configurata con un elenco di server DNS personalizzati, la risoluzione dei nomi nel servizio app userà fino a cinque server DNS personalizzati. Se la rete virtuale usa server DNS personalizzati e si usano endpoint privati, leggere questo articolo con attenzione. È anche necessario considerare che i server DNS personalizzati sono in grado di risolvere tutti i record DNS pubblici usati dall'app. La configurazione DNS deve inoltrare le richieste a un server DNS pubblico, includere un server DNS pubblico come DNS di Azure nell'elenco di server DNS personalizzati o specificare un server alternativo a livello di app.

Quando l'app deve risolvere un nome di dominio tramite DNS, l'app invia una richiesta di risoluzione dei nomi a tutti i server DNS configurati. Se il primo server nell'elenco restituisce una risposta entro il limite di timeout, viene restituito immediatamente il risultato. In caso contrario, l'app attende che gli altri server rispondano entro il periodo di timeout e valuta le risposte del server DNS nell'ordine in cui sono stati configurati i server. Se nessuno dei server risponde entro il timeout e si è configurato un nuovo tentativo, ripetere il processo.

Configurazione dei server DNS

La singola app consente di eseguire l'override della configurazione DNS specificando la proprietà dnsServers nell'oggetto proprietà del sito dnsConfiguration. È possibile specificare fino a cinque server DNS personalizzati. È possibile configurare server DNS personalizzati usando l'interfaccia della riga di comando di Azure:

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']"

Impostazioni dell'app DNS

Il servizio app ha impostazioni dell'app esistenti per configurare i server DNS e il comportamento di risoluzione dei nomi. Se esistono entrambe, le proprietà del sito eseguono l'override delle impostazioni dell'app. Le proprietà del sito hanno il vantaggio di essere controllabili con Criteri di Azure e di essere convalidate al momento della configurazione. È consigliabile usare le proprietà del sito.

È comunque possibile usare l'impostazione dell'app WEBSITE_DNS_SERVER esistente ed è possibile aggiungere server DNS personalizzati con entrambe le impostazioni. Se si desidera aggiungere più server DNS usando l'impostazione dell'app, è necessario separare i server da virgole senza spazi vuoti aggiunti.

Usando l'impostazione dell'app WEBSITE_DNS_ALT_SERVER, si aggiunge il server DNS specifico all'elenco dei server DNS configurati. Il server DNS alternativo viene aggiunto sia ai server DNS configurati in modo esplicito che ai server DNS ereditati dalla rete virtuale.

Le impostazioni dell'app esistono anche per la configurazione del comportamento di risoluzione dei nomi e sono denominate WEBSITE_DNS_MAX_CACHE_TIMEOUT, WEBSITE_DNS_TIMEOUT e WEBSITE_DNS_ATTEMPTS.

Configurare il comportamento di risoluzione dei nomi

Se è necessario un controllo granulare sulla risoluzione dei nomi, il servizio app consente di modificare il comportamento predefinito. È possibile modificare i tentativi, il timeout di ripetizione dei tentativi e il timeout della cache. La modifica del comportamento, ad esempio la disabilitazione o la riduzione della durata della cache, può influire sulle prestazioni.

Nome della proprietà Valore predefinito di Windows Valore predefinito di Linux Valori consentiti Descrizione
dnsRetryAttemptCount 1 5 1-5 Definisce il numero di tentativi da risolvere in cui non viene eseguito alcun tentativo.
dnsMaxCacheTimeout 30 0 0-60 I risultati DNS vengono memorizzati nella cache in base al TTL dei singoli record, ma non più del timeout massimo della cache definito. L'impostazione della cache su zero indica che la memorizzazione nella cache è disabilitata.
dnsRetryAttemptTimeout 3 1 1-30 Timeout prima di riprovare o non riuscire. Il timeout definisce anche il tempo di attesa dei risultati del server secondario se il database primario non risponde.

Nota

  • La modifica del comportamento di risoluzione dei nomi non è supportata nelle app contenitore di Windows.
  • Per configurare dnsMaxCacheTimeout, è necessario assicurarsi che la memorizzazione nella cache sia abilitata aggiungendo l'impostazione dell'app WEBSITE_ENABLE_DNS_CACHE="true". Se si abilita la memorizzazione nella cache, ma non si configura dnsMaxCacheTimeout, il timeout verrà impostato su 30.

Configurare il comportamento di risoluzione dei nomi usando questi comandi dell'interfaccia della riga di comando:

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"

Convalidare le impostazioni usando questo comando dell'interfaccia della riga di comando:

az resource show --resource-group <group-name> --name <app-name> --query properties.dnsConfiguration --resource-type "Microsoft.Web/sites"

Passaggi successivi