Namensauflösung (DNS) in App Service
Ihre App verwendet DNS, wenn abhängige Ressourcen aufgerufen werden. Ressourcen können Azure-Dienste wie Key Vault, Storage oder Azure SQL sein, aber es kann sich auch um Web-APIs handeln, von denen Ihre App abhängig ist. Wenn Sie z. B. myservice.com aufrufen möchten, verwenden Sie DNS, um den Namen in eine IP-Adresse aufzulösen. In diesem Artikel wird beschrieben, wie App Service die Namensauflösung verarbeitet und ermittelt, welche DNS-Server verwendet werden sollen. Der Artikel beschreibt auch Einstellungen, die Sie zum Konfigurieren von DNS-Auflösung verwenden können.
Funktionsweise von Namensauflösung in App Service
Wenn Sie Ihre App nicht in ein virtuelles Netzwerk integrieren und keine benutzerdefinierten DNS-Server konfiguriert sind, verwendet Ihre App Azure DNS. Wenn Sie Ihre App in ein virtuelles Netzwerk integrieren, verwendet Ihre App die DNS-Konfiguration des virtuellen Netzwerks. Die Standardeinstellung für virtuelle Netzwerke besteht ebenfalls darin, Azure DNS zu verwenden. Über das virtuelle Netzwerk ist es auch möglich, eine Verbindung mit privaten Azure DNS-Zonen zu erstellen und diese für die Auflösung privater Endpunkte oder privater Domänennamen zu verwenden.
Wenn Sie Ihr virtuelles Netzwerk mit einer Liste von benutzerdefinierten DNS-Servern konfiguriert haben, verwendet die Namensauflösung in App Service bis zu fünf benutzerdefinierte DNS-Server. Wenn Ihr virtuelles Netzwerk benutzerdefinierte DNS-Server verwendet und Sie private Endpunkte verwenden, sollten Sie diesen Artikel sorgfältig lesen. Sie müssen auch berücksichtigen, dass Ihre benutzerdefinierten DNS-Server in der Lage sind, alle öffentlichen DNS-Einträge aufzulösen, die von Ihrer App verwendet werden. Ihre DNS-Konfiguration muss Anforderungen entweder an einen öffentlichen DNS-Server weiterleiten, einen öffentlichen DNS-Server wie Azure DNS in die Liste der benutzerdefinierten DNS-Server aufnehmen oder einen alternativen Server auf App-Ebene angeben.
Wenn Ihre App einen Domänennamen mithilfe von DNS auflösen muss, sendet die App eine Anforderung zur Namensauflösung an alle konfigurierten DNS-Server. Wenn der erste Server in der Liste eine Antwort innerhalb des Timeoutlimits zurückgibt, wird das Ergebnis sofort zurückgegeben. Andernfalls wartet die App, bis die anderen Server innerhalb des Timeoutzeitraums reagieren, und wertet die DNS-Serverantworten in der Reihenfolge aus, in der Sie die Server konfiguriert haben. Wenn keiner der Server innerhalb des Timeouts antwortet und Sie einen Wiederholungsversuch konfiguriert haben, wiederholt sich der Vorgang.
Konfigurieren von DNS-Servern
Mit der einzelnen App können Sie die DNS-Konfiguration überschreiben, indem Sie die dnsServers
-Eigenschaft im dnsConfiguration
-Siteeigenschaftenobjekt angeben. Sie können bis zu fünf benutzerdefinierte DNS-Server angeben. Sie können benutzerdefinierte DNS-Server mithilfe der Azure CLI konfigurieren:
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']"
Hinzufügen von App-Einstellungen
Der App-Dienst verfügt über vorhandene App-Einstellungen zum Konfigurieren von DNS-Servern und Namensauflösungsverhalten. Websiteeigenschaften setzen die App-Einstellungen außer Kraft, wenn beide vorhanden sind. Websiteeigenschaften haben den Vorteil, dass sie mit Azure Policy überwacht und zum Zeitpunkt der Konfiguration überprüft werden können. Es wird empfohlen, Websiteeigenschaften zu verwenden.
Sie können weiterhin die vorhandene App-Einstellung WEBSITE_DNS_SERVER
verwenden und benutzerdefinierte DNS-Server mit einer der Einstellungen hinzufügen. Wenn Sie mithilfe der App-Einstellung mehrere DNS-Server hinzufügen möchten, müssen Sie die Server durch Kommas ohne Leerzeichen trennen.
Mithilfe der App-Einstellung WEBSITE_DNS_ALT_SERVER
hängen Sie den spezifischen DNS-Server an die Liste der konfigurierten DNS-Server an. Der alternative DNS-Server wird sowohl an explizit konfigurierte DNS-Server als auch an DNS-Server, die vom virtuellen Netzwerk geerbt wurden, angefügt.
App-Einstellungen sind auch zum Konfigurieren des Namensauflösungsverhaltens vorhanden und werden WEBSITE_DNS_MAX_CACHE_TIMEOUT
, WEBSITE_DNS_TIMEOUT
und WEBSITE_DNS_ATTEMPTS
benannt.
Konfigurieren des Verhaltens der Namensauflösung
Wenn Sie eine differenzierte Steuerung der Namensauflösung benötigen, können Sie mit App Service das Standardverhalten ändern. Sie können Wiederholungsversuche, das Wiederholungstimeout und das Cachetimeout ändern. Das Ändern des Verhaltens (z. B. Deaktivieren oder Verringern der Cachedauer) kann sich auf die Leistung auswirken.
Eigenschaftenname | Windows-Standardwert | Linux-Standardwert | Zulässige Werte | BESCHREIBUNG |
---|---|---|---|---|
dnsRetryAttemptCount | 1 | 5 | 1–5 | Definiert die Anzahl von Auflösungsversuchen. Eins bedeutet, dass keine Wiederholungsversuche erfolgen. |
dnsMaxCacheTimeout | 30 | 0 | 0 bis 60 | DNS-Ergebnisse werden gemäß den TTL der einzelnen Einträge zwischengespeichert, aber nicht länger als das definierte maximale Cachetimeout. Das Festlegen des Caches auf null bedeutet, dass die Zwischenspeicherung deaktiviert ist. |
dnsRetryAttemptTimeout | 3 | 1 | 1–30 | Timeout vor Wiederholungsversuch oder Fehler. Das Timeout definiert auch die Zeit, die auf sekundäre Serverergebnisse gewartet wird, wenn der primäre Server nicht antwortet. |
Hinweis
- Das Ändern des Namensauflösungsverhaltens wird für Windows Container-Apps nicht unterstützt.
- Zum Konfigurieren von
dnsMaxCacheTimeout
müssen Sie sicherstellen, dass die Zwischenspeicherung aktiviert ist, indem Sie die App-EinstellungWEBSITE_ENABLE_DNS_CACHE
=“true“ hinzufügen. Wenn Sie das Zwischenspeichern aktivieren, aber nichtdnsMaxCacheTimeout
konfigurieren, wird das Timeout auf 30 festgelegt.
Konfigurieren Sie das Verhalten der Namensauflösung mithilfe der folgenden CLI-Befehle:
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"
Überprüfen Sie die Einstellungen mithilfe des folgenden CLI-Befehls:
az resource show --resource-group <group-name> --name <app-name> --query properties.dnsConfiguration --resource-type "Microsoft.Web/sites"