Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
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:
- Slotspezifische App-Einstellungen und Verbindungszeichenfolgen (sofern zutreffend)
- Einstellungen für Continuous Deployment (sofern aktiviert)
- Einstellungen für die App Service-Authentifizierung (sofern aktiviert)
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.
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.
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:
Gehe in der Funktions-App zu Deployment-Slots und wähle dann den Slot-Namen aus.
Wählen Sie Konfiguration aus, und wählen Sie den Namen der Einstellung aus, die für den aktuellen Slot persistent sein soll.
Wählen Sie Bereitstellungssloteinstellung aus, und wählen Sie dann OK aus.
Nachdem der Einstellungsbereich geschlossen ist, wähle Speichern , um die Änderungen beizubehalten.
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:
Gehen Sie zu Ihrer Function App.
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:
Gehen Sie zu Ihrer Function App.
Wählen Sie Bereitstellungsslots aus, und wählen Sie dann + Slot hinzufügen aus.
Geben Sie den Namen des Slots ein, und wählen Sie dann Hinzufügen aus.
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:
Navigieren Sie zur Funktions-App.
Wählen Sie Bereitstellungssloteinstellung aus, und wählen Sie dann Austauschen aus.
Überprüfen Sie die Konfigurationseinstellungen für den Tausch, und wählen Sie "Tauschen" aus.
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:
Gehe in der Funktions-App zu Deployment-Slots und wähle dann den Slot-Namen aus.
Klicken Sie auf Löschen.
Geben Sie den Namen des Bereitstellungsslots ein, den Sie löschen möchten, und wählen Sie dann Löschen aus.
Schließen Sie den Bestätigungsbereich.
Ä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:
Gehe in der Funktions-App zu Deployment-Slots und wähle dann den Slot-Namen aus.
Wählen Sie unter App Service-Plan die Option App Service-Plan ändern aus.
Wählen Sie den Plan aus, auf den Sie ein Upgrade durchführen möchten, oder erstellen Sie einen neuen Plan.
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
AzureWebJobsSecretStorageTypevonfilesverfü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 zuWEBSITE_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.