Configurar ambientes de teste no Serviço de Aplicações do AzureSet up staging environments in Azure App Service

Quando implementar a sua aplicação web, web app no Linux, back end móvel ou app API para o Azure App Service,pode utilizar uma faixa de implementação separada em vez da ranhura de produção padrão quando estiver a executar o nível de plano de aplicação standard, premiumou isolado.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. As slots de implementação são aplicações ao vivo com os seus próprios nomes de anfitrião.Deployment slots are live apps with their own host names. Os elementos de conteúdo e configurações da aplicação podem ser trocados entre duas ranhuras de implantação, incluindo a ranhura de produção.App content and configurations elements can be swapped between two deployment slots, including the production slot.

A implementação da sua aplicação numa faixa horária não-produção tem os seguintes benefícios:Deploying your application to a non-production slot has the following benefits:

  • Pode validar alterações de aplicações numa ranhura de implementação de encenação antes de a trocar com a ranhura de produção.You can validate app changes in a staging deployment slot before swapping it with the production slot.
  • A implementação de uma aplicação para uma ranhura primeiro e a sua troca em produção garante que todas as instâncias da ranhura são aquecidas antes de serem trocadas para a produção.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. Isto elimina o tempo de inatividade quando implementa a sua aplicação.This eliminates downtime when you deploy your app. A reorientação do tráfego é perfeita, e nenhum pedido é retirado por causa de operações de troca.The traffic redirection is seamless, and no requests are dropped because of swap operations. Pode automatizar todo este fluxo de trabalho configurando o swap automático quando não é necessária validação de pré-troca.You can automate this entire workflow by configuring auto swap when pre-swap validation isn't needed.
  • Depois de uma troca, a ranhura com app previamente encenada tem agora a aplicação de produção anterior.After a swap, the slot with previously staged app now has the previous production app. Se as alterações trocadas na ranhura de produção não forem como espera, pode efetuar a mesma troca imediatamente para recuperar o seu "último bom site conhecido".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.

Cada nível de plano de serviço de aplicações suporta um número diferente de slots de implementação.Each App Service plan tier supports a different number of deployment slots. Não há nenhuma taxa adicional para usar slots de implantação.There's no additional charge for using deployment slots. Para saber o número de slots suporta os suportes de nível da sua aplicação, consulte os limites do Serviço de Aplicações.To find out the number of slots your app's tier supports, see App Service limits.

Para escalar a sua aplicação para um nível diferente, certifique-se de que o nível alvo suporta o número de slots que a sua aplicação já utiliza.To scale your app to a different tier, make sure that the target tier supports the number of slots your app already uses. Por exemplo, se a sua aplicação tiver mais de cinco slots, não pode escaloná-la para o nível Standard, porque o nível Standard suporta apenas cinco slots de implementação.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.

Adicionar um blocoAdd a slot

A aplicação deve estar a ser executada no nível Standard, Premiumou Isolado para poder ativar várias faixas de implantação.The app must be running in the Standard, Premium, or Isolated tier in order for you to enable multiple deployment slots.

  1. no portal Azure,procure e selecione Serviços de Aplicações e selecione a sua aplicação.in the Azure portal, search for and select App Services and select your app.

    Pesquisa de Serviços de Aplicações

  2. No painel esquerdo, selecione slots de implementação > Adicionar Ranhura.In the left pane, select Deployment slots > Add Slot.

    Adicionar um novo bloco de implementação

    Nota

    Se a aplicação ainda não se realizar no nível Standard, Premiumou Isolado, recebe uma mensagem que indica os níveis suportados para permitir a publicação encenada.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. Neste momento, tem a opção de selecionar Upgrade e ir ao separador Escala da sua aplicação antes de continuar.At this point, you have the option to select Upgrade and go to the Scale tab of your app before continuing.

  3. Na caixa de diálogo de ranhura, dê um nome à ranhura e selecione se clone uma configuração de aplicação a partir de outra ranhura de implementação.In the Add a slot dialog box, give the slot a name, and select whether to clone an app configuration from another deployment slot. Selecione Adicionar para continuar.Select Add to continue.

    Fonte de configuração

    Pode clonar uma configuração a partir de qualquer ranhura existente.You can clone a configuration from any existing slot. As definições que podem ser clonadas incluem configurações de aplicações, cadeias de conexão, versões de estrutura linguística, tomadas web, versão HTTP e bitness de plataforma.Settings that can be cloned include app settings, connection strings, language framework versions, web sockets, HTTP version, and platform bitness.

  4. Depois de adicionar a ranhura, selecione Perto para fechar a caixa de diálogo.After the slot is added, select Close to close the dialog box. A nova ranhura é agora mostrada na página de slots de implementação.The new slot is now shown on the Deployment slots page. Por predefinição, o tráfego % está definido para 0 para a nova ranhura, com todo o tráfego de clientes encaminhado para a ranhura de produção.By default, Traffic % is set to 0 for the new slot, with all customer traffic routed to the production slot.

  5. Selecione a nova ranhura de implementação para abrir a página de recursos da ranhura.Select the new deployment slot to open that slot's resource page.

    Título de slot de implementação

    A ranhura de encenação tem uma página de gestão como qualquer outra aplicação do Serviço de Aplicações.The staging slot has a management page just like any other App Service app. Pode alterar a configuração da ranhura.You can change the slot's configuration. Para lembrá-lo que está a visualizar a ranhura de implementação, o nome da aplicação é mostrado como <app-name>/<slot-name> , e o tipo de aplicação é App Service (Slot).To remind you that you're viewing the deployment slot, the app name is shown as <app-name>/<slot-name>, and the app type is App Service (Slot). Também pode ver a ranhura como uma aplicação separada no seu grupo de recursos, com as mesmas designações.You can also see the slot as a separate app in your resource group, with the same designations.

  6. Selecione o URL da aplicação na página de recursos da ranhura.Select the app URL on the slot's resource page. A slot de implementação tem o seu próprio nome de anfitrião e é também uma aplicação ao vivo.The deployment slot has its own host name and is also a live app. Para limitar o acesso do público à ranhura de implementação, consulte as restrições IP do Serviço de Aplicações Azure.To limit public access to the deployment slot, see Azure App Service IP restrictions.

A nova ranhura de implementação não tem conteúdo, mesmo que clone as definições de uma ranhura diferente.The new deployment slot has no content, even if you clone the settings from a different slot. Por exemplo, pode publicar nesta slot com o Git.For example, you can publish to this slot with Git. Você pode implantar para a ranhura a partir de um ramo de repositório diferente ou um repositório diferente.You can deploy to the slot from a different repository branch or a different repository.

O que acontece durante uma trocaWhat happens during a swap

Trocar etapas de operaçãoSwap operation steps

Quando troca duas ranhuras (normalmente de uma ranhura de paragem para a ranhura de produção), o Serviço de Aplicações faz o seguinte para garantir que a ranhura do alvo não experimenta tempo de inatividade: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. Aplicar as seguintes definições da ranhura-alvo (por exemplo, a ranhura de produção) a todas as instâncias da ranhura de origem:Apply the following settings from the target slot (for example, the production slot) to all instances of the source slot:

    Qualquer um destes casos desencadeia todas as instâncias na ranhura de origem para reiniciar.Any of these cases trigger all instances in the source slot to restart. Durante a troca com pré-visualização,isto marca o fim da primeira fase.During swap with preview, this marks the end of the first phase. A operação de troca é interrompida e pode validar que a ranhura de origem funciona corretamente com as definições da ranhura do alvo.The swap operation is paused, and you can validate that the source slot works correctly with the target slot's settings.

  2. Aguarde por todas as instâncias da ranhura de origem para completar o seu reinício.Wait for every instance in the source slot to complete its restart. Se alguma instância não reiniciar, a operação de troca reverte todas as alterações na ranhura de origem e interrompe o funcionamento.If any instance fails to restart, the swap operation reverts all changes to the source slot and stops the operation.

  3. Se a cache local estiver ativada, desencadeie a inicialização da cache local fazendo um pedido HTTP à raiz da aplicação ("/") em cada instância da ranhura de origem.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. Aguarde até que cada instância retorne qualquer resposta HTTP.Wait until each instance returns any HTTP response. A inicialização da cache local provoca um novo recomeço em cada instância.Local cache initialization causes another restart on each instance.

  4. Se a troca automática estiver ativada com aquecimento personalizado,acionar o Início da Aplicação fazendo um pedido HTTP à raiz da aplicação ("/") em cada instância da ranhura de origem.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.

    Se applicationInitialization não for especificado, desencadeie um pedido HTTP para a raiz de aplicação da ranhura de origem em cada instância.If applicationInitialization isn't specified, trigger an HTTP request to the application root of the source slot on each instance.

    Se um caso devolver qualquer resposta HTTP, é considerado como aquecido.If an instance returns any HTTP response, it's considered to be warmed up.

  5. Se todas as instâncias da ranhura de origem forem aquecidas com sucesso, troque as duas ranhuras trocando as regras de encaminhamento para as duas ranhuras.If all instances on the source slot are warmed up successfully, swap the two slots by switching the routing rules for the two slots. Após este passo, a ranhura-alvo (por exemplo, a ranhura de produção) tem a aplicação que já foi previamente aquecida na ranhura de origem.After this step, the target slot (for example, the production slot) has the app that's previously warmed up in the source slot.

  6. Agora que a ranhura de origem possui a aplicação de pré-troca anteriormente na ranhura alvo, execute a mesma operação aplicando todas as definições e reiniciando as instâncias.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.

Em qualquer ponto da operação de troca, todo o trabalho de inicialização das aplicações trocadas acontece na ranhura de origem.At any point of the swap operation, all work of initializing the swapped apps happens on the source slot. A ranhura do alvo permanece on-line enquanto a ranhura de origem está a ser preparada e aquecida, independentemente de onde a troca tenha sucesso ou falhe.The target slot remains online while the source slot is being prepared and warmed up, regardless of where the swap succeeds or fails. Para trocar uma ranhura de encenação com a ranhura de produção, certifique-se de que a ranhura de produção é sempre a ranhura-alvo.To swap a staging slot with the production slot, make sure that the production slot is always the target slot. Desta forma, a operação de troca não afeta a sua aplicação de produção.This way, the swap operation doesn't affect your production app.

Que configurações são trocadas?Which settings are swapped?

Quando clona a configuração a partir de outra ranhura de implantação, a configuração clonada é editável.When you clone configuration from another deployment slot, the cloned configuration is editable. Alguns elementos de configuração seguem o conteúdo através de uma troca (não específica para a ranhura), enquanto outros elementos de configuração permanecem na mesma ranhura após uma troca (específica slot).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). As listas que se seguem mostram as definições que mudam quando troca slots.The following lists show the settings that change when you swap slots.

Definições que são trocadas:Settings that are swapped:

  • Configurações gerais, tais como versão-quadro, tomadas web de 32/64 bitsGeneral settings, such as framework version, 32/64-bit, web sockets
  • Definições de aplicativos (pode ser configurado para manter uma ranhura)App settings (can be configured to stick to a slot)
  • Cordas de ligação (podem ser configuradas para se colarem a uma ranhura)Connection strings (can be configured to stick to a slot)
  • Mapeamentos de manipuladorHandler mappings
  • Certificados públicosPublic certificates
  • Conteúdo da WebJobsWebJobs content
  • Ligações híbridas *Hybrid connections *
  • Integração de rede virtual *Virtual network integration *
  • Pontos finais de serviço *Service endpoints *
  • Rede de Entrega de Conteúdos Azure *Azure Content Delivery Network *

As características marcadas com um asterisco (*) estão planeadas para não seremgrafadas.Features marked with an asterisk (*) are planned to be unswapped.

Configurações que não são trocadas:Settings that aren't swapped:

  • Pontos finais de publicaçãoPublishing endpoints
  • Nomes de domínio personalizadosCustom domain names
  • Certificados não públicos e definições de TLS/SSLNon-public certificates and TLS/SSL settings
  • Configurações de escalaScale settings
  • Agendadores WebJobsWebJobs schedulers
  • Restrições ipIP restrictions
  • Sempre ligadoAlways On
  • Definições de diagnósticoDiagnostic settings
  • Partilha de recursos de origem cruzada (CORS)Cross-origin resource sharing (CORS)

Nota

Algumas definições de aplicações que se aplicam a definições não mapeadas também não são trocadas.Certain app settings that apply to unswapped settings are also not swapped. Por exemplo, uma vez que as definições de diagnóstico não são trocadas, as definições de aplicações relacionadas como WEBSITE_HTTPLOGGING_RETENTION_DAYS e também não são DIAGNOSTICS_AZUREBLOBRETENTIONDAYS trocadas, mesmo que não apareçam como configurações de slot.For example, since diagnostic 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.

Para configurar uma definição de aplicação ou uma cadeia de ligação para se colar a uma ranhura específica (não trocada), aceda à página de Configuração para essa ranhura.To configure an app setting or connection string to stick to a specific slot (not swapped), go to the Configuration page for that slot. Adicione ou edite uma definição e, em seguida, selecione a definição de ranhura de implementação.Add or edit a setting, and then select deployment slot setting. A seleção desta caixa de verificação diz ao Serviço de Aplicações que a definição não é permutável.Selecting this check box tells App Service that the setting is not swappable.

Definição de slot

Trocar duas ranhurasSwap two slots

Pode trocar slots de implementação na página de slots de implementação da sua aplicação e na página 'Vista Geral'.You can swap deployment slots on your app's Deployment slots page and the Overview page. Para obter detalhes técnicos sobre a permuta de slot, consulte o que acontece durante a troca.For technical details on the slot swap, see What happens during swap.

Importante

Antes de trocar uma aplicação de uma ranhura de implantação para a produção, certifique-se de que a produção é o seu slot alvo e que todas as definições na ranhura de origem estão configuradas exatamente como você quer ter em produção.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.

Para trocar slots de implementação:To swap deployment slots:

  1. Aceda à página de slots de implementação da sua aplicação e selecione Swap.Go to your app's Deployment slots page and select Swap.

    Botão de troca

    A caixa de diálogo Swap mostra as definições nas faixas de origem e alvo selecionadas que serão alteradas.The Swap dialog box shows settings in the selected source and target slots that will be changed.

  2. Selecione as ranhuras de Origem e Destino desejadas.Select the desired Source and Target slots. Normalmente, o alvo é a ranhura de produção.Usually, the target is the production slot. Além disso, selecione os separadores 'Alterações de Origem' e alterações de destino e verifique se as alterações de configuração são esperadas.Also, select the Source Changes and Target Changes tabs and verify that the configuration changes are expected. Quando terminar, pode trocar as ranhuras imediatamente selecionando Swap.When you're finished, you can swap the slots immediately by selecting Swap.

    Concluir a troca

    Para ver como a sua ranhura-alvo funcionaria com as novas definições antes de a troca realmente acontecer, não selecione Swap, mas siga as instruções em Swap com pré-visualização.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. Quando terminar, feche a caixa de diálogo selecionando Close.When you're finished, close the dialog box by selecting Close.

Se tiver algum problema, consulte as trocas de resolução de problemas.If you have any problems, see Troubleshoot swaps.

Troca com pré-visualização (troca de várias fases)Swap with preview (multi-phase swap)

Antes de trocar para a produção como a ranhura alvo, valide que a aplicação funciona com as definições trocadas.Before you swap into production as the target slot, validate that the app runs with the swapped settings. A ranhura de origem também é aquecida antes da conclusão do swap, o que é desejável para aplicações críticas da missão.The source slot is also warmed up before the swap completion, which is desirable for mission-critical applications.

Quando executa uma troca com pré-visualização, o Serviço de Aplicações executa a mesma operação de troca, mas faz uma pausa após o primeiro passo.When you perform a swap with preview, App Service performs the same swap operation but pauses after the first step. Em seguida, pode verificar o resultado da ranhura de paragem antes de concluir a troca.You can then verify the result on the staging slot before completing the swap.

Se cancelar a troca, o Serviço de Aplicações reaplica elementos de configuração para a ranhura de origem.If you cancel the swap, App Service reapplies configuration elements to the source slot.

Para trocar com pré-visualização:To swap with preview:

  1. Siga os passos nas ranhuras de implementação swap, mas selecione 'Executar swap' com pré-visualização.Follow the steps in Swap deployment slots but select Perform swap with preview.

    Trocar com pré-visualização

    A caixa de diálogo mostra-lhe como a configuração na ranhura de origem muda na fase 1 e como a origem e a ranhura do alvo mudam na fase 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. Quando estiver pronto para iniciar a troca, selecione Start Swap.When you're ready to start the swap, select Start Swap.

    Quando a fase 1 terminar, é notificado na caixa de diálogo.When phase 1 finishes, you're notified in the dialog box. Pré-visualizar a troca na ranhura de origem indo para https://<app_name>-<source-slot-name>.azurewebsites.net .Preview the swap in the source slot by going to https://<app_name>-<source-slot-name>.azurewebsites.net.

  3. Quando estiver pronto para concluir a troca pendente, selecione Complete Swap in Swap action e selecione Complete Swap.When you're ready to complete the pending swap, select Complete Swap in Swap action and select Complete Swap.

    Para cancelar uma troca pendente, selecione Cancelar Swap.To cancel a pending swap, select Cancel Swap instead.

  4. Quando terminar, feche a caixa de diálogo selecionando Close.When you're finished, close the dialog box by selecting Close.

Se tiver algum problema, consulte as trocas de resolução de problemas.If you have any problems, see Troubleshoot swaps.

Para automatizar uma troca em várias fases, consulte Automatismo com PowerShell.To automate a multi-phase swap, see Automate with PowerShell.

Reverta uma trocaRoll back a swap

Se ocorrerem erros na ranhura-alvo (por exemplo, a ranhura de produção) após uma troca de ranhuras, restaure as ranhuras nos seus estados de pré-troca troca trocando imediatamente as mesmas duas ranhuras.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.

Configurar a troca automáticaConfigure auto swap

Nota

A troca automática não é suportada em aplicações web no Linux.Auto swap isn't supported in web apps on Linux.

A troca automática simplifica os cenários do Azure DevOps onde pretende implementar a sua aplicação continuamente com zero arranques frios e zero tempo de inatividade para os clientes da app.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. Quando a troca automática é ativada a partir de uma ranhura para a produção, sempre que empurra as alterações de código para essa ranhura, o Serviço de Aplicações troca automaticamente a aplicação em produção depois de ser aquecida na ranhura de origem.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.

Nota

Antes de configurar a troca automática para a ranhura de produção, considere testar a troca automática numa ranhura de alvo não produtivo.Before you configure auto swap for the production slot, consider testing auto swap on a non-production target slot.

Para configurar a troca automática:To configure auto swap:

  1. Aceda à página de recursos da sua aplicação.Go to your app's resource page. Selecione configurações de > <desired source slot> > configuração > configuração configurações gerais.Select Deployment slots > <desired source slot> > Configuration > General settings.

  2. Para troca automática ativada, selecione On.For Auto swap enabled, select On. Em seguida, selecione a ranhura de destino desejada para a ranhura de implementação de troca automáticae selecione Guardar na barra de comando.Then select the desired target slot for Auto swap deployment slot, and select Save on the command bar.

    Seleções para configurar a troca automática

  3. Execute um impulso de código para a ranhura de origem.Execute a code push to the source slot. A troca automática ocorre após um curto período de tempo e a atualização é refletida no URL da sua ranhura alvo.Auto swap happens after a short time, and the update is reflected at your target slot's URL.

Se tiver algum problema, consulte as trocas de resolução de problemas.If you have any problems, see Troubleshoot swaps.

Especifique o aquecimento personalizadoSpecify custom warm-up

Algumas aplicações podem necessitar de ações de aquecimento personalizadas antes da troca.Some apps might require custom warm-up actions before the swap. O applicationInitialization elemento de configuração no web.config permite especificar as ações de inicialização personalizadas.The applicationInitialization configuration element in web.config lets you specify custom initialization actions. A operação de troca aguarda que este aquecimento personalizado termine antes de trocar com a ranhura do alvo.The swap operation waits for this custom warm-up to finish before swapping with the target slot. Aqui está uma amostra web.config fragmento.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>

Para obter mais informações sobre a personalização do applicationInitialization elemento, consulte as falhas de troca de slot de implementação mais comuns e como corrigi-las.For more information on customizing the applicationInitialization element, see Most common deployment slot swap failures and how to fix them.

Também pode personalizar o comportamento de aquecimento com uma ou ambas as seguintes definições de aplicações:You can also customize the warm-up behavior with one or both of the following app settings:

  • WEBSITE_SWAP_WARMUP_PING_PATH: O caminho para o ping para aquecer o seu site.WEBSITE_SWAP_WARMUP_PING_PATH: The path to ping to warm up your site. Adicione esta definição de aplicação especificando um caminho personalizado que começa com um corte como o valor.Add this app setting by specifying a custom path that begins with a slash as the value. Um exemplo é /statuscheck.An example is /statuscheck. O valor predefinido é /.The default value is /.
  • WEBSITE_SWAP_WARMUP_PING_STATUSES: Códigos de resposta HTTP válidos para o funcionamento do aquecimento.WEBSITE_SWAP_WARMUP_PING_STATUSES: Valid HTTP response codes for the warm-up operation. Adicione esta definição de aplicação com uma lista separada por vírgula de códigos HTTP.Add this app setting with a comma-separated list of HTTP codes. Um exemplo 200,202 é.An example is 200,202 . Se o código de estado devolvido não estiver na lista, as operações de aquecimento e troca são interrompidas.If the returned status code isn't in the list, the warmup and swap operations are stopped. Por predefinição, todos os códigos de resposta são válidos.By default, all response codes are valid.

Nota

O <applicationInitialization> elemento de configuração faz parte de cada arranque de aplicações, enquanto as duas configurações de aplicações de comportamento de aquecimento aplicam-se apenas a trocas de slots.The <applicationInitialization> configuration element is part of each app start-up, whereas the two warm-up behavior app settings apply only to slot swaps.

Se tiver algum problema, consulte as trocas de resolução de problemas.If you have any problems, see Troubleshoot swaps.

Monitorizar uma trocaMonitor a swap

Se a operação de troca demorar muito tempo a ser concluída, poderá obter informações sobre a operação de troca no registo de atividades.If the swap operation takes a long time to complete, you can get information on the swap operation in the activity log.

Na página de recursos da sua aplicação no portal, no painel esquerdo, selecione Registo de Atividade.On your app's resource page in the portal, in the left pane, select Activity log.

Uma operação de troca aparece na consulta de registo como Swap Web App Slots .A swap operation appears in the log query as Swap Web App Slots. Pode expandi-lo e selecionar uma das suboperações ou erros para ver os detalhes.You can expand it and select one of the suboperations or errors to see the details.

Tráfego de rotasRoute traffic

Por padrão, todos os pedidos do cliente para o URL de produção da aplicação http://<app_name>.azurewebsites.net são encaminhados para a ranhura de produção.By default, all client requests to the app's production URL (http://<app_name>.azurewebsites.net) are routed to the production slot. Pode encaminhar uma parte do tráfego para outra ranhura.You can route a portion of the traffic to another slot. Esta funcionalidade é útil se precisar de feedback do utilizador para uma nova atualização, mas não está pronto para a lançar para a produção.This feature is useful if you need user feedback for a new update, but you're not ready to release it to production.

Tráfego de produção de rotas automaticamenteRoute production traffic automatically

Para encaminhar automaticamente o tráfego de produção:To route production traffic automatically:

  1. Vá à página de recursos da sua aplicação e selecione slots de implementação.Go to your app's resource page and select Deployment slots.

  2. Na coluna Traffic % da faixa horária para a qual pretende encaminhar, especifique uma percentagem (entre 0 e 100) para representar a quantidade total de tráfego que pretende encaminhar.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. Selecione Guardar.Select Save.

    Definição de uma percentagem de tráfego

Após a definição ser guardada, a percentagem especificada de clientes é encaminhada aleatoriamente para a ranhura de não produção.After the setting is saved, the specified percentage of clients is randomly routed to the non-production slot.

Depois de um cliente ser automaticamente encaminhado para uma faixa específica, é "fixado" para essa ranhura durante a vida dessa sessão de clientes.After a client is automatically routed to a specific slot, it's "pinned" to that slot for the life of that client session. No navegador cliente, pode ver a ranhura a que a sua sessão está fixada, olhando para o x-ms-routing-name cookie nos seus cabeçalhos HTTP.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. Um pedido que é encaminhado para a ranhura de "encenação" tem o cookie x-ms-routing-name=staging .A request that's routed to the "staging" slot has the cookie x-ms-routing-name=staging. Um pedido que é encaminhado para a ranhura de produção tem o x-ms-routing-name=self cookie.A request that's routed to the production slot has the cookie x-ms-routing-name=self.

Nota

Junto ao portal Azure, também pode utilizar o az webapp traffic-routing set comando no CLI Azure para definir as percentagens de encaminhamento de ferramentas CI/CD como os oleodutos DevOps ou outros sistemas de automação.Next to the Azure portal, you can also use the az webapp traffic-routing set command in the Azure CLI to set the routing percentages from CI/CD tools like DevOps pipelines or other automation systems.

Tráfego de produção de rotas manualmenteRoute production traffic manually

Além do encaminhamento automático de tráfego, o Serviço de Aplicações pode encaminhar os pedidos para uma faixa horária específica.In addition to automatic traffic routing, App Service can route requests to a specific slot. Isto é útil quando pretende que os seus utilizadores possam optar ou optar pela sua aplicação beta.This is useful when you want your users to be able to opt in to or opt out of your beta app. Para encaminhar o tráfego de produção manualmente, utilize o x-ms-routing-name parâmetro de consulta.To route production traffic manually, you use the x-ms-routing-name query parameter.

Para permitir que os utilizadores optem pela sua aplicação beta, por exemplo, pode colocar este link na sua página web: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>

A cadeia x-ms-routing-name=self especifica a ranhura de produção.The string x-ms-routing-name=self specifies the production slot. Depois de o navegador cliente aceder ao link, é redirecionado para a ranhura de produção.After the client browser accesses the link, it's redirected to the production slot. Cada pedido subsequente tem o x-ms-routing-name=self cookie que fixa a sessão para a ranhura de produção.Every subsequent request has the x-ms-routing-name=self cookie that pins the session to the production slot.

Para permitir que os utilizadores optem pela sua aplicação beta, desaprova o mesmo parâmetro de consulta para o nome da ranhura de não produção.To let users opt in to your beta app, set the same query parameter to the name of the non-production slot. Eis um exemplo:Here's an example:

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

Por predefinição, são dadas novas ranhuras de 0% , mostrada em cinza.By default, new slots are given a routing rule of 0%, shown in grey. Quando definir explicitamente este valor 0% para (mostrado em texto preto), os seus utilizadores podem aceder manualmente à ranhura de preparação utilizando o x-ms-routing-name parâmetro de consulta.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. Mas não serão encaminhados automaticamente para a ranhura porque a percentagem de encaminhamento está definida para 0.But they won't be routed to the slot automatically because the routing percentage is set to 0. Este é um cenário avançado onde podes "esconder" a tua ranhura de encenação do público, ao mesmo tempo que permite que as equipas internas testem alterações na ranhura.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.

Eliminar uma ranhuraDelete a slot

Procure e selecione a sua aplicação.Search for and select your app. Selecione Slots > <slot to delete> > Desaguisamento Geral.Select Deployment slots > <slot to delete> > Overview. O tipo de aplicação é mostrado como Serviço de Aplicações (Slot) para lembrá-lo que está a visualizar uma ranhura de implementação.The app type is shown as App Service (Slot) to remind you that you're viewing a deployment slot. Selecione Excluir na barra de comando.Select Delete on the command bar.

Eliminar uma ranhura de implantação

Automatizar com o PowerShellAutomate with PowerShell

Nota

Este artigo foi atualizado para utilizar o novo módulo AZ do Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Pode continuar a utilizar o módulo AzureRM, que continuará a receber correções de erros até, pelo menos, dezembro de 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Para obter mais informações sobre o novo módulo Az e a compatibilidade do AzureRM, veja Apresentação do novo módulo Az do Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Para obter instruções de instalação do módulo Az, veja Instalar o Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Azure PowerShell é um módulo que fornece cmdlets para gerir o Azure através do Windows PowerShell, incluindo suporte para gerir slots de implementação no 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.

Para obter informações sobre a instalação e configuração do Azure PowerShell e sobre a autenticação do Azure PowerShell com a sua subscrição Azure, consulte Como instalar e configurar o 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.


Criar uma aplicação WebCreate a web app

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

Criar uma ranhuraCreate a slot

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

Iniciar um swap com uma pré-visualização (troca de várias fases) e aplicar a configuração do slot de destino na ranhura de origemInitiate 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

Cancelar uma permuta pendente (trocar com revisão) e restaurar a configuração da ranhura de origemCancel 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

Troca de blocos de implementaçãoSwap 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

Monitorize eventos de troca no registo de atividadesMonitor swap events in the activity log

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

Eliminar uma ranhuraDelete a slot

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

Automatize com modelos de Gestor de RecursosAutomate with Resource Manager templates

Os modelos do Gestor de Recursos Azure são ficheiros JSON declarativos utilizados para automatizar a implementação e configuração dos recursos Azure.Azure Resource Manager templates are declarative JSON files used to automate the deployment and configuration of Azure resources. Para trocar slots utilizando modelos de Gestor de Recursos, irá definir duas propriedades no Microsoft.Web/sites/slots e nos recursos Microsoft.Web/sites:To swap slots by using Resource Manager templates, you will set two properties on the Microsoft.Web/sites/slots and Microsoft.Web/sites resources:

  • buildVersion: trata-se de uma propriedade de cordas que representa a versão atual da aplicação implantada na ranhura.buildVersion: this is a string property which represents the current version of the app deployed in the slot. Por exemplo: "v1", "1.0.0.1", ou "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: esta é uma propriedade de cordas que especifica o que buildVersion a ranhura deve ter.targetBuildVersion: this is a string property that specifies what buildVersion the slot should have. Se o targetBuildVersion não for igual à buildVersion corrente, isto irá desencadear a operação de troca encontrando a ranhura que tem a especificada buildVersion .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.

Modelo de gestor de recursos de exemploExample Resource Manager template

O modelo seguinte do Gestor de Recursos atualizará buildVersion a ranhura de paragem e definirá targetBuildVersion a ranhura de produção.The following Resource Manager template will update the buildVersion of the staging slot and set the targetBuildVersion on the production slot. Isto vai trocar as duas ranhuras.This will swap the two slots. O modelo assume que já tem um webapp criado com uma ranhura chamada "staging".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')]"
            }
        }        
    ]
}

Este modelo de Gestor de Recursos é idempotente, o que significa que pode ser executado repetidamente e produzir o mesmo estado das ranhuras.This Resource Manager template is idempotent, meaning that it can be executed repeatedly and produce the same state of the slots. Após a primeira execução, targetBuildVersion corresponderá à buildVersion corrente, para que uma troca não seja desencadeada.After the first execution, targetBuildVersion will match the current buildVersion, so a swap will not be triggered.

Automatize com o CLIAutomate with the CLI

Para os comandos Azure CLI para slots de implementação, consulte a ranhura de implementação do webapp az.For Azure CLI commands for deployment slots, see az webapp deployment slot.

Trocas de resolução de problemasTroubleshoot swaps

Se ocorrer algum erro durante uma permutade ranhuras, é registado no D:\home\LogFiles\eventlog.xml.If any error occurs during a slot swap, it's logged in D:\home\LogFiles\eventlog.xml. Também está registado no registo de erros específico da aplicação.It's also logged in the application-specific error log.

Aqui estão alguns erros de troca comuns:Here are some common swap errors:

  • Um pedido HTTP para a raiz da aplicação é cronometrado.An HTTP request to the application root is timed. A operação de troca aguarda 90 segundos por cada pedido HTTP e retrição até 5 vezes.The swap operation waits for 90 seconds for each HTTP request, and retries up to 5 times. Se todas as recauchuções forem cronometradas, a operação de troca é interrompida.If all retries are timed out, the swap operation is stopped.

  • A inicialização de cache local pode falhar quando o conteúdo da aplicação exceder a quota de disco local especificada para a cache local.Local cache initialization might fail when the app content exceeds the local disk quota specified for the local cache. Para mais informações, consulte a visão geral da cache local.For more information, see Local cache overview.

  • Durante o aquecimento personalizado,os pedidos HTTP são feitos internamente (sem passar pelo URL externo).During custom warm-up, the HTTP requests are made internally (without going through the external URL). Podem falhar com certas regras de reescrita de URL em Web.config. Por exemplo, as regras para redirecionar nomes de domínio ou fazer cumprir HTTPS podem impedir que os pedidos de aquecimento cheguem ao código da aplicação.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. Para contornar esta questão, modifique as suas regras de reescrita adicionando as seguintes duas condições: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>
    
  • Sem um aquecimento personalizado, as regras de reescrita de URL ainda podem bloquear pedidos HTTP.Without a custom warm-up, the URL rewrite rules can still block HTTP requests. Para contornar esta questão, modifique as suas regras de reescrita adicionando a seguinte condição:To work around this issue, modify your rewrite rules by adding the following condition:

    <conditions>
      <add input="{REMOTE_ADDR}" pattern="^100?\." negate="true" />
      ...
    </conditions>
    
  • Algumas regras de restrição IP podem impedir que a operação de swap envie pedidos HTTP para a sua app.Some IP restriction rules might prevent the swap operation from sending HTTP requests to your app. Intervalos de endereços IPv4 que começam 10. e 100. são internos à sua implementação.IPv4 address ranges that start with 10. and 100. are internal to your deployment. Deve permitir que se conectem à sua aplicação.You should allow them to connect to your app.

  • Após trocas de slot, a aplicação pode experimentar recomeços inesperados.After slot swaps, the app may experience unexpected restarts. Isto porque depois de uma troca, a configuração de ligação do nome anfitrião sai de sincronização, o que por si só não causa recomeços.This is because after a swap, the hostname binding configuration goes out of sync, which by itself doesn't cause restarts. No entanto, certos eventos de armazenamento subjacentes (tais como falhas no volume de armazenamento) podem detetar estas discrepâncias e forçar todos os processos dos trabalhadores a reiniciar.However, certain underlying storage events (such as storage volume failovers) may detect these discrepancies and force all worker processes to restart. Para minimizar este tipo de reinícios, defina a definição da WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG=1 aplicação em todas as ranhuras.To minimize these types of restarts, set the WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG=1 app setting on all slots. No entanto, esta configuração da aplicação não funciona com aplicações da Windows Communication Foundation (WCF).However, this app setting does not work with Windows Communication Foundation (WCF) apps.

Próximos passosNext steps

Bloquear o acesso a faixas horárias não produçãoBlock access to non-production slots