Resolução de nomes (DNS) no Serviço de Aplicativo

O aplicativo usa o DNS ao fazer chamadas para recursos dependentes. Os recursos podem ser serviços do Azure, como Key Vault, Armazenamento do Microsoft Azure ou SQL do Azure, mas também podem ser APIs Web das quais o aplicativo depende. Quando você deseja fazer uma chamada para, por exemplo , myservice.com, o DNS é usado para resolver o nome para um IP. Este artigo descreve como o Serviço de Aplicativo lida com a resolução de nomes e como ela determina quais servidores DNS devem ser usados. O artigo também descreve as configurações que você pode usar para configurar a resolução de DNS.

Como funciona a resolução de nomes no Serviço de Aplicativo

Se você não estiver integrando seu aplicativo a uma rede virtual e servidores DNS personalizados não estiverem configurados, seu aplicativo usará o DNS do Azure. Se você integrar o aplicativo a uma rede virtual, ele usará a configuração DNS da rede virtual. O padrão da rede virtual também é usar o DNS do Azure. Por meio da rede virtual, também é possível vincular a zonas privadas de DNS do Azure e usá-las para resolução de ponto de extremidade privado ou resolução de nomes de domínio privado.

Se você configurou a rede virtual com uma lista de servidores DNS personalizados, a resolução de nomes usará esses servidores. Se a rede virtual estiver usando servidores DNS personalizados e você estiver usando pontos de extremidade privados, leia este artigo com atenção. Você também precisa considerar se os servidores DNS personalizados conseguem resolver todos registros DNS públicos usados pelo aplicativo. A configuração de DNS precisa encaminhar solicitações a um servidor DNS público, incluir um servidor DNS público como o DNS do Azure na lista de servidores DNS personalizados ou especificar um servidor alternativo no nível do aplicativo.

Quando o aplicativo precisa resolver um nome de domínio usando DNS, o aplicativo envia uma solicitação de resolução de nomes a todos os servidores DNS configurados. Se o primeiro servidor na lista retornar uma resposta dentro do tempo limite, o resultado será retornado imediatamente. Caso contrário, o aplicativo aguardará que os outros servidores respondam no período de tempo limite e avaliará as respostas do servidor DNS na ordem em que você configurou os servidores. Se nenhum dos servidores responder dentro do tempo limite e você tiver configurado a repetição, o processo será repetido.

Configurar servidores DNS

O aplicativo individual permite substituir a configuração de DNS especificando a propriedade dnsServers no objeto de propriedade do site dnsConfiguration. Você pode especificar até cinco servidores DNS personalizados. Você pode configurar servidores DNS personalizados usando a CLI do 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']"

Configurações do aplicativo DNS

O Serviço de Aplicativo tem configurações de aplicativo existentes para definir servidores DNS e comportamento de resolução de nomes. As propriedades do site substituirão as configurações do aplicativo se ambas existirem. As propriedades do site têm a vantagem de serem auditáveis com o Azure Policy e validadas no momento da configuração. Recomendamos que você use as propriedades do site.

Você ainda pode usar a configuração de aplicativo existente WEBSITE_DNS_SERVER e adicionar servidores DNS personalizados com qualquer uma das configurações. Se você quiser adicionar vários servidores DNS usando a configuração de aplicativo, precisará separar os servidores com vírgula sem adicionar espaços em branco.

Usando a configuração do aplicativo WEBSITE_DNS_ALT_SERVER, você acrescenta o servidor DNS específico à lista de servidores DNS configurados. O servidor DNS alternativo é acrescentado a servidores DNS configurados explicitamente e servidores DNS herdados da rede virtual.

As configurações do aplicativo também existem para configurar o comportamento de resolução de nomes e são nomeadas WEBSITE_DNS_MAX_CACHE_TIMEOUT, WEBSITE_DNS_TIMEOUT e WEBSITE_DNS_ATTEMPTS.

Configurar o comportamento da resolução de nomes

Se você precisa de controle refinado sobre a resolução de nomes, o Serviço de Aplicativo permite modificar o comportamento padrão. Você pode modificar a tentativas de repetição, o tempo limite de repetição e tempo limite de cache. A alteração do comportamento, como desabilitar ou reduzir a duração do cache, pode influenciar o desempenho.

Nome da propriedade Valor padrão do Windows Valor padrão do Linux Valores permitidos Descrição
dnsRetryAttemptCount 1 5 1-5 Define o número de tentativas de resolução em que "um" significa que a tentativa não pode ser repetida.
dnsMaxCacheTimeout 30 0 0 – 60 Os resultados do DNS são armazenados em cache de acordo com a TTL de registros individuais, mas não mais do que o tempo limite de cache máximo definido. Definir o cache como zero significa que o cache está desabilitado.
dnsRetryAttemptTimeout 3 1 1–30 Tempo limite antes de repetir ou falhar. O tempo limite também define o tempo de espera pelos resultados do servidor secundário quando o primário não responde.

Observação

  • Não há suporte para a alteração do comportamento de resolução de nomes nos aplicativos de Contêiner do Windows.
  • Para configurar dnsMaxCacheTimeout, você precisa garantir que o cache esteja habilitado adicionando a configuração do aplicativo WEBSITE_ENABLE_DNS_CACHE="true". Se você habilitar o cache, mas não configurar dnsMaxCacheTimeout, o tempo limite será definido como 30.

Configure o comportamento da resolução de nomes usando estes comandos da CLI:

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"

Valide as configurações usando este comando da CLI:

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

Próximas etapas