Azure Functions-Bereitstellungsslots

Azure Functions-Bereitstellungsslots ermöglichen Ihrer Funktions-App das Ausführen verschiedener Instanzen, die als Slots bezeichnet werden. Slots sind verschiedene Umgebungen, die über einen öffentlich verfügbaren Endpunkt verfügbar gemacht werden. Eine App-Instanz wird immer dem Produktionsslot zugeordnet, und Sie können Instanzen, die einem Slot zugewiesen sind, bei Bedarf austauschen. Funktions-Apps, die in einem Verbrauchsplan ausgeführt werden, verfügen über ein einziges zusätzliches Einschubfach für Staging. Sie können weitere Staginglots erhalten, indem Sie Ihre Anwendung in einem Premium-Plan oder Dedicated (App Service) Plan ausführen. Weitere Informationen finden Sie unter Diensteinschränkungen.

Im Folgenden wird dargestellt, wie sich der Austausch von Slots auf Funktionen auswirkt:

  • Die Umleitung des Datenverkehrs erfolgt nahtlos, und es gehen keine Anforderungen aufgrund des Tauschs verloren. Dieses nahtlose Verhalten tritt auf, da der nächste Funktionsauslöser an das vertauschte Einschubfach weitergeleitet wird.
  • Aktuell ausgeführte Funktionen werden während des Austauschs beendet. Wie Sie zustandslose und defensive Funktionen schreiben können, erfahren Sie unter Verbessern der Leistung und Zuverlässigkeit von Azure Functions.

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: Die Verwendung verschiedener Slots bietet Ihnen die Möglichkeit, App-Instanzen vor dem Austauschen in den Produktions- oder einen Stagingslot zu unterscheiden.
  • Vorwärmen: Wenn Sie in einem Slot anstatt direkt in der Produktionsumgebung bereitstellen, können Sie die App vor dem Livebetrieb vorwärmen. Außerdem reduziert die Verwendung von Slots die Latenzzeit 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 in den Produktionsslot überführten Änderungen nicht Ihren Erwartungen entsprechen, können Sie den Austausch sofort wieder umkehren, um Ihre „letzte als funktionierend bekannte 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 Austauschs wird ein Einschubfach als Quelle und das andere als Ziel betrachtet. Der Quellslot enthält die Instanz der Anwendung, die auf den Zielslot angewendet wird. Die folgenden Schritte stellen sicher, dass es beim Zielslot während eines Austauschs zu keinen Ausfallzeiten kommt:

  1. Einstellungen anwenden: Einstellungen aus dem Zielslot werden auf alle Instanzen des Quellslot angewendet. Beispielsweise werden die Produktionseinstellungen auf die Staginginstanz angewendet. 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: Nach erfolgreicher Vorwärmung aller Instanzen im Quellslot schließen die beiden Slots den Austausch ab, indem die Routingregeln ausgetauscht werden. 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.

  • Wenn Sie einen Stagingslot gegen den Produktionsslot austauschen möchten, muss der Produktionsslot immer der Zielslot sein. So ist sichergestellt, dass Ihre Produktions-App durch den Austauschvorgang nicht beeinträchtigt wird.

  • Einstellungen im Zusammenhang mit Ereignisquellen und Bindungen müssen als Bereitstellungssloteinstellungen konfiguriert werden, bevor Sie einen Austausch starten. Wenn Sie vorzeitig als „sticky“ (persistent) markiert werden, wird sichergestellt, dass Ereignisse und Ausgaben an die richtige Instanz weitergeleitet werden.

Verwalten von Einstellungen

Einige Konfigurationseinstellungen sind slotspezifisch. In den nachstehenden Listen finden Sie die Einstellungen, die sich beim Austauschen von Slots ändern und die unverändert bleiben.

Slotspezifische Einstellungen:

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

Nicht slotspezifische Einstellungen:

  • Allgemeine Einstellungen (z. B. Framework-Version, 32/64-Bit-Angabe, WebSockets)
  • 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 ebenfalls nicht ausgetauscht. Da die Diagnoseprotokolleinstellungen beispielsweise nicht ausgetauscht werden, werden verwandte App-Einstellungen wie WEBSITE_HTTPLOGGING_RETENTION_DAYS und DIAGNOSTICS_AZUREBLOBRETENTIONDAYS ebenfalls nicht ausgetauscht, auch wenn Sie nicht als Sloteinstellungen 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 Sie eine Bereitstellungseinstellung in einem Slot erstellen, achten Sie darauf, dass Sie dieselbe Einstellung mit einem eindeutigen Wert in allen anderen Slots erstellen, die an einem Austausch beteiligt sind. 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. Navigieren Sie in der Funktions-App zu Bereitstellungsslots, und wählen Sie dann den Slotnamen aus.

    Find slots in the 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.

    Configure the application setting for a slot in the Azure portal.

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

    Configure the deployment slot setting.

  4. Sobald der Abschnitt mit den Einstellungen nicht mehr angezeigt wird, wählen Sie Speichern aus, um die Änderungen beizubehalten.

    Save the deployment slot setting.

Bereitstellung

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

Skalierung

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 zu vorhandenen Slots entweder über die Azure CLI oder über das Azure-Portal anzeigen.

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

  1. Navigieren Sie zu Ihrer Funktions-App.

  2. Wählen Sie Bereitstellungsslots aus und die vorhandenen Slots werden angezeigt.

Hinzufügen eines Slots

Sie können einen Slot entweder über die Azure CLI oder über das Azure-Portal hinzufügen.

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

  1. Navigieren Sie zu Ihrer Funktions-App.

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

    Add Azure Functions deployment slot.

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

    Name the Azure Functions deployment slot.

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

Sie können Slots in und außerhalb der Produktion entweder über die Azure CLI oder über das Azure-Portal austauschen.

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

  1. Navigieren Sie zur Funktionen-App.

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

    Screenshot that shows the 'Deployment slot' page with the 'Add Slot' action selected.

  3. Überprüfen Sie die Konfigurationseinstellungen für den Austausch, und wählen Sie dann Austauschen aus.

    Swap the deployment slot.

Der Tauschvorgang kann einige Sekunden dauern.

Ausführen eines Rollbacks für einen Austausch

Wenn ein Austausch zu einem Fehler führt oder Sie einen Austausch einfach „rückgängig“ machen möchten, können Sie ein Rollback auf den ursprünglichen Zustand ausführen. 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

Sie können einen Slot entweder über die Azure CLI oder über das Azure-Portal entfernen.

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

  1. Navigieren Sie in der Funktions-App zu Bereitstellungsslots, und wählen Sie dann den Slotnamen aus.

    Find slots in the Azure portal.

  2. Klicken Sie auf Löschen.

    Screenshot that shows the 'Overview' page with the 'Delete' action selected.

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

    Delete the deployment slot in the Azure portal.

  4. Schließen Sie den Bestätigungsbereich.

    Deployment slot delete confirmation.

Ändern des App Service-Plans

Bei einer Funktions-App, die in einem App Service-Plan ausgeführt wird, können Sie den zugrunde liegenden App Service-Plan für einen Slot zu ändern.

Hinweis

Unter einem Verbrauch-Plan können Sie den App Service-Plan eines Slots nicht ändern.

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

  1. Navigieren Sie in der Funktions-App zu Bereitstellungsslots, und wählen Sie dann den Slotnamen aus.

    Find slots in the 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.

    Change the App Service plan in the Azure portal.

  4. Klickan 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. Im Verbrauch-Plan ist nur ein Bereitstellungsslot zulässig. 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 Slots aktiviert sind, wird Ihre Funktions-App im Portal auf den schreibgeschützten Modus festgelegt.
  • Slotaustausch können fehlschlagen, wenn deine Funktions-App ein gesichertes Speicherkonto als Standard-Speicherkonto verwendet (eingestellt 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, bieten die Gefahr, Host-ID-Kollisionen zu verursachen.

Nächste Schritte