Configurar ambientes de preparo no Serviço de Aplicativo do AzureSet 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 no Standard, Premiumou isolado Camada do plano do serviço de aplicativo.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. Os elementos de configurações e conteúdo de 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.

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

  • É possível validar as alterações no aplicativo em um slot de implantação de preparo antes de permutá-lo pelo slot de produção.You can validate app changes in a staging deployment slot before swapping it with the production slot.
  • Implantar um aplicativo em um slot primeiro e alterná-lo para produção garantem que todas as instâncias do slot estejam aquecidas antes de alterná-lo para 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ê for implantar seu aplicativo.This eliminates downtime when you deploy your app. O redirecionamento de tráfego é contínuo, e nenhuma solicitação é removida devido a operações de alternância.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 a troca, o slot com o aplicativo de preparo anterior terá 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 alternadas para o slot de produção não correspondem às suas expectativas, você pode realizar a mesma alternância imediatamente para ter o "último site válido 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 tipo 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 slotAdd a slot

O aplicativo precisa estar em execução na camada Standard, Premium ou Isolado para que seja possível habilitar 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. No Portal do Azure, abra a página de recursos do seu aplicativo.In the Azure portal, open your app's resource page.

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

    Adicionar um novo slot de implantação

    Observação

    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.

    Fonte de 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 da estrutura de linguagem, soquetes da Web, versão HTTP e número de bits da 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 como qualquer outro aplicativo do Serviço de Aplicativo.The staging slot has a management page just like any other App Service app. É possível 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 nenhum conteúdo, mesmo se as configurações são clonadas de outro slot.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. É possível fazer uma implantação no slot de outro branch do repositório ou de outro repositório.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 permutadas: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)

Observação

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.

Configuração do slot

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. Geralmente, 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.

    Troca completa

    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.

Troca 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.

    Alternância 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 alternância de várias fases, confira Automatização 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 alternância de slot, restaure os slots para seus estados de pré-alternância 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 troca automáticaConfigure auto swap

Observação

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.

Observação

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 Slots > > > de implantação desejados slot de origem > configurações gerais de configuração. <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 applicationInitialization elemento de configuração 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 applicationInitialization o elemento, 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 padrão é /.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 dos 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.

Observação

<applicationInitialization>faz parte de cada aplicativo de inicialização, onde essas duas configurações de aplicativo se aplicam somente a trocas de slot.<applicationInitialization> is part each app start-up, where as these two 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 troca é 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 um dos erros para ver os detalhes.You can expand it and select one of the suboperations or errors to see the details.

Rotear o 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. É possível rotear uma parte do tráfego para outro slot.You can route a portion of the traffic to another slot. Esse recurso é útil se você precisa de comentários do usuário para uma nova atualização, mas não está pronto para liberá-la 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 o 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 % do Tráfego do slot para o qual você deseja rotear, especifique um percentual (entre 0 e 100) para representar a quantidade de tráfego total que 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. Clique em Salvar.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 a sessão está fixada observando o cookie x-ms-routing-name nos 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 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 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.

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

Além do roteamento de tráfego automático, 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 local 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. Veja um exemplo:Here's an example:

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

Por padrão, novos slots recebem uma regra de 0%roteamento, mostrada em cinza.By default, new slots are given a routing rule of 0%, shown in grey. Quando você define esse valor explicitamente como 0% (mostrado em texto preto), os usuários podem acessar o slot de preparo manualmente usando o parâmetro x-ms-routing-name 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 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

Vá para a página de recursos do aplicativo.Go to your app's resource page. Selecione o slot dos Slots > <de implantação para excluir > > visão geral.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

Observação

Este artigo foi atualizado para usar o novo módulo Az do Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Você ainda pode usar o módulo AzureRM, que continuará a receber as correções de bugs 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 saber mais sobre o novo módulo Az e a compatibilidade com o AzureRM, confira 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, confira Instalar o Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

O Azure PowerShell é um módulo que fornece cmdlets para gerenciar o Azure por meio do Windows PowerShell, incluindo suporte ao gerenciamento de slots de implantação no Serviço de Aplicativo do Azure.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 mais informações sobre como instalar e configurar o PowerShell do Azure, e como autenticar o PowerShell do Azure com sua assinatura do Azure, consulte Como instalar e configurar o PowerShell do Microsoft Azure.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 um aplicativo 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 ARMAutomate with ARM templates

Os modelos do ARM são arquivos JSON declarativos usados para automatizar a implantação e a configuração dos recursos do Azure.ARM Templates are declarative JSON files used to automate the deployment and configuration of Azure resources. Para trocar os slots usando modelos ARM, você definirá duas propriedades nos recursos Microsoft. Web/sites/Slots e Microsoft. Web/sites :To swap slots using ARM 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 buildVersion atual, isso disparará a operação de permuta localizando o slot que tem o @no__t especificado-1.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 ARMExample ARM Template

O modelo ARM a seguir atualizará o buildVersion do slot de preparo e definirá o targetBuildVersion no slot de produção.The following ARM 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 de ARM é idempotente, o que significa que ele pode ser executado repetidamente e produzir o mesmo estado dos slots.This ARM 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á à @no__t atual-1, portanto, 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 obter os comandos da CLI do Azure para slots de implantação, confira Slot de implantação do az webapp.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 10. começam 100. com e 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 WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG=1 configuração do aplicativo 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.

Próximas etapasNext steps

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