Resolución de nombres (DNS) en App Service

La aplicación usa DNS al realizar llamadas a recursos dependientes. Los recursos pueden ser servicios de Azure, como Key Vault, Storage o Azure SQL, pero también podrían ser API web de las que depende la aplicación. Cuando quiera realizar una llamada a, por ejemplo, myservice.com, usa DNS para resolver el nombre en una IP. En este artículo se describe cómo App Service controla la resolución de nombres y cómo determina qué servidores DNS va a usar. En el artículo también se describen las opciones que puede usar para configurar la resolución DNS.

Funcionamiento de la resolución de nombres en App Service

Si no integra la aplicación con una red virtual y los servidores DNS personalizados no están configurados, la aplicación usa Azure DNS. Si integra la aplicación con una red virtual, esta aplicación usa la configuración DNS de la red virtual. El comportamiento predeterminado de la red virtual también es usar Azure DNS. Mediante la red virtual, también es posible vincular a zonas privadas de Azure DNS y usarlas para la resolución de puntos de conexión privados o la resolución de nombres de dominio privados.

Si ha configurado la red virtual con una lista de servidores DNS personalizados, la resolución de nombres usa estos servidores. Si la red virtual usa servidores DNS personalizados y se usan puntos de conexión privados, debe leer con atención este artículo. También debe tener en cuenta que los servidores DNS personalizados pueden resolver los registros DNS públicos que usa la aplicación. La configuración de DNS debe reenviar solicitudes a un servidor DNS público, incluir un servidor DNS público como Azure DNS en la lista de servidores DNS personalizados o especificar un servidor alternativo en el nivel de aplicación.

Cuando la aplicación necesita resolver un nombre de dominio mediante DNS, la aplicación envía una solicitud de resolución de nombres a todos los servidores DNS configurados. Si el primer servidor de la lista devuelve una respuesta dentro del límite de tiempo de espera, obtendrá de inmediato el resultado devuelto. Si no es así, la aplicación espera a que los demás servidores respondan dentro del periodo de tiempo de espera y evalúe las respuestas del servidor DNS en el orden en que ha configurado los servidores. Si ninguno de los servidores responde dentro del tiempo de espera y ha configurado el reintento, debe repetir el proceso.

Configuración de servidores DNS

La aplicación individual permite invalidar la configuración de DNS especificando la propiedad dnsServers en el objeto de propiedad del sitio dnsConfiguration. Puede especificar hasta cinco servidores DNS personalizados. Puede configurar servidores DNS personalizados mediante la CLI de 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']"

Configuración de la aplicación de DNS

App Service tiene la configuración de la aplicación existente para configurar los servidores DNS y el comportamiento de resolución de nombres. Las propiedades del sitio invalidan la configuración de la aplicación si existen ambas. Las propiedades del sitio tienen la ventaja de ser auditables con Azure Policy y validarse en el momento de la configuración. Se recomienda usar las propiedades del sitio.

Todavía puede usar la configuración de la aplicación WEBSITE_DNS_SERVER existente y agregar servidores DNS personalizados con cualquiera de las opciones. Si quiere agregar varios servidores DNS mediante la configuración de la aplicación, debe separar los servidores por comas sin espacios en blanco agregados.

Con la configuración de la aplicación WEBSITE_DNS_ALT_SERVER, anexa el servidor DNS específico a la lista de servidores DNS configurados. El servidor DNS alternativo se anexa tanto a los servidores DNS configurados explícitamente como a los servidores DNS heredados de la red virtual.

La configuración de la aplicación también existe para configurar el comportamiento de resolución de nombres y se denominan WEBSITE_DNS_MAX_CACHE_TIMEOUT, WEBSITE_DNS_TIMEOUT y WEBSITE_DNS_ATTEMPTS.

Configuración del comportamiento de la resolución de nombres

Si necesita un control específico sobre la resolución de nombres, App Service le permite modificar el comportamiento predeterminado. Puede modificar los reintentos, el tiempo de espera de reintento y el tiempo de espera de la caché. El cambio de comportamiento, como deshabilitar o reducir la duración de la caché, puede influir en el rendimiento.

Nombre de propiedad Valor predeterminado de Windows Valor predeterminado de Linux Valores permitidos Descripción
dnsRetryAttemptCount 1 5 1-5 Define el número de intentos para resolver; uno significa que no hay reintentos.
dnsMaxCacheTimeout 30 0 0-60 Los resultados de DNS se almacenan en caché según el TTL de registros individuales, pero no más que el tiempo de espera máximo definido de caché. Establecer la caché en cero significa que el almacenamiento en caché está deshabilitado.
dnsRetryAttemptTimeout 3 1 1-30 Tiempo de espera antes de volver a intentarlo o de que se produzca un error. El tiempo de espera también define el tiempo que se esperan los resultados del servidor secundario si el servidor principal no responde.

Nota

  • El cambio del comportamiento de resolución de nombres no se admite en las aplicaciones de contenedor de Windows.
  • Para configurar dnsMaxCacheTimeout, debe asegurarse de que el almacenamiento en caché está habilitado agregando la configuración de la aplicación WEBSITE_ENABLE_DNS_CACHE="true". Si habilita el almacenamiento en caché, pero no configura dnsMaxCacheTimeout, el tiempo de espera se establecerá en 30.

Configure el comportamiento de resolución de nombres mediante estos comandos de la 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 la configuración mediante este comando de la CLI:

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

Pasos siguientes