Problembehandlung: „Azure Functions-Runtime ist nicht erreichbar“
Dieser Artikel enthält Informationen zur Problembehandlung für die folgende Fehlerzeichenfolge, die im Azure-Portal angezeigt wird:
„Fehler: Die Azure Functions-Runtime ist nicht erreichbar. Klicken Sie hier, um Informationen zur Speicherkonfiguration zu erhalten.“
Dieses Problem tritt auf, wenn die Functions-Runtime nicht gestartet werden kann. Der häufigste Grund besteht darin, dass die Funktions-App den Zugriff auf das Speicherkonto verloren hat. Weitere Informationen finden Sie unter Anforderungen an das Speicherkonto.
Der Rest dieses Artikels hilft Ihnen bei der Problembehandlung bestimmter Ursachen dieses Fehlers, einschließlich der Vorgehensweise zum Identifizieren und Auflösen jedes Falls.
Speicherkonto wurde gelöscht
Jede Funktions-App benötigt für den Betrieb ein Speicherkonto. Wenn dieses Konto gelöscht wird, funktionieren Ihre Funktionen nicht.
Schlagen Sie zunächst den Namen Ihres Speicherkontos in den Anwendungseinstellungen nach. Der Name Ihres Speicherkontos (als Teil einer Verbindungszeichenfolge) ist entweder in AzureWebJobsStorage
oder in WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
enthalten. Weitere Informationen finden Sie unter Referenz zu App-Einstellungen für Azure Functions.
Suchen Sie im Azure-Portal nach Ihrem Speicherkonto, um zu ermitteln, ob es noch vorhanden ist. Wenn es gelöscht wurde, müssen Sie das Speicherkonto neu erstellen und Ihre Verbindungszeichenfolgen für den Speicher ersetzen. Ihr Funktionscode ist verloren gegangen, und Sie müssen ihn erneut bereitstellen.
Anwendungseinstellungen des Speicherkontos wurden gelöscht
Wenn Sie im vorherigen Schritt keine Verbindungszeichenfolge für das Speicherkonto finden konnten, wurde sie wahrscheinlich gelöscht oder überschrieben. Das Löschen von Anwendungseinstellungen wird normalerweise durchgeführt, wenn Sie Bereitstellungsslots oder Azure Resource Manager-Skripts zum Festlegen von Anwendungseinstellungen verwenden.
Erforderliche Anwendungseinstellungen
- Erforderlich:
- Erforderlich für Elastic Premium- und Verbrauchsplanfunktionen:
Weitere Informationen finden Sie unter Referenz zu App-Einstellungen für Azure Functions.
Anleitungen
- Aktivieren Sie für keine dieser Einstellungen die Option Sloteinstellung. Wenn Sie die Bereitstellungsslots tauschen, wird die Funktions-App beschädigt.
- Ändern Sie diese Einstellungen im Rahmen von automatisierten Bereitstellungen nicht.
- Diese Einstellungen müssen zur Erstellungszeit angegeben werden und gültig sein. Eine automatisierte Bereitstellung, die diese Einstellungen nicht enthält, führt zu einer Funktions-App, die nicht läuft, selbst wenn die Einstellungen später hinzugefügt werden.
Anmeldeinformationen des Speicherkontos sind ungültig
Die oben erwähnten Verbindungszeichenfolgen für Speicherkonten müssen aktualisiert werden, wenn Sie Speicherschlüssel neu erstellen. Weitere Informationen zur Verwaltung von Speicherschlüsseln finden Sie unter Erstellen eines Azure-Speicherkontos.
Kein Zugriff auf das Speicherkonto
Ihre Funktions-App muss auf das Speicherkonto zugreifen können. Häufige Probleme, die den Zugriff einer Funktions-App auf ein Speicherkonto blockieren, sind:
Die Funktions-App wird in Ihrer App Service-Umgebung (ASE) ohne die richtigen Netzwerkregeln bereitgestellt, die Datenverkehr zum und vom Speicherkonto zulassen.
Die Firewall des Speicherkontos ist aktiviert und nicht für das Zulassen von Datenverkehr von und zu Functions konfiguriert. Weitere Informationen finden Sie unter Konfigurieren von Firewalls und virtuellen Netzwerken in Azure Storage.
Vergewissern Sie sich, dass die Einstellung
allowSharedKeyAccess
auftrue
(Standardwert) festgelegt ist. Weitere Informationen finden Sie unter Verhindern der Autorisierung mit gemeinsam verwendeten Schlüsseln für ein Azure Storage-Konto.
Tägliches Ausführungskontingent erreicht
Wenn Sie ein tägliches Ausführungskontingent konfiguriert haben, wird Ihre Funktions-App vorübergehend deaktiviert, was dazu führt, dass viele der Portalsteuerelemente nicht mehr zur Verfügung stehen.
Um das Kontingent im Azure-Portal zu überprüfen, wählen Sie in Ihrer Funktions-App die Option Plattformfeatures>Funktions-App-Einstellungen aus. Wenn Sie das von Ihnen festgelegte tägliche Nutzungskontingent überschreiten, wird die folgende Meldung angezeigt:
„Für die Funktions-App wurde das Kontingent für die tägliche Nutzung erreicht, und die App wurde bis zum nächsten 24-Stunden-Zeitraum beendet.“
Um dieses Problem zu beheben, entfernen oder erhöhen Sie das tägliche Kontingent, und starten Sie Ihre App anschließend neu. Andernfalls wird die Ausführung Ihrer App bis zum nächsten Tag blockiert.
App ist hinter einer Firewall
Es kann einen der folgenden Gründe haben, warum Ihre Funktions-App ggf. nicht erreichbar ist:
Ihre Funktions-App wird in einer App Service-Umgebung mit internem Lastenausgleich gehostet und ist für das Blockieren von eingehendem Datenverkehr aus dem Internet konfiguriert.
Ihre Funktions-App verfügt über IP-Einschränkungen für eingehenden Datenverkehr, für die der Internetzugriff blockiert ist.
Das Azure-Portal sendet Aufrufe direkt an die ausgeführte App, um die Liste mit den Funktionen abzurufen, und führt HTTP-Aufrufe des Kudu-Endpunkts durch. Die Einstellungen auf Plattformebene auf der Registerkarte Plattformfeatures sind weiterhin verfügbar.
So überprüfen Sie die ASE-Konfiguration:
- Navigieren Sie zur Netzwerksicherheitsgruppe (NSG) des Subnetzes, in dem sich die App Service-Umgebung (ASE) befindet.
- Überprüfen Sie die Eingangsregeln, um Datenverkehr über die öffentliche IP-Adresse des Computers zuzulassen, mit dem Sie auf die Anwendung zugreifen.
Sie können das Portal auch auf einem Computer verwenden, der mit dem virtuellen Netzwerk verbunden ist, in dem Ihre App ausgeführt wird, oder auf einem virtuellen Computer, der in Ihrem virtuellen Netzwerk ausgeführt wird.
Weitere Informationen zur Konfiguration der Regeln für eingehenden Datenverkehr finden Sie unter Überlegungen zum Netzwerkbetrieb in einer App Service-Umgebung im Abschnitt „Netzwerksicherheitsgruppen“.
Containerfehler auf Linux
Für Funktions-Apps, die in einem Container ausgeführt werden, kann der Azure Functions runtime is unreachable
-Fehler aufgrund von Problemen mit dem Container auftreten. Verwenden Sie das folgende Verfahren, um die Containerprotokolle auf Fehler zu überprüfen:
Navigieren Sie zum Kudu-Endpunkt für die Funktions-App, der sich unter
https://<FUNCTION_APP>.scm.azurewebsites.net
befindet. Dabei ist<FUNCTION_APP>
der Name Ihrer App.Laden Sie die .zip-Datei der Docker-Protokolle herunter und überprüfen Sie den Inhalt auf Ihrem lokalen Computer.
Überprüfen Sie die Protokolle auf Fehler, die angeben, dass der Container nicht erfolgreich gestartet werden kann.
Containerimage nicht verfügbar
Es können Fehler auftreten, wenn das Containerimage, auf das verwiesen wird, nicht verfügbar ist oder nicht richtig startet. Überprüfen Sie die Protokolle auf Fehler, die angeben, dass der Container nicht erfolgreich gestartet werden kann.
Sie müssen alle Fehler korrigieren, die verhindern, dass der Container für die Funktions-App ordnungsgemäß gestartet wird.
Wenn das Containerimage nicht gefunden werden kann, sehen Sie einen manifest unknown
-Fehler in den Docker-Protokollen. In diesem Fall können Sie die Azure CLI-Befehle verwenden, die unter Einstellen von Runtimeversionen von Azure Functions als Ziel dokumentiert werden, um das Containerimage zu ändern, auf das verwiesen wird. Wenn Sie ein benutzerdefiniertes Containerimage bereitgestellt haben, müssen Sie das Image korrigieren und die aktualisierte Version für die Registrierung erneut bereitstellen, auf die verwiesen wird.
App-Container verfügt über Ports, die miteinander im Konflikt liegen
Ihre Funktions-App ist möglicherweise aufgrund einer konfliktierenden Portzuweisung beim Start in einem unresponsiven Zustand. Dies kann in den folgenden Situationen auftreten:
- Ihr Container verfügt über separate Dienste, die ausgeführt werden, bei denen mindestens ein Dienst an den gleichen Port zu binden versucht wird wie die Funktions-App.
- Sie haben eine Azure-Hybridverbindung hinzugefügt, die den gleichen Portwert wie die Funktions-App hat.
Standardmäßig verwendet der Container, in dem Ihre Funktions-App ausgeführt wird, Port :80
. Wenn andere Dienste im gleichen Container auch versuchen, Port :80
zu verwenden, kann die Funktions-App nicht gestartet werden. Wenn Ihre Protokolle Portkonflikte anzeigen, ändern Sie die Standardports.
Host-ID-Kollision
Ab Version 3.x der Funktions-Runtime wird die Host-ID-Kollision erkannt und als eine Warnung protokolliert. In Version 4.x wird ein Fehler protokolliert und der Host wird beendet. Wenn die Laufzeit für Ihre Funktions-App nicht gestartet werden kann, überprüfen Sie die Protokolle. Wenn es eine Warnung oder einen Fehler bei Host-ID-Kollisionen gibt, führen Sie die Schritte zur Behebung in Host-ID-Überlegungen aus.
Schreibgeschützte App-Einstellungen
Eine Änderung von schreibgeschütztenApp Service-Anwendungseinstellungen kann Ihre Funktions-App in einen nicht erreichbaren Zustand versetzen.
Außerkraftsetzung der Authentifizierung für ASP.NET
Gilt nur für C#-Apps, die prozessintern mit dem Functions-Hostausgeführt werden.
Durch das Konfigurieren der Authentifizierung für ASP.NET in einer Functions-Startklasse können Dienste außer Kraft gesetzt werden, die im Azure-Portal für die Kommunikation mit dem Host erforderlich sind. Das beinhaltet insbesondere Aufrufe von AddAuthentication()
. Wenn die Authentifizierungsdienste des Hosts außer Kraft gesetzt werden und das Portal nicht mit dem Host kommunizieren kann, wird die App als nicht erreichbar betrachtet. Dieses Problem kann zu Fehlern wie diesem führen: No authentication handler is registered for the scheme 'ArmToken'.
.
Nächste Schritte
Weitere Informationen zur Überwachung Ihrer Funktions-Apps: