Azure Functions-Bereitstellungsslots

Bei Hosting-Plänen, die Deployment-Slots unterstützen, kann deine Funktions-App separate Instanzen ausführen, sogenannte Slots. Jeder Slot ist eine separate Umgebung mit eigenem Host-Namen. Der Zugriff auf den Endpunkt eines Slots hängt von den Netzwerk- und Zugriffsbeschränkungen ab, die du für diesen Slot einstellst. Ein Slot ist immer der Produktions-Slot, und du kannst einen verfügbaren Staging-Slot bei Bedarf gegen den Produktions-Slot austauschen.

Die Anzahl der verfügbaren Slots hängt von Ihrem Hostingplan ab.

Hostingoption Slots (einschließlich Produktion)
Verbrauchstarif 2 (ein Produktionsplatz und ein Inszenierungsplatz)
Flex-Verbrauchsplan Wird derzeit nicht unterstützt. Informationen zu Bereitstellungen ohne Ausfallzeiten finden Sie unter Strategien für Websiteupdates in Flex Consumption.
Premium-Plan 3
Dedizierter (App Service-) Plan 1–20
Azure Container Apps Bereitstellungsslots finden keine Anwendung. Verwenden Sie Überarbeitungen.

Wählen Sie Ihren Hosting-Plan oben in diesem Artikel aus, um die für Ihre Arbeits-App geltenden Tipps zu sehen.

Ohne Slots auf Flex Consumption bereitstellen

Der Flex Consumption-Plan unterstützt keine Deployment-Slots. Für kontrollierte Releases und Bereitstellungen ohne Ausfallzeiten verwenden Sie rollierende Updates als Site-Update-Strategie.

Bereitstellen mit Revisionen in Azure Container Apps

Azure Functions auf Azure Container Apps verwendet keine Deployment-Slots. Verwenden Sie Revisionen , um den Datenverkehr zwischen Versionen Ihrer Funktionsanwendung zu verwalten und zu leiten.

Bei den Consumption-, Premium- und Dedicated-Tarifen verhalten sich die Bereitstellungsslots wie folgt:

  • Während des Routing-Wechsels werden neue Funktionstriggeraufrufe an den getauschten Slot geroutet, ohne dass ein expliziter Anwendungsstart erforderlich ist.
  • Slot-Swaps garantieren keine Ausfallzeit von null. Derzeit ausgeführte Funktionen können beendet werden, und bei skalierten Apps kann es während Slottauschvorgängen zu eingeschränkter Verfügbarkeit kommen. Wie Sie zustandslose und defensive Funktionen schreiben können, erfahren Sie unter Verbessern der Leistung und Zuverlässigkeit von Azure Functions. Wenn Bereitstellungen ohne Ausfallzeiten eine Anforderung sind, sollten Sie den Flex-Verbrauchsplan mit rollierenden Updates als Standortupdatestrategie in Betracht ziehen.

Gründe für die Verwendung von Slots

Es gibt viele Vorteile bei der Verwendung von Bereitstellungsslots, unter anderem:

  • Verschiedene Umgebungen für unterschiedliche Zwecke: Durch die Verwendung verschiedener Slots kann man App-Instanzen unterscheiden, bevor man auf Production oder einen Staging-Slot wechselt.
  • Vorwärmen: Deploye in einen Slot statt direkt in die Produktion, um die App vor dem Start aufzuwärmen. Außerdem reduziert die Nutzung von Slots die Latenz für HTTP-ausgelöste Workloads. Instanzen werden vor der Bereitstellung vorgewärmt, wodurch sich der Kaltstart bei neu bereitgestellten Funktionen verkürzt.
  • Einfache Fallbacks: Nach einem Austausch mit der Produktion enthält der Slot mit der vorherigen Staging-App die vorherige Produktions-App. Wenn die Änderungen, die du in den Produktionsslot getauscht hast, nicht deinen Erwartungen entsprechen, kannst du den Tausch sofort rückgängig machen, um deine „zuletzt bekannte funktionierende Instanz“ wiederherzustellen.
  • Minimieren Sie Neustarts: Ändern von App-Einstellungen in einem Produktionsplatz erfordert einen Neustart der ausgeführten App. Sie können stattdessen Einstellungen in einem Stagingslot ändern und die Einstellungsänderung mit einer vorgewärmten Instanz in die Produktion übertragen. Einschubfächer (Slots) sind der empfohlene Weg, um zwischen den Laufzeitversionen von Functions zu migrieren und dabei die höchste Verfügbarkeit zu gewährleisten. Weitere Informationen finden Sie unter Minimale Downtime Update.

Austauschvorgänge

Während eines Swaps ist ein Slot die Quelle und der andere das Ziel. Der Quellslot enthält die Instanz der Anwendung, die du auf den Ziel-Slot anwendest. Die folgenden Schritte tragen dazu bei, die Ausfallzeiten für den Zielplatz während eines Tauschs zu reduzieren:

  1. Einstellungen anwenden: Einstellungen vom Zielslot auf alle Instanzen des Quellslots anwenden. Übertragen Sie zum Beispiel die Produktionseinstellungen auf die Staging-Instanz. Die angewendeten Einstellungen umfassen die folgenden Kategorien:

  2. Warten auf Neustarts und Verfügbarkeit: Der Austausch wartet, bis jede Instanz im Quellslot ihren Neustart abgeschlossen hat und für Anforderungen verfügbar ist. Sollte eine Instanz nicht erfolgreich neu gestartet werden, werden sämtliche Änderungen am Quellslot zurückgesetzt, und der Austauschvorgang wird beendet.

  3. Routing aktualisieren: Wenn alle Instanzen im Quellslot erfolgreich aufwärmen, schließen die beiden Slots den Tausch durch Wechsel der Routing-Regeln ab. Nach diesem Schritt verfügt das Zielslot (zum Beispiel das Produktionsslot) über die Anwendung, die zuvor im Quellslot vorbereitet wurde.

  4. Wiederholen Sie den Vorgang: Nachdem der Quellslot nun die Anwendung vor dem Austausch enthält, die sich zuvor im Zielslot befand, führen Sie den gleichen Vorgang erneut aus, indem alle Einstellungen angewendet und die Instanzen für den Quellslot neu gestartet werden.

Berücksichtigen Sie dabei Folgendes:

  • In jeder Phase des Austauschvorgangs erfolgt die Initialisierung der ausgetauschten Apps im Quellslot. Der Zielslot bleibt während der gesamten Vorbereitung des Quellslots online – unabhängig davon, ob der Austausch erfolgreich ist oder nicht.

  • Um einen Staging-Slot mit dem Produktions-Slot zu tauschen, stellen Sie sicher, dass der Produktions-Slot immer der Ziel-Slot ist. So ist sichergestellt, dass Ihre Produktions-App durch den Austauschvorgang nicht beeinträchtigt wird.

  • Konfigurieren Sie Einstellungen zu Ereignisquellen und Bindungen als Deployment-Slot-Einstellungen,bevor Sie einen Swap starten. Wenn Sie vorzeitig als „sticky“ (persistent) markiert werden, wird sichergestellt, dass Ereignisse und Ausgaben an die richtige Instanz weitergeleitet werden.

  • Wenn Sie einen neuen Stagingslot erstellen, übernimmt das Portal alle vorhandenen Einstellungen aus dem Produktionsslot in den neuen Slot, unabhängig von der Slotbindung der Einstellung.

Verwalten von Einstellungen

Einige Konfigurationseinstellungen sind spezifisch für einen Slot. Die folgenden Listen beschreiben, welche Einstellungen sich beim Platzwechsel ändern und welche gleich bleiben.

Slotspezifische Einstellungen:

  • Veröffentlichungsendpunkte
  • Benutzerdefinierte Domänennamen
  • Nicht-öffentliche Zertifikate und TLS/SSL-Einstellungen
  • Skalierungseinstellungen
  • IP-Einschränkungen
  • Immer eingeschaltet
  • Diagnoseeinstellungen
  • Ressourcenfreigabe zwischen verschiedenen Ursprüngen (Cross-Origin Resource Sharing, CORS)
  • Private Endpunkte

Nicht slotspezifische Einstellungen:

  • Allgemeine Einstellungen, wie Framework-Version, 32/64-Bit und Web-Sockets
  • App-Einstellungen (können so konfiguriert werden, dass sie beim Slot verbleiben)
  • Verbindungszeichenfolgen (können so konfiguriert werden, dass sie beim Slot verbleiben)
  • Handlerzuordnungen
  • Öffentliche Zertifikate
  • Hybridverbindungen *
  • Virtual Network-Integration*
  • Dienstendpunkte*
  • Azure Content Delivery Network*

Funktionen, die mit einem Sternchen (*) gekennzeichnet sind, werden standardmäßig nicht ausgetauscht.

Hinweis

Bestimmte App-Einstellungen, die für nicht ausgetauschte Einstellungen gelten, werden nicht ausgetauscht. Zum Beispiel, da die Diagnoseeinstellungen nicht getauscht sind, werden verwandte App-Einstellungen wie WEBSITE_HTTPLOGGING_RETENTION_DAYS und DIAGNOSTICS_AZUREBLOBRETENTIONDAYS nicht getauscht, auch wenn sie nicht als Slot-Einstellungen angezeigt werden.

Erstellen einer Bereitstellungseinstellung

Sie können Einstellungen als Bereitstellungseinstellungen markieren, wodurch sie dauerhaft gelten. Eine persistente (sticky) Einstellung wird nicht zusammen mit der App-Instanz ausgetauscht.

Wenn du eine Deployment-Einstellung in einem Slot erstellst, stelle sicher, dass du dieselbe Einstellung mit einem einzigartigen Wert in jedem anderen Slot, der an einem Swap beteiligt ist, anfertigst. Auf diese Weise bleiben die Einstellungsnamen zwischen Slots konsistent, während sich der Wert einer Einstellung nicht ändert. Diese Namenskonsistenz stellt sicher, dass Ihr Code nicht versucht, auf eine Einstellung zuzugreifen, die in einem Slot definiert ist, in einem anderen aber nicht.

Führen Sie die folgenden Schritte aus, um eine Bereitstellungseinstellung zu erstellen:

  1. Gehe in der Funktions-App zu Deployment-Slots und wähle dann den Slot-Namen aus.

    Screenshot der Bereitstellungsplätze im Azure-Portal.

  2. Wählen Sie Konfiguration aus, und wählen Sie den Namen der Einstellung aus, die für den aktuellen Slot persistent sein soll.

    Screenshot zeigt, wo die Anwendungseinstellung für einen Steckplatz im Azure-Portal konfiguriert werden soll.

  3. Wählen Sie Bereitstellungssloteinstellung aus, und wählen Sie dann OK aus.

    Screenshot zeigt, wo die Bereitstellungsplatzeinstellung konfiguriert werden soll.

  4. Nachdem der Einstellungsbereich geschlossen ist, wähle Speichern , um die Änderungen beizubehalten.

    Screenshot zeigt, wie die Einstellung für den Bereitstellungsplatz gespeichert wird.

Deploye eine App an einen Slot

Slots sind leer, wenn Sie einen Slot erstellen. Sie können jede der unterstützten Bereitstellungstechnologien verwenden, um Ihre Anwendung in einem Slot bereitzustellen.

Wie Bereitstellungsslots skalieren

Alle Slots werden auf dieselbe Anzahl von Workern wie der Produktionsslot skaliert.

  • Bei Verbrauch-Plänen wird der Slot analog der App skaliert.
  • Bei App Service-Plänen wird die App auf eine feste Anzahl von Workern skaliert. Slots werden auf derselben Anzahl von Workern wie der App-Plan ausgeführt.

Anzeigen von Slots

Sie können Informationen über bestehende Slots entweder über die Azure CLI oder das Azure Portal einsehen.

Verwenden Sie diese Schritte, um vorhandene Slots im Portal anzuzeigen:

  1. Gehen Sie zu Ihrer Function App.

  2. Wähle Deployment-Slots und sieh dir die bestehenden Slots an.

Hinzufügen eines Slots

Du kannst einen Slot hinzufügen, indem du entweder die Azure CLI oder das Azure-Portal nutzt.

Führen Sie die folgenden Schritte aus, um einen Slot im Portal zu erstellen:

  1. Gehen Sie zu Ihrer Function App.

  2. Wählen Sie Bereitstellungsslots aus, und wählen Sie dann + Slot hinzufügen aus.

    Screenshot zeigt das Hinzufügen eines Bereitstellungsplatzes für Azure Functions.

  3. Geben Sie den Namen des Slots ein, und wählen Sie dann Hinzufügen aus.

    Screenshot zeigt die Benennung des Bereitstellungsplatzes für Azure Functions.

Sie können auch einen Slot erstellen, indem Sie Azure Resource Manager (ARM)-Vorlagen oder Bicep-Dateien verwenden. Ein Beispiel zum Erstellen einer Funktions-App in einem Verbrauchsplan mit einem Bereitstellungsplatz finden Sie in dieser Azure Resource Manager-Schnellstartanleitung.

Zugriff auf Slotressourcen

Der Zugriff auf Ressourcen (HTTP-Trigger und Administratorendpunkte) in einem Stagingslot erfolgt auf die gleiche Weise wie im Produktionsslot. Anstelle des Hostnamens der Funktions-App verwenden Sie jedoch den slotspezifischen Hostnamen in der Anforderungs-URL zusammen mit beliebigen slotspezifischen Schlüsseln. Da Stagingslots Live-Apps sind, müssen Sie Ihre Funktionen in einem Stagingslot genau wie im Produktionsslot sichern.

Austauschen von Slots

Du kannst die Slots in und aus der Produktion tauschen, indem du entweder die Azure CLI oder das Azure-Portal nutzt.

Gehen Sie folgendermaßen vor, um einen Stagingslot in die Produktion zu überführen:

  1. Navigieren Sie zur Funktions-App.

  2. Wählen Sie Bereitstellungssloteinstellung aus, und wählen Sie dann Austauschen aus.

    Screenshot, der die Seite des Bereitstellungsslots mit ausgewählter Aktion „Slot hinzufügen“ zeigt.

  3. Überprüfen Sie die Konfigurationseinstellungen für den Tausch, und wählen Sie "Tauschen" aus.

    Screenshot: Austausch des Bereitstellungsslots

Der Tauschvorgang kann einige Sekunden dauern.

Ausführen eines Rollbacks für einen Austausch

Wenn ein Swap zu einem Fehler führt oder du einen Swap rückgängig machen willst, kannst du in den Anfangszustand zurücksetzen. Um zum Zustand vor dem Austausch zurückzukehren, führen Sie einen weiteren Austausch aus, um den Austausch rückgängig zu machen.

Entfernen eines Slots

Du kannst einen Slot entweder mit der Azure CLI oder dem Azure-Portal entfernen.

Führen Sie die folgenden Schritte aus, um einen Slot aus Ihrer Anwendung im Portal zu entfernen:

  1. Gehe in der Funktions-App zu Deployment-Slots und wähle dann den Slot-Namen aus.

    Screenshot der Seite, auf der Sie Slots im Azure-Portal finden.

  2. Klicken Sie auf Löschen.

    Screenshot, der die Übersichtsseite mit der Aktion Löschen zeigt.

  3. Geben Sie den Namen des Bereitstellungsslots ein, den Sie löschen möchten, und wählen Sie dann Löschen aus.

    Screenshot zeigt das Löschen des Bereitstellungsplatzes im Azure-Portal.

  4. Schließen Sie den Bestätigungsbereich.

    Screenshot: Löschbestätigung des Bereitstellungsslots

Ändern des App Service-Plans

Mit einer Funktions-App, die unter einem App-Service-Plan läuft, kannst du den zugrundeliegenden App-Service-Plan für einen Slot ändern.

Führen Sie die folgenden Schritte aus, um den App Service-Plan eines Slots zu ändern:

  1. Gehe in der Funktions-App zu Deployment-Slots und wähle dann den Slot-Namen aus.

    Screenshot der Slots im Azure-Portal.

  2. Wählen Sie unter App Service-Plan die Option App Service-Plan ändern aus.

  3. Wählen Sie den Plan aus, auf den Sie ein Upgrade durchführen möchten, oder erstellen Sie einen neuen Plan.

    Screenshot zeigt, wo der App Service-Plan im Azure-Portal geändert werden soll.

  4. Klicken Sie auf OK.

Überlegungen

Für Azure Functions-Bereitstellungsslots sollte Folgendes berücksichtigt werden:

  • Die Anzahl der für einen App verfügbaren Slots hängt vom Plan ab. Der Konsumplan unterstützt insgesamt zwei Slots: den Produktionsslot und einen Stagingslot. Für Anwendungen, die unter anderen Plänen laufen, sind weitere Slots verfügbar. In den Einschränkungen für Dienste finden Sie weitere Informationen.
  • Durch den Austausch eines Slots werden Schlüssel für Apps zurückgesetzt, die über eine App-Einstellung für AzureWebJobsSecretStorageType von files verfügen.
  • Wenn du Slots aktivierst, stellt das Portal deine Funktions-App auf Schreib-nur-Modus.
  • Slot-Swaps könnten scheitern, wenn deine Funktions-App ein gesichertes Speicherkonto als Standardspeicherkonto verwendet (gesetzt in AzureWebJobsStorage). Weitere Informationen finden Sie in der Referenz zu WEBSITE_OVERRIDE_STICKY_DIAGNOSTICS_SETTINGS.
  • Verwenden Sie Funktions-App-Namen, die kürzer als 32 Zeichen sind. Namen, die länger als 32 Zeichen sind, können zu Kollisionen der Host-ID führen.

Nächste Schritte