Executar uma aplicação de N camadas em várias regiões do Azure para elevada disponibilidadeRun an N-tier application in multiple Azure regions for high availability

Esta arquitetura de referência mostra um conjunto de práticas comprovadas para a execução de uma aplicação de N camadas em várias regiões do Azure, para obter disponibilidade e uma infraestrutura de recuperação após desastre robusta.This reference architecture shows a set of proven practices for running an N-tier application in multiple Azure regions, in order to achieve availability and a robust disaster recovery infrastructure.

Arquitetura de rede de elevada disponibilidade para aplicações de N camadas do Azure"

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

ArquiteturaArchitecture

Esta arquitetura baseia-se na mostrada na aplicação de N camadas com o SQL Server.This architecture builds on the one shown in N-tier application with SQL Server.

  • Regiões primária e secundária.Primary and secondary regions. Utilize duas regiões para alcançar uma disponibilidade mais elevada.Use two regions to achieve higher availability. Uma é a região primária.One is the primary region. A outra região destina-se a ativação pós-falha.The other region is for failover.

  • Gestor de Tráfego do Azure.Azure Traffic Manager. O Gerenciador de tráfego roteia as solicitações de entrada para uma das regiões.Traffic Manager routes incoming requests to one of the regions. Durante as operações normais, este encaminha os pedidos para a região primária.During normal operations, it routes requests to the primary region. Se 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 that region becomes unavailable, Traffic Manager fails over to the secondary region. Para obter mais informações, veja a secção Configuração do Gestor de Tráfego.For more information, see the section Traffic Manager configuration.

  • Grupos de recursos.Resource groups. Crie grupos de recursos separados para a região primária, a região secundária e para o Gerenciador de tráfego.Create separate resource groups for the primary region, the secondary region, and for Traffic Manager. Desta forma, obtém a flexibilidade para gerir cada região como uma única coleção de recursos.This gives you the flexibility to manage each region as a single collection of resources. Por exemplo, pode reimplementar uma região, sem ter de encerrar a outra.For example, you could redeploy one region, without taking down the other one. Vincule os grupos de recursospara que você possa executar uma consulta para listar todos os recursos do aplicativo.Link the resource groups, so that you can run a query to list all the resources for the application.

  • Redes virtuais.Virtual networks. Crie uma rede virtual separada para cada região.Create a separate virtual network for each region. Verifique se os espaços de endereços não se sobrepõem.Make sure the address spaces do not overlap.

  • Grupo de Disponibilidade Always On do SQL Server.SQL Server Always On Availability Group. Se você estiver usando SQL Server, recomendamos que os grupos de disponibilidade do SQL Always on para alta disponibilidade.If you are using SQL Server, we recommend SQL Always On Availability Groups for high availability. Crie um único grupo de disponibilidade que inclua as instâncias do SQL Server em ambas as regiões.Create a single availability group that includes the SQL Server instances in both regions.

    Nota

    Considere também o banco de dados SQL do Azure, que fornece um banco de dados relacional como um serviço de nuvem.Also consider Azure SQL Database, which provides a relational database as a cloud service. Com a Base de Dados SQL Server, não precisa de configurar um grupo de disponibilidade ou gerir a ativação pós-falha.With SQL Database, you don't need to configure an availability group or manage failover.

  • Emparelhamento de rede virtual.Virtual network peering. Emparelhar as duas redes virtuais para permitir a replicação de dados da região primária para a região secundária.Peer the two virtual networks to allow data replication from the primary region to the secondary region. Para obter mais informações, consulte emparelhamento de rede virtual.For more information, see Virtual network peering.

RecomendaçõesRecommendations

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 interrupção regional afetar a região primária, você poderá usar o Gerenciador de tráfego para fazer failover 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. Tenha em atenção que pode implementar um pequeno número de VMs para um servidor de reserva ativo e, em seguida, aumentar horizontalmente, conforme necessário.Note that you could deploy a small number of VMs for hot standby and then scale out as needed.

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 US Central). 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.
  • Os pares residem na mesma área geográfica para satisfazer os requisitos de residência dos dados.Pairs reside within the same geography, to meet data residency requirements.

No entanto, certifique-se de que ambas as regiões dão suporte a todos os serviços do Azure necessários para seu aplicativo (consulte serviços por região).However, make sure that both regions support all of the Azure services needed for your application (see Services by region). Para obter mais informações sobre pares regionais, consulte continuidade de negócios e recuperação de desastres (BCDR): Regiões Emparelhadas do Azure.For more information about regional pairs, see Business continuity and disaster recovery (BCDR): Azure Paired Regions.

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

Quando configurar o Gestor de Tráfego, considere os seguintes pontos:Consider the following points when configuring Traffic Manager:

  • Encaminhamento.Routing. O Gerenciador de tráfego dá suporte a vários algoritmos de Roteamento.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, Gestor de Tráfego envia todos os pedidos para a região primária, a menos que a região primária fique inacessível.With this setting, Traffic Manager sends all requests to the primary region, unless the primary 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. Consulte Configurar o método de roteamento de failover.See Configure Failover routing method.
  • Sonda de estado de funcionamento.Health probe. O Gerenciador de tráfego usa uma investigação http (ou HTTPS) para monitorar a disponibilidade de cada região.Traffic Manager uses an HTTP (or HTTPS) probe to monitor the availability of each region. A sonda verifica a existência de uma resposta HTTP 200 para um caminho de URL especificado.The probe checks for an HTTP 200 response for a specified URL path. Como melhor prática, crie um ponto final 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 an endpoint that reports the overall health of the application, and use this endpoint for the health probe. 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. Para obter mais informações, consulte padrão de monitoramento do ponto de extremidade de integridade.For more information, see Health Endpoint Monitoring pattern.

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 a região primária ficou inacessível.The health probe must detect that the primary region has become unreachable.
  • Os servidores DNS têm de atualizar os registos DNS em cache do endereço IP, o qual depende do time-to-live (TTL) do DNS.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, consulte sobre o monitoramento do Traffic Manager.For details, see About Traffic Manager Monitoring.

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.

O comando a seguir CLI do Azure atualiza a prioridade:The following Azure CLI command updates the priority:

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

Outra abordagem passa por desativar temporariamente o ponto final até estar pronto para a reativação pós-falha:Another approach is to temporarily disable the endpoint until you are ready to fail back:

az network traffic-manager endpoint update --resource-group <resource-group> --profile-name <profile>
    --name <endpoint-name> --type azureEndpoints --endpoint-status Disabled

Dependendo do motivo de uma ativação pós-falha, pode ter de reimplementar os recursos numa região.Depending on the cause of a failover, you might need to redeploy the resources within a region. Antes da reativação pós-falha, realize um teste de preparação operacional.Before failing back, perform an operational readiness test. O teste deve verificar fatores como:The test should verify things like:

  • As VMs estão configuradas corretamente.VMs are configured correctly. (Todo o software necessário está instalado, o IIS está em execução, entre outros.)(All required software is installed, IIS is running, and so on.)
  • Os subsistemas da aplicação estão em bom estado.Application subsystems are healthy.
  • Teste funcional.Functional testing. (Por exemplo, a camada de base de dados está acessível a partir da camada Web.)(For example, the database tier is reachable from the web tier.)

Configurar os Grupos de Disponibilidade AlwaysOn do SQL ServerConfigure SQL Server Always On Availability Groups

Com as versões anteriores ao Windows Server 2016, os Grupos de Disponibilidade AlwaysOn do SQL Server necessitam de um controlador de domínio e todos os nós no grupo de disponibilidade têm de estar no mesmo domínio do Active Directory (AD).Prior to Windows Server 2016, SQL Server Always On Availability Groups require a domain controller, and all nodes in the availability group must be in the same Active Directory (AD) domain.

Para configurar o grupo de disponibilidade:To configure the availability group:

  • No mínimo, coloque dois controladores de domínio em cada região.At a minimum, place two domain controllers in each region.

  • Atribua um endereço IP estático a cada controlador de domínio.Give each domain controller a static IP address.

  • Emparelhar as duas redes virtuais para habilitar a comunicação entre elas.Peer the two virtual networks to enable communication between them.

  • Para cada rede virtual, adicione os endereços IP dos controladores de domínio (de ambas as regiões) à lista de servidores DNS.For each virtual network, add the IP addresses of the domain controllers (from both regions) to the DNS server list. Pode utilizar o seguinte comando da CLI.You can use the following CLI command. Para obter mais informações, consulte alterar servidores DNS.For more information, see Change DNS servers.

    az network vnet update --resource-group <resource-group> --name <vnet-name> --dns-servers "10.0.0.4,10.0.0.6,172.16.0.4,172.16.0.6"
    
  • Crie um Cluster WSFC ( Windows Server failover clustering ) que inclui as instâncias de SQL Server em ambas as regiões.Create a Windows Server Failover Clustering (WSFC) cluster that includes the SQL Server instances in both regions.

  • Crie um Grupo de Disponibilidade AlwaysOn do SQL Server que inclua as instâncias do SQL Server tanto na região primária como na secundária.Create a SQL Server Always On Availability Group that includes the SQL Server instances in both the primary and secondary regions. Para obter os passos seguintes, veja Extending Always On Availability Group to Remote Azure Datacenter (PowerShell) (Expandir o Grupo de Disponibilidade AlwaysOn para o Datacenter do Azure Remoto (PowerShell)).See Extending Always On Availability Group to Remote Azure Datacenter (PowerShell) for the steps.

    • Coloque a réplica primária na região primária.Put the primary replica in the primary region.

    • Coloque uma ou mais réplicas secundárias na região primária.Put one or more secondary replicas in the primary region. Configure-as para utilizar a consolidação síncrona com ativação pós-falha automática.Configure these to use synchronous commit with automatic failover.

    • Coloque uma ou mais réplicas secundárias na região secundária.Put one or more secondary replicas in the secondary region. Configure-as para utilizar a consolidação assíncrona, por motivos de desempenho.Configure these to use asynchronous commit, for performance reasons. (Caso contrário, todas as transações T-SQL têm de esperar por um percurso de ida e volta na rede para a região secundária.)(Otherwise, all T-SQL transactions have to wait on a round trip over the network to the secondary region.)

      Nota

      As réplicas de consolidação assíncrona não suportam a ativação pós-falha automática.Asynchronous commit replicas do not support automatic failover.

Considerações de disponibilidadeAvailability considerations

Com uma aplicação de N camadas complexa, pode não ter de replicar toda a aplicação na região secundária.With a complex N-tier app, you may not need to replicate the entire application in the secondary region. Em vez disso, pode replicar apenas um subsistema crítico necessário para suportar a continuidade do negócio.Instead, you might just replicate a critical subsystem that is needed to support business continuity.

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 do Gestor de Tráfego falhar, os clientes não poderão aceder à sua aplicação durante o período de indisponibilidade.If the Traffic Manager service fails, clients cannot access your application during the downtime. Examine o SLA do Traffic Managere determine se o uso do Gerenciador de tráfego só atende aos seus requisitos de negócios para alta disponibilidade.Review the Traffic Manager SLA, and determine whether using Traffic Manager alone meets your business requirements for high availability. Se não for o caso, pondere adicionar outra solução de gestão de tráfego para fins de reativação pós-falha.If not, consider adding another traffic management solution as a failback. Se o serviço Gestor de Tráfego do Azure falhar, altere os registos CNAME no DNS de modo a apontar para o outro serviço de gestão de tráfego.If the Azure Traffic Manager service fails, change your 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.)

Para o cluster do SQL Server, existem dois cenários de ativação pós-falha a ter em consideração:For the SQL Server cluster, there are two failover scenarios to consider:

  • Todas as réplicas da base de dados do SQL Server na região primária falham.All of the SQL Server database replicas in the primary region fail. Por exemplo, tal pode ocorrer durante uma falha regional.For example, this could happen during a regional outage. Nesse caso, tem realizar manualmente a ativação pós-falha do grupo de disponibilidade, apesar de o Gestor de Tráfego realizar automaticamente a ativação pós-falha no front-end.In that case, you must manually fail over the availability group, even though Traffic Manager automatically fails over on the front end. Siga os passos em Executar uma Ativação Pós-falha Manual Forçada de um Grupo de Disponibilidade do SQL Server, que descreve como efetuar uma ativação pós-falha forçada com o Management Studio do SQL Server, o Transact-SQL ou o PowerShell no SQL Server 2016.Follow the steps in Perform a Forced Manual Failover of a SQL Server Availability Group, which describes how to perform a forced failover by using SQL Server Management Studio, Transact-SQL, or PowerShell in SQL Server 2016.

    Aviso

    A ativação pós-falha forçada acarreta um risco de perda de dados.With forced failover, there is a risk of data loss. Assim que a região primária esteja novamente online, tire um instantâneo da base de dados e utilize tablediff para encontrar as diferenças.Once the primary region is back online, take a snapshot of the database and use tablediff to find the differences.

  • O Gestor de Tráfego efetua a ativação pós-falha para a região secundária, mas a réplica primária da base de dados do SQL Server continua disponível.Traffic Manager fails over to the secondary region, but the primary SQL Server database replica is still available. Por exemplo, a camada front-end pode falhar, sem afetar as VMs do SQL Server.For example, the front-end tier might fail, without affecting the SQL Server VMs. Nesse caso, o tráfego da Internet é encaminhado para a região secundária e essa região ainda pode estabelecer uma ligação com a réplica primária.In that case, Internet traffic is routed to the secondary region, and that region can still connect to the primary replica. No entanto, haverá uma maior latência, uma vez que as ligações do SQL Server estão a atravessar regiões.However, there will be increased latency, because the SQL Server connections are going across regions. Nesta situação, deve efetuar uma ativação pós-falha manual da seguinte forma:In this situation, you should perform a manual failover as follows:

    1. Ative temporariamente uma réplica da base de dados do SQL Server na região secundária para uma consolidação síncrona.Temporarily switch a SQL Server database replica in the secondary region to synchronous commit. Este procedimento vai assegurar a não ocorrência de perda de dados durante a ativação pós-falha.This ensures there won't be data loss during the failover.
    2. Efetue a ativação pós-falha para essa réplica.Fail over to that replica.
    3. Quando efetuar a reativação pós-falha para a região primária, restaure a definição de consolidação assíncrona.When you fail back to the primary region, restore the asynchronous commit setting.

Considerações sobre a capacidade de gestãoManageability considerations

Quando atualiza a implementação, atualize uma região de cada vez para reduzir a probabilidade de uma falha global provocada por uma configuração incorreta ou um erro na aplicação.When you update your deployment, update one region at a time to reduce the chance of a global failure from an incorrect configuration or an error in the application.

Teste a resiliência do sistema quanto a falhas.Test the resiliency of the system to failures. Seguem-se alguns cenários comuns de falha para teste:Here are some common failure scenarios to test:

  • Encerrar as instâncias de VM.Shut down VM instances.
  • Recursos de pressão, tal como CPU e memória.Pressure resources such as CPU and memory.
  • Desligar/atrasar a rede.Disconnect/delay network.
  • Falhar os processos.Crash processes.
  • Expirar certificados.Expire certificates.
  • Simular falhas de hardware.Simulate hardware faults.
  • Encerrar o serviço DNS nos controladores de domínio.Shut down the DNS service on the domain controllers.

Avalie os tempos de recuperação e verifique se cumprem os requisitos comerciais.Measure the recovery times and verify they meet your business requirements. Teste também os modos de combinações de falhas.Test combinations of failure modes, as well.

Talvez você queira examinar os seguintes cenários de exemplo do Azure que demonstram soluções específicas usando algumas das mesmas tecnologias:You may wish to review the following Azure example scenarios that demonstrate specific solutions using some of the same technologies: