Einrichten von Stagingumgebungen in Azure App ServiceSet up staging environments in Azure App Service

Im Tarif Standard, Premium oder I des App Service-Plans können Sie für die Bereitstellung Ihrer Web-App, Ihrer Web-App unter Linux, Ihres mobilen Back-Ends oder Ihrer API-App in Azure App Service anstelle des Standardproduktionsslots einen separaten Bereitstellungsslot verwenden.When you deploy your web app, web app on Linux, mobile back end, or API app to Azure App Service, you can use a separate deployment slot instead of the default production slot when you're running in the Standard, Premium, or Isolated App Service plan tier. Bereitstellungsslots sind aktive Apps mit eigenen Hostnamen.Deployment slots are live apps with their own host names. Elemente für App-Inhalte und -Konfigurationen können zwischen zwei Bereitstellungsslots, einschließlich des Produktionsslots, ausgetauscht werden.App content and configurations elements can be swapped between two deployment slots, including the production slot.

Die Bereitstellung von Anwendungen in einem produktionsfremden Slot hat folgende Vorteile:Deploying your application to a non-production slot has the following benefits:

  • Sie können App-Änderungen in einem Stagingbereitstellungsslot überprüfen, bevor Sie die App in den Produktionsslot überführen.You can validate app changes in a staging deployment slot before swapping it with the production slot.
  • Wenn Sie eine App zuerst in einem Slot bereitstellen und dann in den Produktionsslot überführen, ist sichergestellt, dass alle Instanzen erst nach einer Anlaufzeit in den Produktionsslot übernommen werden.Deploying an app to a slot first and swapping it into production makes sure that all instances of the slot are warmed up before being swapped into production. Dadurch vermeiden Sie Ausfallzeiten bei der Bereitstellung der App.This eliminates downtime when you deploy your app. Die Umleitung des Datenverkehrs erfolgt übergangslos, und es gehen keine Anforderungen aufgrund des Tauschs verloren.The traffic redirection is seamless, and no requests are dropped because of swap operations. Der gesamte Workflow kann durch Konfigurieren von Automatisch tauschen automatisiert werden, wenn keine Überprüfung vor dem Tausch erforderlich ist.You can automate this entire workflow by configuring auto swap when pre-swap validation isn't needed.
  • Nach der Überführung enthält der Slot mit der vorherigen Staging-App die vorherige Produktions-App.After a swap, the slot with previously staged app now has the previous production app. Wenn die in den Produktionsslot überführten Änderungen nicht Ihren Erwartungen entsprechen, können Sie den gleichen Tausch sofort noch einmal vornehmen, um Ihre „letzte als funktionierend bekannte Website“ zurückzuerhalten.If the changes swapped into the production slot aren't as you expect, you can perform the same swap immediately to get your "last known good site" back.

Jeder App Service-Plantarif unterstützt eine andere Anzahl von Bereitstellungsslots.Each App Service plan tier supports a different number of deployment slots. Für die Nutzung von Bereitstellungsslots fallen keine zusätzlichen Gebühren an.There's no additional charge for using deployment slots. Informationen zur unterstützten Slotanzahl in Ihrem App-Tarif finden Sie unter App Service-Grenzwerte.To find out the number of slots your app's tier supports, see App Service limits.

Wenn Sie Ihre App auf einen anderen Tarif skalieren möchten, muss der Zieltarif die Anzahl von Slots unterstützen, die Ihre App bereits verwendet.To scale your app to a different tier, make sure that the target tier supports the number of slots your app already uses. Falls Ihre App also beispielsweise mehr als fünf Slots besitzt, können Sie sie nicht auf den Tarif Standard herunterskalieren, da der Tarif Standard nur fünf Bereitstellungsslots unterstützt.For example, if your app has more than five slots, you can't scale it down to the Standard tier, because the Standard tier supports only five deployment slots.

Hinzufügen eines SlotsAdd a slot

Die App muss im Tarif Standard, Premium oder I ausgeführt werden, um mehrere Bereitstellungsslots aktivieren zu können.The app must be running in the Standard, Premium, or Isolated tier in order for you to enable multiple deployment slots.

  1. Öffnen Sie im Azure-Portal die Seite Ressourcen Ihrer App.In the Azure portal, open your app's resource page.

  2. Wählen Sie im linken Bereich Bereitstellungsslots > Slot hinzufügen aus.In the left pane, select Deployment slots > Add Slot.

    Neuen Bereitstellungsslot hinzufügen

    Hinweis

    Wenn die App nicht bereits im Tarif Standard, Premium oder I ausgeführt wird, wird eine Meldung angezeigt, in der auf die unterstützten Tarife für die Veröffentlichung in einer Stagingumgebung hingewiesen wird.If the app isn't already in the Standard, Premium, or Isolated tier, you receive a message that indicates the supported tiers for enabling staged publishing. An diesem Punkt können Sie Upgrade auswählen und zur Registerkarte Skalierung der App navigieren, bevor Sie den Vorgang fortsetzen.At this point, you have the option to select Upgrade and go to the Scale tab of your app before continuing.

  3. Weisen Sie dem Slot im Dialogfeld Slot hinzufügen einen Namen zu, und wählen Sie aus, ob Sie die App-Konfiguration eines anderen Bereitstellungsslots klonen möchten.In the Add a slot dialog box, give the slot a name, and select whether to clone an app configuration from another deployment slot. Wählen Sie Hinzufügen aus, um den Vorgang fortzusetzen.Select Add to continue.

    Konfigurationsquelle

    Sie können die Konfiguration eines beliebigen bereits vorhandenen Slots klonen.You can clone a configuration from any existing slot. Zu den Einstellungen, die geklont werden können, zählen App-Einstellungen, Verbindungszeichenfolgen, Sprachframework-Versionen, Websockets, die HTTP-Version und die Bitanzahl der Plattform.Settings that can be cloned include app settings, connection strings, language framework versions, web sockets, HTTP version, and platform bitness.

  4. Wählen Sie nach dem Hinzufügen des Slots Schließen aus, um das Dialogfeld zu schließen.After the slot is added, select Close to close the dialog box. Der neue Slot wird nun auf der Seite Bereitstellungsslots angezeigt.The new slot is now shown on the Deployment slots page. Datenverkehr % ist für den neuen Slot standardmäßig auf „0“ festgelegt, sodass der gesamte Kundendatenverkehr an den Produktionsslot weitergeleitet wird.By default, Traffic % is set to 0 for the new slot, with all customer traffic routed to the production slot.

  5. Wählen Sie den neuen Bereitstellungsslot aus, um die Ressourcenseite dieses Slots zu öffnen.Select the new deployment slot to open that slot's resource page.

    Titel des Bereitstellungsslots

    Der Stagingslot verfügt genau wie jede andere App Service-App über eine Verwaltungsseite.The staging slot has a management page just like any other App Service app. Sie können die Konfiguration des Slots ändern.You can change the slot's configuration. Am oberen Seitenrand wird der Name des Slots angezeigt, um Sie daran zu erinnern, dass es sich um den Bereitstellungsslot handelt.The name of the slot is shown at the top of the page to remind you that you're viewing the deployment slot.

  6. Wählen Sie auf der Ressourcenseite des Slots die App-URL aus.Select the app URL on the slot's resource page. Der Bereitstellungsslot besitzt einen eigenen Hostnamen und ist außerdem eine Live-App.The deployment slot has its own host name and is also a live app. Informationen zum Beschränken des öffentlichen Zugriffs auf den Bereitstellungsslot finden Sie unter Statische Azure App Service-IP-Einschränkungen.To limit public access to the deployment slot, see Azure App Service IP restrictions.

Der neue Bereitstellungsslot hat keinen Inhalt. Das gilt auch, wenn Sie die Einstellungen eines anderen Slots klonen.The new deployment slot has no content, even if you clone the settings from a different slot. Sie können beispielsweise Git verwenden, um etwas in diesem Slot zu veröffentlichen.For example, you can publish to this slot with Git. Die Bereitstellung im Slot kann aus einem anderen Repository-Branch oder aus einem anderen Repository erfolgen.You can deploy to the slot from a different repository branch or a different repository.

Was geschieht bei einem Austausch?What happens during a swap

Schritte bei einem AustauschSwap operation steps

Wenn Sie zwei Slots austauschen (in der Regel, um aus einem Stagingslot einen Produktionsslot zu machen), werden folgende Schritte ausgeführt, um Downtime im Zielslot zu verhindern:When you swap two slots (usually from a staging slot into the production slot), App Service does the following to ensure that the target slot doesn't experience downtime:

  1. App Service wendet die folgenden Einstellungen aus dem Zielslot (also beispielsweise dem Produktionsslot) auf alle Instanzen des Quellslot an:Apply the following settings from the target slot (for example, the production slot) to all instances of the source slot:

    In jedem dieser Fälle wird ein Neustart aller Instanzen im Quellslot ausgelöst.Any of these cases trigger all instances in the source slot to restart. Beim Austauschen mit Vorschau ist dies das Ende der ersten Phase.During swap with preview, this marks the end of the first phase. Der Austauschvorgang wird angehalten, und Sie können sich vergewissern, dass der Quellslot mit den Einstellungen des Zielslots ordnungsgemäß funktioniert.The swap operation is paused, and you can validate that the source slot works correctly with the target slot's settings.

  2. App Service wartet, bis jede Instanz im Quellslot neu gestartet wurde.Wait for every instance in the source slot to complete its restart. Sollte eine Instanz nicht erfolgreich neu gestartet werden, werden sämtliche Änderungen am Quellslot zurückgesetzt, und der Austauschvorgang wird beendet.If any instance fails to restart, the swap operation reverts all changes to the source slot and stops the operation.

  3. Wenn lokaler Cache aktiviert ist, löst App Service die Initialisierung des lokalen Caches aus. Hierzu wird eine HTTP-Anforderung an den Anwendungsstamm („/“) in jeder Instanz des Quellslots gerichtet.If local cache is enabled, trigger local cache initialization by making an HTTP request to the application root ("/") on each instance of the source slot. Daraufhin wird gewartet, bis die einzelnen Instanzen eine HTTP-Antwort zurückgeben.Wait until each instance returns any HTTP response. Die Initialisierung des lokalen Caches hat einen weiteren Neustart der einzelnen Instanzen zur Folge.Local cache initialization causes another restart on each instance.

  4. Wenn Automatisch tauschen mit benutzerdefinierter Aufwärmphase aktiviert ist, löst App Service die Anwendungsinitiierung aus. Hierzu wird eine HTTP-Anforderung an den Anwendungsstamm („/“) in jeder Instanz des Quellslots gerichtet.If auto swap is enabled with custom warm-up, trigger Application Initiation by making an HTTP request to the application root ("/") on each instance of the source slot.

    Ohne Angabe von applicationInitialization löst App Service eine HTTP-Anforderung an den Anwendungsstamm des Quellslots in jeder Instanz aus.If applicationInitialization isn't specified, trigger an HTTP request to the application root of the source slot on each instance.

    Wenn eine Instanz eine HTTP-Antwort zurückgibt, wird sie vorbereitet betrachtet.If an instance returns any HTTP response, it's considered to be warmed up.

  5. Nach erfolgreicher Vorbereitung aller Instanzen im Quellslot vertauscht App Service die Routingregeln der beiden Slots, um die beiden Slots auszutauschen.If all instances on the source slot are warmed up successfully, swap the two slots by switching the routing rules for the two slots. Nach diesem Schritt befindet sich die App, die zuvor im Quellslot vorbereitet wurde, im Zielslot (also beispielsweise im Produktionsslot).After this step, the target slot (for example, the production slot) has the app that's previously warmed up in the source slot.

  6. Nachdem der Quellslot nun die App vor dem Austausch enthält, die sich zuvor im Zielslot befand, führt App Service den gleichen Vorgang erneut aus (also Anwenden aller Einstellungen und Neustarten der Instanzen).Now that the source slot has the pre-swap app previously in the target slot, perform the same operation by applying all settings and restarting the instances.

In jeder Phase des Austauschvorgangs finden sämtliche Vorgänge zur Initialisierung der ausgetauschten Apps im Quellslot statt.At any point of the swap operation, all work of initializing the swapped apps happens on the source slot. Der Zielslot bleibt während der gesamten Vorbereitung des Quellslots online – unabhängig davon, ob der Austausch erfolgreich ist.The target slot remains online while the source slot is being prepared and warmed up, regardless of where the swap succeeds or fails. Wenn Sie einen Stagingslot und den Produktionsslot austauschen möchten, muss der Produktionsslot immer der Zielslot sein.To swap a staging slot with the production slot, make sure that the production slot is always the target slot. So ist sichergestellt, dass Ihre Produktions-App durch den Austauschvorgang nicht beeinträchtigt wird.This way, the swap operation doesn't affect your production app.

Welche Einstellungen werden ausgetauscht?Which settings are swapped?

Wenn Sie die Konfiguration von einem anderen Bereitstellungsslot klonen, kann die geklonte Konfiguration bearbeitet werden.When you clone configuration from another deployment slot, the cloned configuration is editable. Bei einem Austausch werden einige Konfigurationselemente zusammen mit dem Inhalt überführt (nicht slotspezifisch), während andere Konfigurationselemente nach einem Austausch im gleichen Slot verbleiben (slotspezifisch).Some configuration elements follow the content across a swap (not slot specific), whereas other configuration elements stay in the same slot after a swap (slot specific). Im Anschluss sind die Einstellungen aufgeführt, die sich beim Austauschen der Slots ändert.The following lists show the settings that change when you swap slots.

Einstellungen, die ausgetauscht werden:Settings that are swapped:

  • Allgemeine Einstellungen (z. B. Framework-Version, 32/64-Bit-Angabe, WebSockets)General settings, such as framework version, 32/64-bit, web sockets
  • App-Einstellungen (können so konfiguriert werden, dass sie beim Slot verbleiben)App settings (can be configured to stick to a slot)
  • Verbindungszeichenfolgen (können so konfiguriert werden, dass sie beim Slot verbleiben)Connection strings (can be configured to stick to a slot)
  • HandlerzuordnungenHandler mappings
  • Öffentliche ZertifikatePublic certificates
  • WebJobs-InhalteWebJobs content
  • Hybridverbindungen *Hybrid connections *
  • Virtual Network-Integration*Virtual network integration *
  • Dienstendpunkte*Service endpoints *
  • Azure Content Delivery Network*Azure Content Delivery Network *

Für mit einem Sternchen (*) gekennzeichnete Features ist eine Rückgängigmachung des Austauschs geplant.Features marked with an asterisk (*) are planned to be unswapped.

Einstellungen, die nicht ausgetauscht werden:Settings that aren't swapped:

  • VeröffentlichungsendpunktePublishing endpoints
  • Benutzerdefinierte DomänennamenCustom domain names
  • Nicht öffentliche Zertifikate und TLS/SSL-EinstellungenNon-public certificates and TLS/SSL settings
  • SkalierungseinstellungenScale settings
  • WebJobs-PlanerWebJobs schedulers
  • IP-EinschränkungenIP restrictions
  • Always OnAlways On
  • Einstellungen für das DiagnoseprotokollDiagnostic log settings
  • Ressourcenfreigabe zwischen verschiedenen Ursprüngen (Cross-Origin Resource Sharing, CORS)Cross-origin resource sharing (CORS)

Hinweis

Bestimmte App-Einstellungen, die für nicht ausgetauschte Einstellungen gelten, werden ebenfalls nicht ausgetauscht.Certain app settings that apply to unswapped settings are also not swapped. Da z. B. die Diagnoseprotokolleinstellungen 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.For example, since diagnostic log settings are not swapped, related app settings like WEBSITE_HTTPLOGGING_RETENTION_DAYS and DIAGNOSTICS_AZUREBLOBRETENTIONDAYS are also not swapped, even if they don't show up as slot settings.

Wenn Sie eine App-Einstellung oder eine Verbindungszeichenfolge fest einem bestimmten Slot zuordnen möchten, sodass sie nicht ausgetauscht wird, navigieren Sie zurKonfigurationsseite für den entsprechenden Slot.To configure an app setting or connection string to stick to a specific slot (not swapped), go to the Configuration page for that slot. Aktivieren Sie nach dem Hinzufügen oder Bearbeiten einer Einstellung das Kontrollkästchen Bereitstellungssloteinstellung.Add or edit a setting, and then select deployment slot setting. Ist dieses Kontrollkästchen aktiviert, wird die Einstellung nicht ausgetauscht.Selecting this check box tells App Service that the setting is not swappable.

Sloteinstellung

Austauschen von zwei SlotsSwap two slots

Bereitstellungsslots können auf der Seite Bereitstellungsslots Ihrer App sowie auf der Seite Übersicht ausgetauscht werden.You can swap deployment slots on your app's Deployment slots page and the Overview page. Technische Details zum Slotaustauch finden Sie unter Was geschieht bei einem Austausch?.For technical details on the slot swap, see What happens during swap.

Wichtig

Vergewissern Sie sich vor der Überführung einer App aus einem Bereitstellungsslot in die Produktion, dass der Produktionsslot der Zielslot ist und dass alle Einstellungen im Quellslot exakt so konfiguriert sind, wie sie in der Produktion konfiguriert sein sollen.Before you swap an app from a deployment slot into production, make sure that production is your target slot and that all settings in the source slot are configured exactly as you want to have them in production.

So tauschen Sie Bereitstellungsslots aus:To swap deployment slots:

  1. Wählen Sie auf der Seite Bereitstellungsslots Ihrer App die Option Austauschen aus.Go to your app's Deployment slots page and select Swap.

    Schaltfläche „Austauschen“

    Im Dialogfeld Austauschen werden Einstellungen der ausgewählten Quell- und Zielslots angezeigt, die ausgetauscht werden.The Swap dialog box shows settings in the selected source and target slots that will be changed.

  2. Wählen Sie die gewünschten Slots für Quelle und Ziel aus.Select the desired Source and Target slots. Bei dem Ziel handelt es sich in der Regel um einen Produktionsslot.Usually, the target is the production slot. Wählen Sie auch die Registerkarten Quelländerungen und Zieländerungen aus, und vergewissern Sie sich, dass die Konfigurationsänderungen Ihren Erwartungen entsprechen.Also, select the Source Changes and Target Changes tabs and verify that the configuration changes are expected. Wählen Sie anschließend Austauschen aus, um die Slots umgehend auszutauschen.When you're finished, you can swap the slots immediately by selecting Swap.

    Vollständiger Austausch

    Wenn Sie sich vor dem tatsächlichen Austausch ansehen möchten, wie der Zielslot mit den neuen Einstellungen funktioniert, wählen Sie nicht Austauschen aus, sondern führen Sie die Schritte unter Mit Vorschau austauschen aus.To see how your target slot would run with the new settings before the swap actually happens, don't select Swap, but follow the instructions in Swap with preview.

  3. Wählen Sie abschließend Schließen aus, um das Dialogfeld zu schließen.When you're finished, close the dialog box by selecting Close.

Informationen zur Problembehandlung finden Sie bei Bedarf unter Behandeln von Problemen beim Austausch.If you have any problems, see Troubleshoot swaps.

Mit Vorschau austauschen (Austausch mit mehreren Phasen)Swap with preview (multi-phase swap)

Vergewissern Sie sich, dass die App mit den ausgetauschten Einstellungen funktioniert, bevor Sie einen Austausch mit dem Produktionsslot als Zielslot durchführen.Before you swap into production as the target slot, validate that the app runs with the swapped settings. Der Quellslot wird außerdem vor Abschluss des Austauschs vorbereitet, was für unternehmenskritische Anwendungen von Vorteil ist.The source slot is also warmed up before the swap completion, which is desirable for mission-critical applications.

Bei einem Austausch mit Vorschau führt App Service den gleichen Austauschvorgang durch, pausiert jedoch nach dem ersten Schritt.When you perform a swap with preview, App Service performs the same swap operation but pauses after the first step. Daraufhin können Sie das Ergebnis vor Abschluss des Austauschs im Stagingslot überprüfen.You can then verify the result on the staging slot before completing the swap.

Wenn Sie den Austausch abbrechen, wendet App Service erneut Konfigurationselemente auf den Quellslot an.If you cancel the swap, App Service reapplies configuration elements to the source slot.

So führen Sie einen Austausch mit Vorschau durch:To swap with preview:

  1. Führen Sie die Schritte unter Überführen von Bereitstellungsslots aus, aktivieren Sie dabei jedoch das Kontrollkästchen Tausch mit Vorschau ausführen.Follow the steps in Swap deployment slots but select Perform swap with preview.

    Austauschen mit Vorschau

    Das Dialogfeld zeigt, wie sich die Konfiguration im Quellslot ändert (Phase 1) und wie sich der Quell- und der Zielslot ändern (Phase 2).The dialog box shows you how the configuration in the source slot changes in phase 1, and how the source and target slot change in phase 2.

  2. Wenn Sie so weit sind, wählen Sie Austausch starten aus.When you're ready to start the swap, select Start Swap.

    Nach Abschluss der ersten Phase wird im Dialogfeld eine entsprechende Benachrichtigung angezeigt.When phase 1 finishes, you're notified in the dialog box. Navigieren Sie zu https://<app_name>-<source-slot-name>.azurewebsites.net, um sich eine Vorschau des Austauschs im Quellslot anzusehen.Preview the swap in the source slot by going to https://<app_name>-<source-slot-name>.azurewebsites.net.

  3. Wenn Sie bereit sind, den ausstehenden Austausch abzuschließen, wählen Sie unter Austauschaktion die Option Austausch abschließen und anschließend Austausch abschließen aus.When you're ready to complete the pending swap, select Complete Swap in Swap action and select Complete Swap.

    Wenn Sie einen ausstehenden Austausch abbrechen möchten, wählen Sie stattdessen Austausch abbrechen aus.To cancel a pending swap, select Cancel Swap instead.

  4. Wählen Sie abschließend Schließen aus, um das Dialogfeld zu schließen.When you're finished, close the dialog box by selecting Close.

Informationen zur Problembehandlung finden Sie bei Bedarf unter Behandeln von Problemen beim Austausch.If you have any problems, see Troubleshoot swaps.

Informationen zum Automatisieren eines mehrstufigen Austauschs finden Sie unter Automatisieren mit PowerShell.To automate a multi-phase swap, see Automate with PowerShell.

Ausführen eines Rollbacks für einen AustauschRoll back a swap

Sollten nach einem Slotaustausch Fehler im Zielslot (etwa im Produktionsslot) auftreten, stellen Sie für die Slots den Zustand vor dem Austausch wieder her, indem Sie die beiden gleichen Slots sofort erneut austauschen.If any errors occur in the target slot (for example, the production slot) after a slot swap, restore the slots to their pre-swap states by swapping the same two slots immediately.

Konfigurieren des automatischen AustauschsConfigure auto swap

Hinweis

Automatisches Austauschen wird in Web-Apps unter Linux nicht unterstützt.Auto swap isn't supported in web apps on Linux.

Das Feature „Automatisch tauschen“ ermöglicht die Optimierung von Azure DevOps-Szenarien, bei denen Ihre App kontinuierlich ohne Kaltstarts und ohne Downtime für App-Kunden bereitgestellt werden soll.Auto swap streamlines Azure DevOps scenarios where you want to deploy your app continuously with zero cold starts and zero downtime for customers of the app. Wenn automatisches Austauschen für die Überprüfung eines Slots in die Produktion aktiviert ist, gilt Folgendes: Sobald Sie Ihre Codeänderungen an diesen Slot pushen, überführt App Service die App automatisch in die Produktion, nachdem sie im Quellslot vorbereitet wurde.When auto swap is enabled from a slot into production, every time you push your code changes to that slot, App Service automatically swaps the app into production after it's warmed up in the source slot.

Hinweis

Es empfiehlt sich, das Feature „Automatisch tauschen“ zunächst in einem produktionsfremden Zielslot zu testen, bevor Sie es für den Produktionsslot konfigurieren.Before you configure auto swap for the production slot, consider testing auto swap on a non-production target slot.

So konfigurieren Sie automatisches Austauschen:To configure auto swap:

  1. Navigieren Sie zur Ressourcenseite Ihrer App.Go to your app's resource page. Wählen Sie Bereitstellungsslots > <gewünschter Quellslot> > Konfiguration > Allgemeine Einstellungen aus.Select Deployment slots > <desired source slot> > Configuration > General settings.

  2. Legen Sie Automatischer Tausch aktiviert auf Ein fest.For Auto swap enabled, select On. Wählen Sie anschließend unter Bereitstellungsslot für automatischen Tausch den gewünschten Zielslot und danach auf der Befehlsleiste die Option Speichern aus.Then select the desired target slot for Auto swap deployment slot, and select Save on the command bar.

    Konfigurationsoptionen für den automatischen Austausch

  3. Führen Sie einen Codepushvorgang an den Quellslot aus.Execute a code push to the source slot. Der automatische Austausch erfolgt nach kurzer Zeit, und die URL Ihres Zielslots spiegelt die Änderung wider.Auto swap happens after a short time, and the update is reflected at your target slot's URL.

Informationen zur Problembehandlung finden Sie bei Bedarf unter Behandeln von Problemen beim Austausch.If you have any problems, see Troubleshoot swaps.

Angeben der benutzerdefinierten AufwärmphaseSpecify custom warm-up

Für einige Apps müssen vor dem Austausch unter Umständen benutzerdefinierte Vorbereitungsschritte ausgeführt werden.Some apps might require custom warm-up actions before the swap. Mithilfe des Konfigurationselements applicationInitialization in „web.config“ können Sie benutzerdefinierte Initialisierungsaktionen angeben.The applicationInitialization configuration element in web.config lets you specify custom initialization actions. Der Austausch mit dem Zielslot erfolgt dann erst nach Abschluss dieser benutzerdefinierten Aufwärmphase.The swap operation waits for this custom warm-up to finish before swapping with the target slot. Hier sehen Sie ein Beispielfragment aus „web.config“:Here's a sample web.config fragment.

<system.webServer>
    <applicationInitialization>
        <add initializationPage="/" hostName="[app hostname]" />
        <add initializationPage="/Home/About" hostName="[app hostname]" />
    </applicationInitialization>
</system.webServer>

Weitere Informationen zum Anpassen des applicationInitialization-Elements finden Sie unter Häufigste Bereitstellungsfehler beim Slotaustausch und Vorgehensweise zu deren Behebung.For more information on customizing the applicationInitialization element, see Most common deployment slot swap failures and how to fix them.

Sie können das Aufwärmverhalten ferner mithilfe folgender App-Einstellungen anpassen:You can also customize the warm-up behavior with one or both of the following app settings:

  • WEBSITE_SWAP_WARMUP_PING_PATH: Der zu pingende Pfad, um Ihre Website vorzubereiten.WEBSITE_SWAP_WARMUP_PING_PATH: The path to ping to warm up your site. Fügen Sie diese App-Einstellung durch Angeben eines benutzerdefinierten Pfads hinzu, der mit einem Schrägstrich als Wert beginnt.Add this app setting by specifying a custom path that begins with a slash as the value. Ein Beispiel ist /statuscheck.An example is /statuscheck. Standardwert: /.The default value is /.
  • WEBSITE_SWAP_WARMUP_PING_STATUSES: Gültige HTTP-Antwortcodes für den Aufwärmvorgang.WEBSITE_SWAP_WARMUP_PING_STATUSES: Valid HTTP response codes for the warm-up operation. Fügen Sie diese App-Einstellung mit einer durch Trennzeichen getrennten Liste mit HTTP-Codes hinzu.Add this app setting with a comma-separated list of HTTP codes. Beispiel: 200,202.An example is 200,202 . Ist der zurückgegebene Statuscode nicht in der Liste enthalten, werden die Vorbereitungs- und Austauschvorgänge beendet.If the returned status code isn't in the list, the warmup and swap operations are stopped. Standardmäßig sind alle Antwortcodes gültig.By default, all response codes are valid.

Hinweis

<applicationInitialization> ist Teil jedes App-Starts, während diese zwei App-Einstellungen nur für den Slotaustausch gelten.<applicationInitialization> is part each app start-up, where as these two app settings apply only to slot swaps.

Informationen zur Problembehandlung finden Sie bei Bedarf unter Behandeln von Problemen beim Austausch.If you have any problems, see Troubleshoot swaps.

Überwachen eines AustauschsMonitor a swap

Bei länger dauernden Austauschvorgängen können Sie sich anhand des Aktivitätsprotokolls über den Austauschvorgang informieren.If the swap operation takes a long time to complete, you can get information on the swap operation in the activity log.

Wählen Sie im Portal auf der Ressourcenseite Ihrer App im linken Bereich die Option Aktivitätsprotokoll aus.On your app's resource page in the portal, in the left pane, select Activity log.

Ein Austauschvorgang wird in der Protokollabfrage als Swap Web App Slots angezeigt.A swap operation appears in the log query as Swap Web App Slots. Sie können die Abfrage erweitern und Untervorgänge oder Fehler auswählen, um die entsprechenden Details anzuzeigen.You can expand it and select one of the suboperations or errors to see the details.

Weiterleiten von DatenverkehrRoute traffic

Standardmäßig werden alle an die Produktions-URL Ihrer App (http://<app_name>.azurewebsites.net) gerichteten Clientanforderungen an den Produktionsslot weitergeleitet.By default, all client requests to the app's production URL (http://<app_name>.azurewebsites.net) are routed to the production slot. Sie können einen Teil des Datenverkehrs an einen anderen Slot weiterleiten.You can route a portion of the traffic to another slot. Dieses Feature ist hilfreich, wenn Sie Benutzerfeedback zu einem neuen Update benötigen, das noch nicht für die Veröffentlichung in der Produktionsumgebung bereit ist.This feature is useful if you need user feedback for a new update, but you're not ready to release it to production.

Automatisches Weiterleiten von ProduktionsdatenverkehrRoute production traffic automatically

So leiten Sie Produktionsdatenverkehr automatisch weiter:To route production traffic automatically:

  1. Navigieren Sie zur Ressourcenseite Ihrer App, und wählen Sie Bereitstellungsslots aus.Go to your app's resource page and select Deployment slots.

  2. Geben Sie in der Spalte Datenverkehr % des gewünschten Zielslots für die Weiterleitung durch einen Prozentwert (zwischen 0 und 100) an, welcher Anteil des gesamten Datenverkehrs weitergeleitet werden soll.In the Traffic % column of the slot you want to route to, specify a percentage (between 0 and 100) to represent the amount of total traffic you want to route. Wählen Sie Speichern aus.Select Save.

    Festlegen eines Prozentwerts für den Datenverkehr

Nach dem Speichern der Einstellung wird der angegebene Prozentsatz von Clients nach dem Zufallsprinzip an den produktionsfremden Slot weitergeleitet.After the setting is saved, the specified percentage of clients is randomly routed to the non-production slot.

Sobald ein Client automatisch an einen bestimmten Slot weitergeleitet wird, ist er für die Dauer der Clientsitzung auf diesen Slot festgelegt.After a client is automatically routed to a specific slot, it's "pinned" to that slot for the life of that client session. Im Clientbrowser sehen Sie anhand des Cookies x-ms-routing-name in Ihren HTTP-Headern, mit welchem Slot Ihre Sitzung verknüpft ist.On the client browser, you can see which slot your session is pinned to by looking at the x-ms-routing-name cookie in your HTTP headers. Anforderungen, die an den Stagingslot weitergeleitet werden, haben das Cookie x-ms-routing-name=staging.A request that's routed to the "staging" slot has the cookie x-ms-routing-name=staging. Anforderungen, die an den Produktionsslot weitergeleitet werden, haben das Cookie x-ms-routing-name=self.A request that's routed to the production slot has the cookie x-ms-routing-name=self.

Manuelles Weiterleiten von ProduktionsdatenverkehrRoute production traffic manually

Neben dem automatischen Datenverkehrsrouting kann App Service Anforderungen auch an einen bestimmten Slot weiterleiten.In addition to automatic traffic routing, App Service can route requests to a specific slot. Dies ist hilfreich, wenn Sie Ihren Benutzern ermöglichen möchten, Ihre Beta-App zu nutzen oder die Nutzung zu beenden.This is useful when you want your users to be able to opt in to or opt out of your beta app. Zur manuellen Weiterleitung von Produktionsdatenverkehr wird der Abfrageparameter x-ms-routing-name verwendet.To route production traffic manually, you use the x-ms-routing-name query parameter.

Damit Benutzer die Nutzung Ihrer Beta-App beenden können, können Sie z. B. folgenden Link auf Ihrer Webseite bereitstellen:To let users opt out of your beta app, for example, you can put this link on your webpage:

<a href="<webappname>.azurewebsites.net/?x-ms-routing-name=self">Go back to production app</a>

Die Zeichenfolge x-ms-routing-name=self gibt den Produktionsslot an.The string x-ms-routing-name=self specifies the production slot. Wenn der Clientbrowser auf den Link zugreift, wird er zum Produktionsslot weitergeleitet.After the client browser accesses the link, it's redirected to the production slot. Jede nachfolgende Anforderung besitzt das Cookie x-ms-routing-name=self, das die Sitzung mit dem Produktionsslot verknüpft.Every subsequent request has the x-ms-routing-name=self cookie that pins the session to the production slot.

Damit Benutzer Ihre Beta-App nutzen können, müssen Sie den gleichen Abfrageparameter auf den Namen des produktionsfremden Slots festlegen.To let users opt in to your beta app, set the same query parameter to the name of the non-production slot. Hier sehen Sie ein Beispiel:Here's an example:

<webappname>.azurewebsites.net/?x-ms-routing-name=staging

Standardmäßig erhalten neue Slots eine Routingregel von 0%, die in grau dargestellt.By default, new slots are given a routing rule of 0%, shown in grey. Wenn Sie diesen Wert explizit auf 0% festlegen (als schwarzer Text dargestellt), können Ihre Benutzer manuell unter Verwendung des Abfrageparameters x-ms-routing-name auf den Stagingslot zugreifen.When you explicitly set this value to 0% (shown in black text), your users can access the staging slot manually by using the x-ms-routing-name query parameter. Sie werden jedoch nicht automatisch an den Slot weitergeleitet, da der Prozentsatz für die Weiterleitung auf „0“ festgelegt ist.But they won't be routed to the slot automatically because the routing percentage is set to 0. Dies ist ein erweitertes Szenario, in dem Sie Ihren Stagingslot vor der Öffentlichkeit verbergen können, während Sie gleichzeitig zulassen, dass interne Teams Änderungen am Slot testen.This is an advanced scenario where you can "hide" your staging slot from the public while allowing internal teams to test changes on the slot.

Löschen eines SlotsDelete a slot

Navigieren Sie zur Ressourcenseite Ihrer App.Go to your app's resource page. Wählen Sie Bereitstellungsslots > <zu löschender Slot> > Übersicht aus.Select Deployment slots > <slot to delete> > Overview. Wählen Sie auf der Befehlsleiste die Option Löschen aus.Select Delete on the command bar.

Löschen eines Bereitstellungsslots

Automatisieren mit PowerShellAutomate with PowerShell

Hinweis

Dieser Artikel wurde aktualisiert und beinhaltet jetzt das neue Az-Modul von Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Sie können das AzureRM-Modul weiterhin verwenden, das bis mindestens Dezember 2020 weiterhin Fehlerbehebungen erhält.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Weitere Informationen zum neuen Az-Modul und zur Kompatibilität mit AzureRM finden Sie unter Introducing the new Azure PowerShell Az module (Einführung in das neue Az-Modul von Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Anweisungen zur Installation des Az-Moduls finden Sie unter Install Azure PowerShell (Installieren von Azure PowerShell).For Az module installation instructions, see Install Azure PowerShell.

Azure PowerShell ist ein Modul, das Cmdlets für die Verwaltung von Azure über Windows PowerShell bietet, einschließlich Unterstützung der Verwaltung von Bereitstellungsslots für Azure App Service.Azure PowerShell is a module that provides cmdlets to manage Azure through Windows PowerShell, including support for managing deployment slots in Azure App Service.

Informationen zum Installieren und Konfigurieren von Azure PowerShell sowie zur Authentifizierung von Azure PowerShell mit Ihrem Azure-Abonnement finden Sie unter Installieren und Konfigurieren von Microsoft Azure PowerShell.For information on installing and configuring Azure PowerShell, and on authenticating Azure PowerShell with your Azure subscription, see How to install and configure Microsoft Azure PowerShell.


Erstellen einer Web-AppCreate a web app

New-AzWebApp -ResourceGroupName [resource group name] -Name [app name] -Location [location] -AppServicePlan [app service plan name]

Erstellen eines SlotsCreate a slot

New-AzWebAppSlot -ResourceGroupName [resource group name] -Name [app name] -Slot [deployment slot name] -AppServicePlan [app service plan name]

Initiieren eines Austauschs mit Vorschau (Austausch mit mehreren Phasen) und Anwenden der Konfiguration des Zielslots auf den QuellslotInitiate a swap with a preview (multi-phase swap), and apply destination slot configuration to the source slot

$ParametersObject = @{targetSlot  = "[slot name – e.g. “production”]"}
Invoke-AzResourceAction -ResourceGroupName [resource group name] -ResourceType Microsoft.Web/sites/slots -ResourceName [app name]/[slot name] -Action applySlotConfig -Parameters $ParametersObject -ApiVersion 2015-07-01

Abbrechen eines ausstehenden Austauschs (Austausch mit Vorschau) und Wiederherstellen der Konfiguration des QuellslotsCancel a pending swap (swap with review) and restore the source slot configuration

Invoke-AzResourceAction -ResourceGroupName [resource group name] -ResourceType Microsoft.Web/sites/slots -ResourceName [app name]/[slot name] -Action resetSlotConfig -ApiVersion 2015-07-01

Überführen von BereitstellungsslotsSwap deployment slots

$ParametersObject = @{targetSlot  = "[slot name – e.g. “production”]"}
Invoke-AzResourceAction -ResourceGroupName [resource group name] -ResourceType Microsoft.Web/sites/slots -ResourceName [app name]/[slot name] -Action slotsswap -Parameters $ParametersObject -ApiVersion 2015-07-01

Überwachen von Austauschereignissen im AktivitätsprotokollMonitor swap events in the activity log

Get-AzLog -ResourceGroup [resource group name] -StartTime 2018-03-07 -Caller SlotSwapJobProcessor  

Löschen eines SlotsDelete a slot

Remove-AzResource -ResourceGroupName [resource group name] -ResourceType Microsoft.Web/sites/slots –Name [app name]/[slot name] -ApiVersion 2015-07-01

Automatisieren mit Resource Manager-VorlagenAutomate with ARM templates

Resource Manager-Vorlagen sind deklarative JSON-Dateien, die zur Automatisierung der Bereitstellung und Konfiguration von Azure-Ressourcen verwendet werden.ARM Templates are declarative JSON files used to automate the deployment and configuration of Azure resources. Zum Austauschen von Slots mithilfe von Resource Manager-Vorlagen legen Sie zwei Eigenschaften für die Ressourcen Microsoft.Web/sites/slots und Microsoft.Web/sites fest:To swap slots using ARM templates, you will set two properties on the Microsoft.Web/sites/slots and Microsoft.Web/sites resources:

  • buildVersion: Dies ist eine Zeichenfolgeneigenschaft, die die aktuelle Version der im Slot bereitgestellten App darstellt.buildVersion: this is a string property which represents the current version of the app deployed in the slot. Beispiele: „v1“, „1.0.0.1“ oder „2019-09-20T11:53:25.2887393-07:00“.For example: "v1", "1.0.0.1", or "2019-09-20T11:53:25.2887393-07:00".
  • targetBuildVersion: Dies ist eine Zeichenfolgeneigenschaft, die angibt, welche buildVersion der Slot enthalten soll.targetBuildVersion: this is a string property that specifies what buildVersion the slot should have. Wenn targetBuildVersion nicht mit der aktuellen buildVersion identisch ist, wird der Austauschvorgang dadurch ausgelöst, dass der Slot mit der angegebenen buildVersion ermittelt wird.If the targetBuildVersion does not equal the current buildVersion, then this will trigger the swap operation by finding the slot which has the specified buildVersion.

Resource Manager-BeispielvorlageExample ARM Template

Mit der folgenden Resource Manager-Vorlage werden die buildVersion des Stagingslots aktualisiert und die targetBuildVersion für den Produktionsslot festgelegt.The following ARM template will update the buildVersion of the staging slot and set the targetBuildVersion on the production slot. Dadurch werden die beiden Slots ausgetauscht.This will swap the two slots. Die Vorlage geht davon aus, dass Sie bereits eine Web-App mit einem Slot mit dem Namen „staging“ erstellt haben.The template assumes you already have a webapp created with a slot named "staging".

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "my_site_name": {
            "defaultValue": "SwapAPIDemo",
            "type": "String"
        },
        "sites_buildVersion": {
            "defaultValue": "v1",
            "type": "String"
        }
    },
    "resources": [
        {
            "type": "Microsoft.Web/sites/slots",
            "apiVersion": "2018-02-01",
            "name": "[concat(parameters('my_site_name'), '/staging')]",
            "location": "East US",
            "kind": "app",
            "properties": {
                "buildVersion": "[parameters('sites_buildVersion')]"
            }
        },
        {
            "type": "Microsoft.Web/sites",
            "apiVersion": "2018-02-01",
            "name": "[parameters('my_site_name')]",
            "location": "East US",
            "kind": "app",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites/slots', parameters('my_site_name'), 'staging')]"
            ],
            "properties": {
                "targetBuildVersion": "[parameters('sites_buildVersion')]"
            }
        }        
    ]
}

Diese Resource Manager-Vorlage ist idempotent – das bedeutet, dass sie wiederholt ausgeführt werden kann und dabei denselben Zustand der Slots erzeugt.This ARM template is idempotent, meaning that it can be executed repeatedly and produce the same state of the slots. Nach der ersten Ausführung entspricht targetBuildVersion der aktuellen buildVersion, sodass kein Austausch ausgelöst wird.After the first execution, targetBuildVersion will match the current buildVersion, so a swap will not be triggered.

Automatisieren mithilfe der BefehlszeilenschnittstelleAutomate with the CLI

Informationen zu Befehlen der Azure CLI für Bereitstellungsslots finden Sie unter az webapp deployment slot.For Azure CLI commands for deployment slots, see az webapp deployment slot.

Behandeln von Problemen beim AustauschTroubleshoot swaps

Sollte bei einem Slotaustausch ein Fehler auftreten, wird er in D:\home\LogFiles\eventlog.xml protokolliert.If any error occurs during a slot swap, it's logged in D:\home\LogFiles\eventlog.xml. Darüber hinaus wird der Fehler auch im anwendungsspezifischen Fehlerprotokoll protokolliert.It's also logged in the application-specific error log.

Im Anschluss folgen einige allgemeine Austauschfehler:Here are some common swap errors:

  • Eine HTTP-Anforderung an den Anwendungsstamm ist zeitgesteuert.An HTTP request to the application root is timed. Der Austauschvorgang wartet bei jeder HTTP-Anforderung 90 Sekunden und führt bis zu fünf Wiederholungen durch.The swap operation waits for 90 seconds for each HTTP request, and retries up to 5 times. Sollte bei allen Wiederholungen ein Timeout auftreten, wird der Austauschvorgang beendet.If all retries are timed out, the swap operation is stopped.

  • Die Initialisierung des lokalen Caches ist möglicherweise nicht erfolgreich, wenn die App-Inhalte das für den lokalen Cache angegebene Kontingent des lokalen Datenträgers übersteigen.Local cache initialization might fail when the app content exceeds the local disk quota specified for the local cache. Weitere Informationen finden Sie in der Übersicht über den lokalen Cache von Azure App Service.For more information, see Local cache overview.

  • Während der benutzerdefinierten Aufwärmphase werden die HTTP-Anforderungen intern (also nicht über die externe URL) ausgeführt.During custom warm-up, the HTTP requests are made internally (without going through the external URL). Sie sind möglicherweise nicht erfolgreich, wenn web.config bestimmte URL Rewrite-Regeln enthält. So können beispielsweise Regeln zur Umleitung von Domänennamen oder zur Erzwingung von HTTPS dazu führen, dass vorbereitende Anforderungen den App-Code nicht erreichen.They can fail with certain URL rewrite rules in Web.config. For example, rules for redirecting domain names or enforcing HTTPS can prevent warm-up requests from reaching the app code. Ändern Sie zur Umgehung dieses Problems Ihre Rewrite-Regeln, indem Sie die beiden folgenden Bedingungen hinzufügen:To work around this issue, modify your rewrite rules by adding the following two conditions:

    <conditions>
      <add input="{WARMUP_REQUEST}" pattern="1" negate="true" />
      <add input="{REMOTE_ADDR}" pattern="^100?\." negate="true" />
      ...
    </conditions>
    
  • Auch ohne benutzerdefinierte Aufwärmphase können HTTP-Anforderungen durch die URL Rewrite-Regel blockiert werden.Without a custom warm-up, the URL rewrite rules can still block HTTP requests. Ändern Sie zur Umgehung dieses Problems Ihre Rewrite-Regeln, indem Sie die folgende Bedingung hinzufügen:To work around this issue, modify your rewrite rules by adding the following condition:

    <conditions>
      <add input="{REMOTE_ADDR}" pattern="^100?\." negate="true" />
      ...
    </conditions>
    
  • Einige IP-Einschränkungsregeln verhindern unter Umständen das Senden von HTTP-Anforderungen an Ihre App.Some IP restriction rules might prevent the swap operation from sending HTTP requests to your app. IPv4-Adressbereiche, die mit 10. und 100. beginnen, sind interne Adressbereiche für Ihre Bereitstellung.IPv4 address ranges that start with 10. and 100. are internal to your deployment. Es empfiehlt sich, für diese Bereich die Verbindungsherstellung mit Ihrer App zuzulassen.You should allow them to connect to your app.

  • Nach einem Slotaustausch kann es bei der App zu unerwarteten Neustarts kommen.After slot swaps, the app may experience unexpected restarts. Der Grund hierfür ist, dass die Konfiguration der Hostnamenbindung nach einem Austausch nicht mehr synchron ist, was als alleiniger Umstand aber nicht zu Neustarts führt.This is because after a swap, the hostname binding configuration goes out of sync, which by itself doesn't cause restarts. Bestimmte zugrunde liegende Speicherereignisse (z. B. Speichervolume-Failover) können diese Abweichungen erkennen und einen Neustart aller Workerprozesse erzwingen.However, certain underlying storage events (such as storage volume failovers) may detect these discrepancies and force all worker processes to restart. Um diese Arten von Neustarts zu minimieren, legen Sie die App-Einstellung WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG=1 auf Alle Slots fest.To minimize these types of restarts, set the WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG=1 app setting on all slots. Diese App-Einstellung funktioniert allerdings nicht mit WCF-Apps (Windows Communication Foundation).However, this app setting does not work with Windows Communication Foundation (WCF) apps.

Nächste SchritteNext steps

Blockieren des Zugriffs auf produktionsfremde SlotsBlock access to non-production slots