Configurar ambientes de preparo no serviço Azure AppSet up staging environments in Azure App Service

Ao implantar seu aplicativo Web, aplicativo Web no Linux, back-end móvel ou aplicativo de API para Azure app serviço, você pode usar um slot de implantação separado em vez do slot de produção padrão quando estiver executando na camada de plano do serviço de aplicativo padrão, 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. Os slots de implantação são aplicativos ao vivo com seus próprios nomes de host.Deployment slots are live apps with their own host names. Elementos de configuração e conteúdo do aplicativo podem ser trocados entre dois slots de implantação, incluindo o slot de produção.App content and configurations elements can be swapped between two deployment slots, including the production slot.

Implantar seu aplicativo em um slot de não produção tem os seguintes benefícios:Deploying your application to a non-production slot has the following benefits:

  • Você pode validar as alterações do aplicativo em um slot de implantação de preparo antes de trocá-lo pelo slot de produção.You can validate app changes in a staging deployment slot before swapping it with the production slot.
  • A implantação de um aplicativo em um slot primeiro e sua troca na produção garante que todas as instâncias do slot sejam ativadas antes de serem trocadas na 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. Isso elimina o tempo de inatividade quando você implanta seu aplicativo.This eliminates downtime when you deploy your app. O redirecionamento de tráfego é contínuo e nenhuma solicitação é descartada devido a operações de permuta.The traffic redirection is seamless, and no requests are dropped because of swap operations. Você pode automatizar todo esse fluxo de trabalho configurando a troca automática quando a validação de pré-atualização não for necessária.You can automate this entire workflow by configuring auto swap when pre-swap validation isn't needed.
  • Após uma troca, o slot com o aplicativo preparado anteriormente agora tem o aplicativo de produção anterior.After a swap, the slot with previously staged app now has the previous production app. Se as alterações trocadas no slot de produção não forem as esperadas, você poderá executar a mesma troca imediatamente para obter o "último site bom conhecido" de volta.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 camada de plano do serviço de aplicativo dá suporte a um número diferente de Slots de implantação.Each App Service plan tier supports a different number of deployment slots. Não há nenhum custo adicional para usar os slots de implantação.There's no additional charge for using deployment slots. Para descobrir o número de Slots com suporte na camada do aplicativo, consulte limites do serviço de aplicativo.To find out the number of slots your app's tier supports, see App Service limits.

Para dimensionar seu aplicativo para uma camada diferente, verifique se a camada de destino dá suporte ao número de slots que seu aplicativo já usa.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 seu aplicativo tiver mais de cinco slots, você não poderá dimensioná-lo para a camada Standard , pois a camada Standard oferece suporte a apenas cinco slots de implantaçã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

O aplicativo deve estar em execução na camada Standard, Premiumou Isolated para que você habilite vários slots 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. na portal do Azure, procure e selecione serviços de aplicativos e selecione seu aplicativo.in the Azure portal, search for and select App Services and select your app.

    Pesquisar serviços de aplicativos

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

    Adicionar um novo bloco de implementação

    Nota

    Se o aplicativo ainda não estiver na camada Standard, Premiumou Isolated , você receberá uma mensagem que indica as camadas com suporte para habilitar a publicação em etapas.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 ponto, você tem a opção de selecionar Atualizar e ir para a guia escala do seu aplicativo 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 Adicionar um slot , dê um nome ao slot e selecione se deseja clonar uma configuração de aplicativo de outro slot de implantaçã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.

    Origem da configuração

    Você pode clonar uma configuração de qualquer slot existente.You can clone a configuration from any existing slot. As configurações que podem ser clonadas incluem configurações de aplicativo, cadeias de conexão, versões de estrutura de linguagem, soquetes Web, versão HTTP e bit de bits de plataforma.Settings that can be cloned include app settings, connection strings, language framework versions, web sockets, HTTP version, and platform bitness.

  4. Depois que o slot for adicionado, selecione fechar para fechar a caixa de diálogo.After the slot is added, select Close to close the dialog box. O novo slot agora é mostrado na página Slots de implantação .The new slot is now shown on the Deployment slots page. Por padrão, o tráfego% é definido como 0 para o novo slot, com todo o tráfego do cliente roteado para o slot 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 o novo slot de implantação para abrir a página de recursos do slot.Select the new deployment slot to open that slot's resource page.

    Título do slot de implantação

    O slot de preparo tem uma página de gerenciamento assim como qualquer outro aplicativo do serviço de aplicativo.The staging slot has a management page just like any other App Service app. Você pode alterar a configuração do slot.You can change the slot's configuration. O nome do slot é mostrado na parte superior da página para lembrá-lo de que você está exibindo o slot de implantação.The name of the slot is shown at the top of the page to remind you that you're viewing the deployment slot.

  6. Selecione a URL do aplicativo na página de recursos do slot.Select the app URL on the slot's resource page. O slot de implantação tem seu próprio nome de host e também é um aplicativo ativo.The deployment slot has its own host name and is also a live app. Para limitar o acesso público ao slot de implantação, consulte Azure app restrições de IP do serviço.To limit public access to the deployment slot, see Azure App Service IP restrictions.

O novo slot de implantação não tem conteúdo, mesmo se você clonar as configurações de um slot diferente.The new deployment slot has no content, even if you clone the settings from a different slot. Por exemplo, você pode publicar neste slot com o Git.For example, you can publish to this slot with Git. Você pode implantar no slot de uma ramificação de repositório diferente ou de um repositório diferente.You can deploy to the slot from a different repository branch or a different repository.

O que acontece durante uma permutaWhat happens during a swap

Etapas da operação de permutaSwap operation steps

Quando você troca dois slots (geralmente de um slot de preparo no slot de produção), o serviço de aplicativo faz o seguinte para garantir que o slot de destino não experimente 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. Aplique as seguintes configurações do slot de destino (por exemplo, o slot de produção) a todas as instâncias do slot de origem:Apply the following settings from the target slot (for example, the production slot) to all instances of the source slot:

    Qualquer um desses casos disparará todas as instâncias no slot de origem para reiniciar.Any of these cases trigger all instances in the source slot to restart. Durante a troca com visualização, isso marca o final da primeira fase.During swap with preview, this marks the end of the first phase. A operação de permuta está pausada e você pode validar que o slot de origem funciona corretamente com as configurações do slot de destino.The swap operation is paused, and you can validate that the source slot works correctly with the target slot's settings.

  2. Aguarde até que cada instância no slot de origem conclua sua reinicialização.Wait for every instance in the source slot to complete its restart. Se alguma instância não for reiniciada, a operação de permuta reverterá todas as alterações no slot de origem e interromperá a operação.If any instance fails to restart, the swap operation reverts all changes to the source slot and stops the operation.

  3. Se o cache local estiver habilitado, dispare a inicialização do cache local fazendo uma solicitação HTTP para a raiz do aplicativo ("/") em cada instância do slot 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 do cache local causa outra reinicialização em cada instância.Local cache initialization causes another restart on each instance.

  4. Se a troca automática estiver habilitada com a inicialização personalizadado aplicativo de disparo, fazendo uma solicitação HTTP para a raiz do aplicativo ("/") em cada instância do slot 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, dispare uma solicitação HTTP para a raiz do aplicativo do slot 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 uma instância retornar qualquer resposta HTTP, ela será considerada como ativada.If an instance returns any HTTP response, it's considered to be warmed up.

  5. Se todas as instâncias no slot de origem forem ativadas com êxito, troque os dois slots alternando as regras de roteamento para os dois slots.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 essa etapa, o slot de destino (por exemplo, o slot de produção) tem o aplicativo que foi anteriormente ativado no slot 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 o slot de origem tem o aplicativo de pré-permuta anteriormente no slot de destino, execute a mesma operação aplicando todas as configuraçõ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 permuta, todo o trabalho de inicializar os aplicativos trocados ocorre no slot de origem.At any point of the swap operation, all work of initializing the swapped apps happens on the source slot. O slot de destino permanece online enquanto o slot de origem está sendo preparado e ativado, independentemente de onde a troca tenha êxito 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 um slot de preparo pelo slot de produção, verifique se o slot de produção é sempre o slot de destino.To swap a staging slot with the production slot, make sure that the production slot is always the target slot. Dessa forma, a operação de permuta não afeta seu aplicativo de produção.This way, the swap operation doesn't affect your production app.

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

Quando você clona a configuração de outro slot 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 em uma permuta (não específico do slot), enquanto outros elementos de configuração permanecem no mesmo slot após uma permuta (específica do 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 a seguir mostram as configurações que são alteradas quando você permuta os slots.The following lists show the settings that change when you swap slots.

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

  • Configurações gerais, como versão do Framework, 32/64 bits, Web SocketsGeneral settings, such as framework version, 32/64-bit, web sockets
  • Configurações do aplicativo (podem ser configuradas para serem transfixadas em um slot)App settings (can be configured to stick to a slot)
  • Cadeias de conexão (podem ser configuradas para aderir a um slot)Connection strings (can be configured to stick to a slot)
  • Mapeamentos de manipuladorHandler mappings
  • Certificados públicosPublic certificates
  • Conteúdo de trabalhos WebWebJobs content
  • Conexões híbridas *Hybrid connections *
  • Integração de rede virtual *Virtual network integration *
  • Pontos de extremidade de serviço *Service endpoints *
  • Rede de distribuição de conteúdo do Azure *Azure Content Delivery Network *

Os recursos marcados com um asterisco (*) estão planejados para serem desalternados.Features marked with an asterisk (*) are planned to be unswapped.

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

  • Pontos de extremidade de publicaçãoPublishing endpoints
  • Nomes de domínio personalizadosCustom domain names
  • Certificados não públicos e configurações de TLS/SSLNon-public certificates and TLS/SSL settings
  • Configurações de escalaScale settings
  • Agendadores de trabalhos WebWebJobs schedulers
  • Restrições de IPIP restrictions
  • Sempre AtivoAlways On
  • Configurações do log de diagnósticoDiagnostic log settings
  • CORS (compartilhamento de recursos entre origens)Cross-origin resource sharing (CORS)

Nota

Determinadas configurações de aplicativo que se aplicam a configurações não alternadas também são trocadas.Certain app settings that apply to unswapped settings are also not swapped. Por exemplo, como as configurações de log de diagnóstico não são trocadas, as configurações de aplicativo relacionadas, como WEBSITE_HTTPLOGGING_RETENTION_DAYS e DIAGNOSTICS_AZUREBLOBRETENTIONDAYS, também não são trocadas, mesmo que elas não apareçam como configurações de slot.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.

Para configurar uma cadeia de conexão ou configuração de aplicativo para se conectar a um slot específico (não trocado), vá para a página de configuração desse 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. Adicione ou edite uma configuração e, em seguida, selecione configuração do slot de implantação.Add or edit a setting, and then select deployment slot setting. Marcar essa caixa de seleção informa ao serviço de aplicativo que a configuração não é intercambiável.Selecting this check box tells App Service that the setting is not swappable.

Definição do bloco

Alternar dois slotsSwap two slots

Você pode alternar os slots de implantação na página de Slots de implantação do aplicativo e na página visão geral .You can swap deployment slots on your app's Deployment slots page and the Overview page. Para obter detalhes técnicos sobre a troca de slot, consulte o que acontece durante a permuta.For technical details on the slot swap, see What happens during swap.

Importante

Antes de trocar um aplicativo de um slot de implantação em produção, verifique se a produção é o slot de destino e se todas as configurações no slot de origem estão configuradas exatamente como você deseja tê-las 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 permutar slots de implantação:To swap deployment slots:

  1. Vá para a página Slots de implantação do aplicativo e selecione alternar.Go to your app's Deployment slots page and select Swap.

    Botão Alternar

    A caixa de diálogo alternar mostra as configurações nos slots de origem e destino selecionados que serão alterados.The Swap dialog box shows settings in the selected source and target slots that will be changed.

  2. Selecione os slots de origem e de destino desejados.Select the desired Source and Target slots. Normalmente, o destino é o slot de produção.Usually, the target is the production slot. Além disso, selecione as guias 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 tiver terminado, você poderá trocar os slots imediatamente selecionando alternar.When you're finished, you can swap the slots immediately by selecting Swap.

    Concluir a troca

    Para ver como o slot de destino seria executado com as novas configurações antes que a permuta realmente aconteça, não selecione alternar, mas siga as instruções em alternar com 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 tiver terminado, feche a caixa de diálogo selecionando fechar.When you're finished, close the dialog box by selecting Close.

Se você tiver problemas, consulte solucionar problemas de trocas.If you have any problems, see Troubleshoot swaps.

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

Antes de trocar para produção como o slot de destino, valide se o aplicativo é executado com as configurações trocadas.Before you swap into production as the target slot, validate that the app runs with the swapped settings. O slot de origem também é ativado antes da conclusão da permuta, o que é desejável para aplicativos de missão crítica.The source slot is also warmed up before the swap completion, which is desirable for mission-critical applications.

Quando você executa uma troca com visualização, o serviço de aplicativo executa a mesma operação de permuta , mas pausa após a primeira etapa.When you perform a swap with preview, App Service performs the same swap operation but pauses after the first step. Em seguida, você pode verificar o resultado no slot de preparo antes de concluir a permuta.You can then verify the result on the staging slot before completing the swap.

Se você cancelar a troca, o serviço de aplicativo reaplicará os elementos de configuração ao slot de origem.If you cancel the swap, App Service reapplies configuration elements to the source slot.

Para alternar com a visualização:To swap with preview:

  1. Siga as etapas em trocar slots de implantação , mas selecione executar permuta com visualização.Follow the steps in Swap deployment slots but select Perform swap with preview.

    Alternar com visualização

    A caixa de diálogo mostra como a configuração no slot de origem muda na fase 1 e como a origem e o slot de destino são alterados 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 Iniciar permuta.When you're ready to start the swap, select Start Swap.

    Quando a fase 1 for concluída, você será notificado na caixa de diálogo.When phase 1 finishes, you're notified in the dialog box. Visualize a troca no slot de origem acessando 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 permuta pendente, selecione concluir permuta na ação de permuta e selecione concluir permuta.When you're ready to complete the pending swap, select Complete Swap in Swap action and select Complete Swap.

    Para cancelar uma permuta pendente, selecione Cancelar permuta em vez disso.To cancel a pending swap, select Cancel Swap instead.

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

Se você tiver problemas, consulte solucionar problemas de trocas.If you have any problems, see Troubleshoot swaps.

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

Reverter uma permutaRoll back a swap

Se ocorrerem erros no slot de destino (por exemplo, o slot de produção) após uma troca de slot, restaure os slots para seus Estados de pré-atualização alternando os mesmos dois slots imediatamente.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 tem suporte em aplicativos Web no Linux.Auto swap isn't supported in web apps on Linux.

A troca automática simplifica os cenários de DevOps do Azure em que você deseja implantar seu aplicativo continuamente com inícios inativos sem interrupção e sem tempo de inatividade para clientes do aplicativo.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 está habilitada de um slot para produção, sempre que você envia por push as alterações de código para esse slot, o serviço de aplicativo troca automaticamente o aplicativo em produção depois que ele é ativado no slot 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 o slot de produção, considere testar a troca automática em um slot de destino de não produção.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. Vá para a página de recursos do aplicativo.Go to your app's resource page. Selecione os Slots de implantação > <slot de origem desejado > configurações de > configuração de > geral.Select Deployment slots > <desired source slot> > Configuration > General settings.

  2. Para a troca automática habilitada, selecione ativado.For Auto swap enabled, select On. Em seguida, selecione o slot de destino desejado para o slot de implantação de permuta automáticae selecione salvar na barra de comandos.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 push de código para o slot 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 na URL do slot de destino.Auto swap happens after a short time, and the update is reflected at your target slot's URL.

Se você tiver problemas, consulte solucionar problemas de trocas.If you have any problems, see Troubleshoot swaps.

Especificar aquecimento personalizadoSpecify custom warm-up

Alguns aplicativos podem exigir ações de aquecimento personalizadas antes da troca.Some apps might require custom warm-up actions before the swap. O elemento de configuração applicationInitialization no Web. config permite que você especifique ações de inicialização personalizadas.The applicationInitialization configuration element in web.config lets you specify custom initialization actions. A operação de permuta aguarda que esse aquecimento personalizado seja concluído antes de alternar com o slot de destino.The swap operation waits for this custom warm-up to finish before swapping with the target slot. Aqui está um fragmento Web. config de exemplo.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 como personalizar o elemento applicationInitialization, consulte falhas de permuta de slot de implantação mais comuns e como corrigi-los.For more information on customizing the applicationInitialization element, see Most common deployment slot swap failures and how to fix them.

Você também pode personalizar o comportamento de aquecimento com uma ou ambas as seguintes configurações de aplicativo: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 aquecimento do seu site.WEBSITE_SWAP_WARMUP_PING_PATH: The path to ping to warm up your site. Adicione essa configuração de aplicativo especificando um caminho personalizado que começa com uma barra 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 a operação de aquecimento.WEBSITE_SWAP_WARMUP_PING_STATUSES: Valid HTTP response codes for the warm-up operation. Adicione essa configuração de aplicativo com uma lista separada por vírgulas 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 status retornado não estiver na lista, as operações aquecimento e swap serão interrompidas.If the returned status code isn't in the list, the warmup and swap operations are stopped. Por padrão, todos os códigos de resposta são válidos.By default, all response codes are valid.

Nota

O elemento de configuração <applicationInitialization> faz parte de cada inicialização de aplicativo, enquanto as duas configurações de aplicativo de comportamento de aquecimento se aplicam somente a trocas de slot.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 você tiver problemas, consulte solucionar problemas de trocas.If you have any problems, see Troubleshoot swaps.

Monitorar uma trocaMonitor a swap

Se a operação de permuta levar muito tempo para ser concluída, você poderá obter informações sobre a operação de permuta no log 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 do aplicativo no portal, no painel esquerdo, selecione log de atividades.On your app's resource page in the portal, in the left pane, select Activity log.

Uma operação de permuta é exibida na consulta de log como Swap Web App Slots.A swap operation appears in the log query as Swap Web App Slots. Você 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.

Rotear tráfegoRoute traffic

Por padrão, todas as solicitações de cliente para a URL de produção do aplicativo (http://<app_name>.azurewebsites.net) são roteadas para o slot 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. Você pode rotear uma parte do tráfego para outro slot.You can route a portion of the traffic to another slot. Esse recurso será útil se você precisar de comentários do usuário para uma nova atualização, mas não estiver pronto para liberá-lo para 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.

Rotear tráfego de produção automaticamenteRoute production traffic automatically

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

  1. Vá para a página de recursos do aplicativo e selecione Slots de implantação.Go to your app's resource page and select Deployment slots.

  2. Na coluna tráfego% do slot para o qual você deseja rotear, especifique uma porcentagem (entre 0 e 100) para representar a quantidade de tráfego total que você deseja rotear.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.

    Definindo um percentual de tráfego

Depois que a configuração é salva, a porcentagem especificada de clientes é roteada aleatoriamente para o slot de não produção.After the setting is saved, the specified percentage of clients is randomly routed to the non-production slot.

Depois que um cliente é roteado automaticamente para um slot específico, ele é "fixado" a esse slot durante a vida útil dessa sessão de cliente.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 do cliente, você pode ver em qual slot sua sessão está fixa examinando o x-ms-routing-name cookie em 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. Uma solicitação que é roteada para o slot de "preparo" 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. Uma solicitação que é roteada para o slot de produção tem o cookie x-ms-routing-name=self.A request that's routed to the production slot has the cookie x-ms-routing-name=self.

Nota

Ao lado do portal do Azure, você também pode usar o comando az webapp traffic-routing set no CLI do Azure para definir as porcentagens de roteamento de ferramentas de CI/CD, como pipelines 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.

Rotear tráfego de produção manualmenteRoute production traffic manually

Além do roteamento automático de tráfego, o serviço de aplicativo pode rotear solicitações para um slot específico.In addition to automatic traffic routing, App Service can route requests to a specific slot. Isso é útil quando você deseja que os usuários possam aceitar ou recusar seu aplicativo beta.This is useful when you want your users to be able to opt in to or opt out of your beta app. Para rotear o tráfego de produção manualmente, use o parâmetro de consulta x-ms-routing-name.To route production traffic manually, you use the x-ms-routing-name query parameter.

Para permitir que os usuários recusem seu aplicativo beta, por exemplo, você pode colocar esse link em sua página da 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 de caracteres x-ms-routing-name=self especifica o slot de produção.The string x-ms-routing-name=self specifies the production slot. Depois que o navegador do cliente acessa o link, ele é redirecionado para o slot de produção.After the client browser accesses the link, it's redirected to the production slot. Cada solicitação subsequente tem o x-ms-routing-name=self cookie que fixa a sessão ao slot 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 usuários aceitem seu aplicativo beta, defina o mesmo parâmetro de consulta como o nome do slot 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. Segue-se um exemplo:Here's an example:

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

Por padrão, novos slots recebem uma regra de roteamento de 0%, mostrados em cinza.By default, new slots are given a routing rule of 0%, shown in grey. Quando você define explicitamente esse valor como 0% (mostrado em texto preto), os usuários podem acessar o slot de preparo manualmente usando o parâmetro de consulta x-ms-routing-name.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 eles não serão roteados para o slot automaticamente porque a porcentagem de roteamento é definida como 0.But they won't be routed to the slot automatically because the routing percentage is set to 0. Esse é um cenário avançado em que você pode "Ocultar" o slot de preparo do público, permitindo que as equipes internas testem as alterações no slot.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.

Excluir um slotDelete a slot

Pesquise e selecione seu aplicativo.Search for and select your app. Selecione Slots de implantação > slot de<para excluir > visão geralde > .Select Deployment slots > <slot to delete> > Overview. Selecione excluir na barra de comandos.Select Delete on the command bar.

Excluir um slot 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 gerenciar o Azure por meio do Windows PowerShell, incluindo suporte para gerenciar slots de implantação no serviço Azure App.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 como instalar e configurar Azure PowerShell e sobre como autenticar Azure PowerShell com sua assinatura do 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 um slotCreate a slot

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

Iniciar uma troca com uma visualização (troca de várias fases) e aplicar a configuração do slot de destino ao slot 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 do slot 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

Trocar slots de implantaçã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

Monitorar eventos de permuta no log de atividadesMonitor swap events in the activity log

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

Excluir um slotDelete a slot

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

Automatizar com modelos do Resource ManagerAutomate with Resource Manager templates

Os modelos de Azure Resource Manager são arquivos JSON declarativos usados para automatizar a implantação e a configuração de recursos do Azure.Azure Resource Manager templates are declarative JSON files used to automate the deployment and configuration of Azure resources. Para trocar os slots usando modelos do Resource Manager, você definirá duas propriedades nos recursos Microsoft. Web/sites/Slots e 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: essa é uma propriedade de cadeia de caracteres que representa a versão atual do aplicativo implantado no slot.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: essa é uma propriedade de cadeia de caracteres que especifica o que buildVersion o slot deve ter.targetBuildVersion: this is a string property that specifies what buildVersion the slot should have. Se o targetBuildVersion não for igual ao buildVersionatual, isso disparará a operação de permuta encontrando o slot que tem o buildVersionespecificado.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.

Exemplo de modelo do Resource ManagerExample Resource Manager template

O modelo do Resource Manager a seguir atualizará o buildVersion do slot de preparo e definirá o targetBuildVersion no slot de produção.The following Resource Manager template will update the buildVersion of the staging slot and set the targetBuildVersion on the production slot. Isso mudará os dois slots.This will swap the two slots. O modelo pressupõe que você já tenha um webapp criado com um slot chamado "preparo".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')]"
            }
        }        
    ]
}

Esse modelo do Resource Manager é idempotente, o que significa que ele pode ser executado repetidamente e produzir o mesmo estado dos slots.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á à buildVersionatual, de modo que uma troca não será disparada.After the first execution, targetBuildVersion will match the current buildVersion, so a swap will not be triggered.

Automatizar com a CLIAutomate with the CLI

Para CLI do Azure comandos para slots de implantação, consulte AZ webapp Deployment slot.For Azure CLI commands for deployment slots, see az webapp deployment slot.

Solucionar problemas de trocasTroubleshoot swaps

Se ocorrer algum erro durante uma troca de slot, ele será registrado em D:\home\LogFiles\eventlog.xml.If any error occurs during a slot swap, it's logged in D:\home\LogFiles\eventlog.xml. Ele também é registrado no log de erros específico do aplicativo.It's also logged in the application-specific error log.

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

  • Uma solicitação HTTP para a raiz do aplicativo é cronometrada.An HTTP request to the application root is timed. A operação de permuta aguarda por 90 segundos para cada solicitação HTTP e tenta novamente até 5 vezes.The swap operation waits for 90 seconds for each HTTP request, and retries up to 5 times. Se todas as novas tentativas atingirem o tempo limite, a operação de permuta será interrompida.If all retries are timed out, the swap operation is stopped.

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

  • Durante o aquecimento personalizado, as solicitações HTTP são feitas internamente (sem passar pela URL externa).During custom warm-up, the HTTP requests are made internally (without going through the external URL). Eles podem falhar com determinadas regras de regravação de URL em Web. config. Por exemplo, regras para redirecionar nomes de domínio ou impor HTTPS podem impedir que solicitações de aquecimento atinjam o código do aplicativo.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 esse problema, modifique suas regras de reescrita adicionando as duas condições a seguir: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 regravação de URL ainda podem bloquear solicitações HTTP.Without a custom warm-up, the URL rewrite rules can still block HTTP requests. Para contornar esse problema, modifique 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 de IP podem impedir que a operação de permuta envie solicitações HTTP para seu aplicativo.Some IP restriction rules might prevent the swap operation from sending HTTP requests to your app. Os intervalos de endereços IPv4 que começam com 10. e 100. são internos à sua implantação.IPv4 address ranges that start with 10. and 100. are internal to your deployment. Você deve permitir que eles se conectem ao seu aplicativo.You should allow them to connect to your app.

  • Após trocas de slot, o aplicativo pode experimentar reinicializações inesperadas.After slot swaps, the app may experience unexpected restarts. Isso ocorre porque, após uma troca, a configuração de associação de nome de host fica fora de sincronia, o que por si só não causa reinicializações.This is because after a swap, the hostname binding configuration goes out of sync, which by itself doesn't cause restarts. No entanto, determinados eventos de armazenamento subjacentes (como failovers de volume de armazenamento) podem detectar essas discrepâncias e forçar a reinicialização de todos os processos de trabalho.However, certain underlying storage events (such as storage volume failovers) may detect these discrepancies and force all worker processes to restart. Para minimizar esses tipos de reinicializações, defina a configuração do aplicativoWEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG=1 em todos os slots.To minimize these types of restarts, set the WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG=1 app setting on all slots. No entanto, essa configuração de aplicativo não funciona com aplicativos Windows Communication Foundation (WCF).However, this app setting does not work with Windows Communication Foundation (WCF) apps.

Passos seguintesNext steps

Bloquear o acesso a slots de não produçãoBlock access to non-production slots