Executar uma aplicação web em várias regiões do Azure para elevada disponibilidadeRun a web application in multiple Azure regions for high availability

Esta arquitetura de referência mostra como executar uma aplicação do Serviço de Aplicações do Azure em várias regiões para assegurar elevada disponibilidade.This reference architecture shows how to run an Azure App Service application in multiple regions to achieve high availability.

Arquitetura de referência para um aplicativo web com elevada disponibilidade

Transferir um ficheiro do Visio desta arquitetura.Download a Visio file of this architecture.

ArquiteturaArchitecture

Esta arquitetura baseia-se na mostrada em Melhorar a escalabilidade numa aplicação Web.This architecture builds on the one shown in Improve scalability in a web application. As principais diferenças são:The main differences are:

  • Regiões primária e secundária.Primary and secondary regions. Esta arquitetura utiliza duas regiões para assegurar disponibilidade mais elevada.This architecture uses two regions to achieve higher availability. A aplicação é implementada para cada região.The application is deployed to each region. Durante as operações normais, o tráfego de rede é encaminhado para a região primária.During normal operations, network traffic is routed to the primary region. Se a região primária ficar indisponível, o tráfego será encaminhado para a região secundária.If the primary region becomes unavailable, traffic is routed to the secondary region.
  • DNS do Azure.Azure DNS. O DNS do Azure é um serviço de alojamento dos domínios DNS que fornece resolução de nomes através da infraestrutura do Microsoft Azure.Azure DNS is a hosting service for DNS domains, providing name resolution using Microsoft Azure infrastructure. Ao alojar os seus domínios no Azure, pode gerir os recursos DNS com as mesmas credenciais, APIs, ferramentas e faturação dos seus outros serviços do Azure.By hosting your domains in Azure, you can manage your DNS records using the same credentials, APIs, tools, and billing as your other Azure services.
  • Gestor de Tráfego do Azure.Azure Traffic Manager. O Gestor de Tráfego encaminha os pedidos recebidos para a região primária.Traffic Manager routes incoming requests to the primary region. Se a aplicação que está a executar esta região ficar indisponível, o Gestor de Tráfego efetuará a ativação pós-falha para a região secundária.If the application running that region becomes unavailable, Traffic Manager fails over to the secondary region.
  • Georreplicação da Base de Dados SQL e do Cosmos DB.Geo-replication of SQL Database and Cosmos DB.

Uma arquitetura de várias regiões pode fornecer maior disponibilidade em comparação com a implementação de uma única região.A multi-region architecture can provide higher availability than deploying to a single region. Se uma falha regional afetar a região primária, poderá utilizar o Gestor de Tráfego para efetuar a ativação pós-falha para a região secundária.If a regional outage affects the primary region, you can use Traffic Manager to fail over to the secondary region. Esta arquitetura também poderá ajudar se um subsistema individual da aplicação falhar.This architecture can also help if an individual subsystem of the application fails.

Existem várias abordagens gerais para assegurar elevada disponibilidade nas regiões:There are several general approaches to achieving high availability across regions:

  • Modo ativo/passivo com reserva ativa.Active/passive with hot standby. O tráfego segue para uma região, enquanto a outra aguarda na reserva ativa.Traffic goes to one region, while the other waits on hot standby. Reserva ativa significa que as VMs na região secundária são alocadas e executadas de forma permanente.Hot standby means the VMs in the secondary region are allocated and running at all times.
  • Modo ativo/passivo com reserva progressiva.Active/passive with cold standby. O tráfego segue para uma região, enquanto a outra aguarda na reserva progressiva.Traffic goes to one region, while the other waits on cold standby. Reserva progressiva significa que as VMs na região secundária não são atribuídas até que sejam necessárias para a ativação pós-falha.Cold standby means the VMs in the secondary region are not allocated until needed for failover. Esta abordagem tem um custo de execução inferior, mas geralmente demora mais tempo a ficar online durante uma falha.This approach costs less to run, but will generally take longer to come online during a failure.
  • Modo ativo/ativo.Active/active. Ambas as regiões estão ativas e a carga dos pedidos é balanceada entre ambas.Both regions are active, and requests are load balanced between them. Se uma região ficar indisponível, esta será retirada da rotação.If one region becomes unavailable, it is taken out of rotation.

Esta arquitetura de referência centra-se no modo ativo/passivo com reserva ativa e utiliza o Gestor de Tráfego para a ativação pós-falha.This reference architecture focuses on active/passive with hot standby, using Traffic Manager for failover.

RecomendaçõesRecommendations

Os requisitos podem ser diferentes da arquitetura descrita aqui.Your requirements might differ from the architecture described here. Utilize as recomendações nesta secção como um ponto de partida.Use the recommendations in this section as a starting point.

Emparelhamento regionalRegional pairing

Cada região do Azure é emparelhada com outra região na mesma geografia.Each Azure region is paired with another region within the same geography. Em geral, escolha regiões do mesmo par regional (por exemplo, EUA Leste 2 e EUA Central).In general, choose regions from the same regional pair (for example, East US 2 and Central US). Benefícios desta opção:Benefits of doing so include:

  • Em caso de uma falha abrangente, a recuperação de, pelo menos, uma região em cada par tem prioridade.If there is a broad outage, recovery of at least one region out of every pair is prioritized.
  • As atualizações planeadas do sistema Azure são implementadas em regiões emparelhadas sequencialmente, para minimizar a possibilidade de períodos de indisponibilidade.Planned Azure system updates are rolled out to paired regions sequentially to minimize possible downtime.
  • Na maioria dos casos, os pares regionais residem na mesma área geográfica para satisfazer os requisitos de residência dos dados.In most cases, regional pairs reside within the same geography to meet data residency requirements.

No entanto, verifique se ambas as regiões suportam todos os serviços do Azure necessários para a sua aplicação.However, make sure that both regions support all of the Azure services needed for your application. Veja Serviços por região.See Services by region. Para obter mais informações sobre pares regionais, consulte Business continuidade e recuperação após desastre (BCDR): Regiões Emparelhadas do Azure.For more information about regional pairs, see Business continuity and disaster recovery (BCDR): Azure Paired Regions.

Grupos de recursosResource groups

Considere colocar a região primária, a região secundária e o Gestor de Tráfego em grupos de recursos separados.Consider placing the primary region, secondary region, and Traffic Manager into separate resource groups. Este procedimento permite-lhe gerir os recursos implementados para cada região como uma única coleção.This lets you manage the resources deployed to each region as a single collection.

Configuração do Gestor de TráfegoTraffic Manager configuration

Encaminhamento.Routing. O Gestor de Tráfego suporta vários algoritmos de encaminhamento.Traffic Manager supports several routing algorithms. Para o cenário descrito neste artigo, utilize o encaminhamento prioritário (anteriormente denominado encaminhamento ativação pós-falha).For the scenario described in this article, use priority routing (formerly called failover routing). Com esta definição, o Gestor de Tráfego envia todos os pedidos para a região primária, a menos que o ponto final dessa região fique inacessível.With this setting, Traffic Manager sends all requests to the primary region unless the endpoint for that region becomes unreachable. Nessa altura, este efetua a ativação pós-falha automaticamente para a região secundária.At that point, it automatically fails over to the secondary region. Veja Configurar o método de encaminhamento de ativação pós-falha.See Configure Failover routing method.

Sonda de estado de funcionamento.Health probe. O Gestor de Tráfego utiliza uma sonda HTTP (ou HTTPS) para monitorizar a disponibilidade de cada ponto final.Traffic Manager uses an HTTP (or HTTPS) probe to monitor the availability of each endpoint. A sonda fornece ao Gestor de Tráfego um teste de aprovação/reprovação para a ativação pós-falha para a região secundária.The probe gives Traffic Manager a pass/fail test for failing over to the secondary region. Este funciona através do envio de um pedido para um caminho URL especificado.It works by sending a request to a specified URL path. Se obtiver uma resposta que não 200 dentro do período de tempo limite, a sonda falhará.If it gets a non-200 response within a timeout period, the probe fails. Após quatro pedidos falhados, o Gestor de Tráfego marca o ponto final como degradado e efetua a ativação pós-falha para o outro ponto final.After four failed requests, Traffic Manager marks the endpoint as degraded and fails over to the other endpoint. Para obter detalhes, veja Monitorização e ativação pós-falha do ponto final do Gestor de Tráfego.For details, see Traffic Manager endpoint monitoring and failover.

Como melhor prática, crie um ponto final da sonda de estado de funcionamento que reporte o estado de funcionamento geral da aplicação e utilize este ponto final para a sonda de estado de funcionamento.As a best practice, create a health probe endpoint that reports the overall health of the application and use this endpoint for the health probe. O ponto final deve verificar a existência de dependências críticas, tal como as aplicações do Serviço de Aplicações, a fila de armazenamento e a Base de Dados SQL.The endpoint should check critical dependencies such as the App Service apps, storage queue, and SQL Database. Caso contrário, a sonda pode indicar que um ponto final está em bom estado quando, na verdade, as partes críticas da aplicação estão a falhar.Otherwise, the probe might report a healthy endpoint when critical parts of the application are actually failing.

Por outro lado, não utilize a sonda de estado de funcionamento para verificar os serviços de prioridade inferior.On the other hand, don't use the health probe to check lower priority services. Por exemplo, se um serviço de e-mail ficar inativo, a aplicação poderá mudar para um segundo fornecedor ou enviar os e-mails mais tarde.For example, if an email service goes down the application can switch to a second provider or just send emails later. Esta situação não é suficientemente prioritária para fazer com que a aplicação efetue a ativação pós-falha.This is not a high enough priority to cause the application to fail over. Para obter mais informações, consulte a padrão de monitorização de ponto final do Estado de funcionamento.For more information, see the Health Endpoint Monitoring pattern.

SQL DatabaseSQL Database

Utilize a Georreplicação Ativa para criar uma réplica secundária legível numa região diferente.Use Active Geo-Replication to create a readable secondary replica in a different region. Pode ter até quatro réplicas secundárias legíveis.You can have up to four readable secondary replicas. Efetue a ativação pós-falha para uma base de dados secundária se a base de dados primária falhar ou tiver sido colocada offline.Fail over to a secondary database if your primary database fails or needs to be taken offline. A Georreplicação Ativa pode ser configurada para qualquer base de dados em qualquer conjunto de bases de dados elásticas.Active Geo-Replication can be configured for any database in any elastic database pool.

BD do CosmosCosmos DB

Cosmos DB suporta a georreplicação entre regiões com vários mestres (várias regiões de escrita).Cosmos DB supports geo-replication across regions with multi-master (multiple write regions). Em alternativa, pode designar uma região como a região gravável e as outras réplicas só de leitura.Alternatively, you can designate one region as the writable region and the others as read-only replicas. Se ocorrer uma falha regional, poderá efetuar a ativação pós-falha ao selecionar outra região para ser a região de escrita.If there is a regional outage, you can fail over by selecting another region to be the write region. O SDK do cliente envia automaticamente pedidos de escrita para a região de escrita atual, por isso, não precisa de atualizar a configuração do cliente após uma ativação pós-falha.The client SDK automatically sends write requests to the current write region, so you don't need to update the client configuration after a failover. Para obter mais informações, consulte distribuição de dados Global com o Azure Cosmos DB.For more information, see Global data distribution with Azure Cosmos DB.

Nota

Todas as réplicas pertencem ao mesmo grupo de recursos.All of the replicas belong to the same resource group.

ArmazenamentoStorage

Para o Armazenamento do Microsoft Azure, utilize armazenamento georredundante com acesso de leitura (RA-GRS).For Azure Storage, use read-access geo-redundant storage (RA-GRS). Com o armazenamento RA-GRS, os dados são replicados para uma região secundária.With RA-GRS storage, the data is replicated to a secondary region. Tem acesso só de leitura aos dados na região secundária através de um ponto de final separado.You have read-only access to the data in the secondary region through a separate endpoint. Se ocorrer uma falha ou um desastre regional, a equipa do Armazenamento do Microsoft Azure poderá decidir realizar uma ativação pós-falha geográfica para a região secundária.If there is a regional outage or disaster, the Azure Storage team might decide to perform a geo-failover to the secondary region. Não é precisa qualquer ação por parte do cliente para esta ativação pós-falha.There is no customer action required for this failover.

Para o Armazenamento de filas, crie uma fila de cópia de segurança na região secundária.For Queue storage, create a backup queue in the secondary region. Durante a ativação pós-falha, a aplicação pode utilizar a fila de cópia de segurança até que a região primária fique disponível novamente.During failover, the app can use the backup queue until the primary region becomes available again. Dessa forma, o aplicativo ainda pode processar novos pedidos.That way, the application can still process new requests.

Considerações de disponibilidade - Gestor de tráfegoAvailability considerations - Traffic Manager

O Gestor de Tráfego efetuará a ativação pós-falha automaticamente se a região primária ficar indisponível.Traffic Manager automatically fails over if the primary region becomes unavailable. Quando o Gestor de Tráfego realiza a ativação pós-falha, existe um período de tempo durante o qual os clientes não conseguem aceder à aplicação.When Traffic Manager fails over, there is a period of time when clients cannot reach the application. A duração é afetada pelos seguintes fatores:The duration is affected by the following factors:

  • A sonda de estado de funcionamento tem de detetar que o datacenter primário ficou inacessível.The health probe must detect that the primary datacenter has become unreachable.
  • Os servidores de Serviços de Nomes de Domínio (DNS) têm de atualizar os registos DNS em cache do endereço IP, o qual depende do time-to-live (TTL) do DNS.Domain name service (DNS) servers must update the cached DNS records for the IP address, which depends on the DNS time-to-live (TTL). O TTL predefinido é de 300 segundos (5 minutos), mas também pode configurar este valor quando cria o perfil do Gestor de Tráfego.The default TTL is 300 seconds (5 minutes), but you can configure this value when you create the Traffic Manager profile.

Para obter detalhes, veja Acerca da Monitorização do Gestor de Tráfego.For details, see About Traffic Manager Monitoring.

O Gestor de Tráfego é um ponto de falha possível no sistema.Traffic Manager is a possible failure point in the system. Se o serviço falhar, os clientes não poderão aceder à aplicação durante o período de indisponibilidade.If the service fails, clients cannot access your application during the downtime. Reveja o Contrato de nível de serviço (SLA) do Gestor de Tráfego e determine se a utilização do Gestor de Tráfego cumpre os seus requisitos de negócio para elevada disponibilidade.Review the Traffic Manager service level agreement (SLA) and determine whether using Traffic Manager alone meets your business requirements for high availability. Caso contrário, considere adicionar outra solução de gestão de tráfego como fallback.If not, consider adding another traffic management solution as a fallback. Se o serviço do Gestor de Tráfego do Microsoft Azure falhar, altere os registos do nome canónico (CNAME) no DNS para que aponte para outro serviço de gestão de tráfego.If the Azure Traffic Manager service fails, change your canonical name (CNAME) records in DNS to point to the other traffic management service. Este passo tem de ser realizado manualmente e a aplicação ficará indisponível até que as alterações do DNS sejam propagadas.This step must be performed manually, and your application will be unavailable until the DNS changes are propagated.

Considerações de disponibilidade - base de dados SQLAvailability Considerations - SQL Database

O objetivo do ponto de recuperação (RPO) e a hora da recuperação estimada (ERT) da Base de Dados SQL Server estão documentados em Descrição geral da continuidade do negócio com a Base de Dados SQL do Azure.The recovery point objective (RPO) and estimated recovery time (ERT) for SQL Database are documented in Overview of business continuity with Azure SQL Database.

Considerações de disponibilidade - armazenamentoAvailability Considerations - Storage

O armazenamento RA-GRS fornece um armazenamento durável, mas é importante compreender o que pode acontecer durante uma falha:RA-GRS storage provides durable storage, but it's important to understand what can happen during an outage:

  • Se ocorrer uma falha de armazenamento, haverá um período de tempo no qual não terá acesso de escrita aos dados.If a storage outage occurs, there will be a period of time when you don't have write-access to the data. Pode continuar a ler a partir do ponto final secundário durante a falha.You can still read from the secondary endpoint during the outage.

  • Se uma falha ou um desastre regional afetar a localização primária e não puder recuperar os dados, a equipa de Armazenamento do Microsoft Azure poderá optar por realizar uma ativação pós-falha geográfica para a região secundária.If a regional outage or disaster affects the primary location and the data there cannot be recovered, the Azure Storage team may decide to perform a geo-failover to the secondary region.

  • A replicação de dados para a região secundária é executada de forma assíncrona.Data replication to the secondary region is performed asynchronously. Por conseguinte, se for realizada uma ativação pós-falha geográfica, é possível que ocorra alguma perda de dados caso não possa recuperar os dados da região primária.Therefore, if a geo-failover is performed, some data loss is possible if the data can't be recovered from the primary region.

  • As falhas transitórias, tal como uma falha de rede, não irão acionar uma ativação pós-falha de armazenamento.Transient failures, such as a network outage, will not trigger a storage failover. Crie uma aplicação para que seja resiliente a falhas transitórias.Design your application to be resilient to transient failures. Possíveis mitigações:Possible mitigations:

    • Leitura a partir da região secundária.Read from the secondary region.
    • Alteração temporária para outra conta de armazenamento para novas operações de escrita (por exemplo, para mensagens de fila).Temporarily switch to another storage account for new write operations (for example, to queue messages).
    • Cópia de dados da região secundária para outra conta de armazenamento.Copy data from the secondary region to another storage account.
    • Funcionalidade reduzida até à reativação pós-falha do sistema.Provide reduced functionality until the system fails back.

Para obter informações, veja O que fazer em caso de falha do Armazenamento do Azure.For more information, see What to do if an Azure Storage outage occurs.

Considerações sobre a capacidade de gestão - Gestor de tráfegoManageability Considerations - Traffic Manager

Se o Gestor de Tráfego efetuar uma ativação pós-falha, recomendamos a execução de uma reativação pós-falha manual ao invés de implementar uma reativação pós-falha automática.If Traffic Manager fails over, we recommend performing a manual failback rather than implementing an automatic failback. Caso contrário, a aplicação pode alternar continuamente entre as regiões.Otherwise, you can create a situation where the application flips back and forth between regions. Verifique se todos os subsistemas da aplicação estão em bom estado antes da reativação pós-falha.Verify that all application subsystems are healthy before failing back.

Tenha em atenção que, por predefinição, o Gestor de Tráfego efetua a reativação pós-falha automaticamente.Note that Traffic Manager automatically fails back by default. Para evitar esta situação, reduza manualmente a prioridade da região primária após um evento de ativação pós-falha.To prevent this, manually lower the priority of the primary region after a failover event. Por exemplo, suponha que a região primária tem uma prioridade 1 e a secundária uma prioridade 2.For example, suppose the primary region is priority 1 and the secondary is priority 2. Após uma ativação pós-falha, defina a região primária para uma prioridade 3, para impedir a reativação pós-falha automática.After a failover, set the primary region to priority 3, to prevent automatic failback. Quando estiver pronto para reverter o processo, atualize a prioridade para 1.When you are ready to switch back, update the priority to 1.

Os seguintes comandos atualizam a prioridade.The following commands update the priority.

PowerShellPowerShell

$endpoint = Get-AzureRmTrafficManagerEndpoint -Name <endpoint> -ProfileName <profile> -ResourceGroupName <resource-group> -Type AzureEndpoints
$endpoint.Priority = 3
Set-AzureRmTrafficManagerEndpoint -TrafficManagerEndpoint $endpoint

Para obter mais informações, veja Cmdlets do Gestor de Tráfego do Microsoft Azure.For more information, see Azure Traffic Manager Cmdlets.

CLI do AzureAzure CLI

az network traffic-manager endpoint update --resource-group <resource-group> --profile-name <profile> \
    --name <endpoint-name> --type azureEndpoints --priority 3

Considerações sobre a capacidade de gestão - base de dados SQLManageability Considerations - SQL Database

Se a base de dados primária falhar, efetue uma ativação pós-falha manual para a base de dados secundária.If the primary database fails, perform a manual failover to the secondary database. Veja Restaurar uma Base de Dados SQL do Azure ou fazer a ativação pós-falha para uma secundária.See Restore an Azure SQL Database or failover to a secondary. A base de dados secundária permanece só de leitura até efetuar a ativação pós-falha.The secondary database remains read-only until you fail over.