Criar serviços globalmente disponíveis usando o banco de dados SQL do Azure

Aplica-se a:Banco de Dados SQL do Azure

Ao criar e implantar serviços em nuvem com o Banco de Dados SQL do Azure, você usa replicação geográfica ativa ou grupos de failover para fornecer resiliência a interrupções regionais e falhas catastróficas. O mesmo recurso permite que você crie aplicativos distribuídos globalmente, otimizados para acesso local aos dados. Este artigo aborda os padrões comuns de aplicativos, incluindo os benefícios e as vantagens e desvantagens de cada opção.

Observação

Se estiver utilizando bancos de dados Premium ou Comercialmente Crítico e pools elásticos, será possível torná-los resilientes a interrupções regionais convertendo-os para configuração de implantação com redundância de zona. Veja Bancos de dados com redundância de zona.

Cenário 1: Usando duas regiões do Azure para continuidade dos negócios com tempo de inatividade mínimo

Nesse cenário, os aplicativos têm as seguintes características:

  • O aplicativo está ativo em uma região do Azure
  • Todas as sessões do banco de dados exigem acesso de leitura e gravação (RW) nos dados
  • A camada da Web e a camada de dados devem estar colocalizadas para reduzir a latência e o custo de tráfego
  • Essencialmente, o tempo de inatividade é um risco maior de negócios para esses aplicativos do que a perda de dados

Nesse caso, a topologia de implantação do aplicativo é otimizada para lidar com desastres regionais quando todos os componentes do aplicativo precisam fazer failover juntos. O diagrama abaixo mostra essa topologia. Para redundância geográfica, os recursos do aplicativo são implantados nas Regiões A e B. No entanto, os recursos da Região B não são utilizados até que a Região A falhe. Um grupo de failover é configurado entre as duas regiões para gerenciar o failover, a replicação e a conectividade do banco de dados. O serviço Web em ambas as regiões é configurado para acessar o banco de dados por meio do ouvinte de leitura/gravação <failover-group-name>.database.windows.net (1). O Gerenciador de Tráfego do Azure é configurado para usar o método de roteamento de prioridade (2).  

Observação

O Gerenciador de Tráfego do Azure é usado neste artigo apenas para fins ilustrativos. Você pode usar qualquer solução de balanceamento de carga que dê suporte ao método de roteamento de prioridade.

O seguinte diagrama mostra essa configuração antes de uma interrupção:

Scenario 1. Configuration before the outage.

Após uma interrupção na região primária, o Banco de Dados SQL detecta que o banco de dados primário não está acessível e dispara um failover para a região secundária, com base nos parâmetros da política de failover automático (1). Dependendo do SLA do aplicativo, você pode configurar um período de carência que controla o tempo entre a detecção de interrupção e o failover em si. É possível que o Gerenciador de Tráfego do Azure inicie o failover do ponto de extremidade antes que o grupo de failover dispare o failover do banco de dados. Nesse caso, o aplicativo Web não pode se reconectar ao banco de dados imediatamente. Porém, as reconexões terão êxito automaticamente assim que o failover do banco de dados for concluído. Quando a região com falha é restaurada e colocada online novamente, o primário antigo se reconecta automaticamente como um novo secundário. O diagrama abaixo ilustra a configuração após o failover.

Observação

Todas as transações confirmadas após o failover são perdidas durante a reconexão. Após a conclusão do failover, o aplicativo da região B consegue se reconectar e reiniciar o processamento das solicitações do usuário. O aplicativo Web e o banco de dados primário agora estão na região B e permanecem colocalizados.

Scenario 1. Configuration after failover

Se ocorrer uma interrupção na região B, o processo de replicação entre o banco de dados primário e secundário será suspenso, mas o vínculo entre os dois permanecerá intacto (1). O Gerenciador de Tráfego detecta que a conectividade com a região B está interrompida e marca o aplicativo Web do ponto de extremidade 2 como Degradado (2). O desempenho do aplicativo não é afetado nesse caso, mas o banco de dados fica exposto e, portanto, corre um risco maior de perda de dados, no caso de falha da região A em sucessão.

Observação

Para a recuperação de desastre, recomendamos a configuração com implantação de aplicativo limitada a duas regiões. Isso ocorre porque a maioria das regiões geográficas do Azure tem somente duas regiões. Essa configuração não protege o aplicativo contra uma falha catastrófica simultânea nas duas regiões. Caso ocorra essa falha improvável, você poderá recuperar seus bancos de dados em uma terceira região usando a operação de restauração geográfica. Para obter mais informações, confira diretrizes de recuperação de desastre do Banco de Dados SQL do Azure.

Depois que a interrupção é atenuada, o banco de dados secundário é sincronizado novamente de forma automática com o primário. Durante a sincronização, o desempenho do primário pode ser afetado. O impacto específico depende da quantidade de dados que o novo primário adquiriu desde o failover.

Observação

Depois que a interrupção for atenuada, o Gerenciador de Tráfego começará a rotear as conexões para o aplicativo na região A como um ponto de extremidade de prioridade mais alta. Se você pretende manter o primário na região B por um tempo, altere a tabela de prioridade no perfil do Gerenciador de Tráfego de acordo.

O seguinte diagrama ilustra uma interrupção na região secundária:

Scenario 1. Configuration after an outage in the secondary region.

As principais vantagens desse padrão de design são:

  • O mesmo aplicativo Web é implantado em ambas as regiões sem nenhuma configuração específica à região e não exige nenhuma lógica adicional para gerenciar o failover.
  • O desempenho do aplicativo não é afetado pelo failover, pois o aplicativo Web e o banco de dados sempre estão co-localizados.

A principal desvantagem é que os recursos do aplicativo na Região B são subutilizados na maioria das vezes.

Cenário 2: regiões do Azure para continuidade dos negócios com preservação máxima de dados

Essa opção é mais adequada para aplicativos com as seguintes características:

  • Qualquer perda de dados é um risco comercial elevado. O failover de banco de dados só poderá ser usado como último recurso, se a interrupção for causada por uma falha catastrófica.
  • O aplicativo oferece suporte aos modos somente leitura e leitura/gravação de operações e pode operar em “modo somente leitura” por um período de tempo específico.

Nesse padrão, o aplicativo alterna para o modo somente leitura quando as conexões de leitura/gravação começam a receber erros de tempo limite. O aplicativo Web é implantado nas duas regiões e inclui uma conexão com o ponto de extremidade do ouvinte de leitura/gravação e uma conexão diferente com o ponto de extremidade do ouvinte somente leitura (1). O perfil do Gerenciador de Tráfego deve usar o roteamento de prioridade. O monitoramento de ponto de extremidade deve ser habilitado para o ponto de extremidade do aplicativo em cada região (2).

O seguinte diagrama ilustra essa configuração antes de uma interrupção:

Scenario 2. Configuration before the outage.

Quando o Gerenciador de Tráfego detecta uma falha de conectividade na região A, ele alterna automaticamente o tráfego de usuário para a instância do aplicativo na região B. Com esse padrão, é importante definir o período de cortesia com perda de dados com um valor suficientemente alto, por exemplo, 24 horas. Ele garante que a perda de dados é impedida se a interrupção é atenuada dentro desse período. Quando o aplicativo Web na região B é ativado, as operações de leitura/gravação começam a falhar. Nesse ponto, ele deve alternar para o modo somente leitura (1). Nesse modo, as solicitações são encaminhadas automaticamente para o banco de dados secundário. Se a interrupção for causada por uma falha catastrófica, muito provavelmente, ela não poderá ser atenuada dentro do período de carência. Quando ele expirar, o grupo de failover disparará o failover. Depois disso, o ouvinte de leitura/gravação fica disponível e as conexões com ele param de falhar (2). O diagrama a seguir ilustra os dois estágios do processo de recuperação.

Observação

Se a interrupção na região primária é atenuada dentro do período de cortesia, o Gerenciador de Tráfego detecta a restauração da conectividade na região primária e alterna o tráfego do usuário novamente para a instância do aplicativo na região A. Essa instância do aplicativo é retomada e opera no modo leitura/gravação usando o banco de dados primário na região A, conforme ilustrado no diagrama anterior.

Scenario 2. Disaster recovery stages.

Se ocorrer uma interrupção na região B, o Gerenciador de Tráfego detectará a falha do aplicativo Web do ponto de extremidade 2 na região B e o marcará como Degradado (1). Enquanto isso, o grupo de failover alterna o ouvinte somente leitura para a região A (2). Essa interrupção não afeta a experiência do usuário final, mas o banco de dados primário fica exposto durante a interrupção. O seguinte diagrama ilustra uma falha na região secundária:

Scenario 2. Outage of the secondary region.

Após a interrupção ser atenuada, o banco de dados secundário é sincronizado imediatamente com o primário e o ouvinte de somente leitura é revertido para o banco de dados secundário na região B. Durante a sincronização, o desempenho do banco de dados primário pode ser afetado ligeiramente dependendo da quantidade de dados que precisam ser sincronizados.

Esse padrão de design apresenta várias vantagens:

  • Ele evita a perda de dados durante as interrupções temporárias.
  • O tempo de inatividade depende somente da velocidade com a qual o Gerenciador de Tráfego detecta a falha de conectividade, o que pode ser configurado.

A desvantagem é que o aplicativo deve poder operar no modo somente leitura.

Planejamento de continuidade de negócios: escolher um design de aplicativo para recuperação de desastre em nuvem

A estratégia específica de recuperação de desastre em nuvem pode combinar ou estender esses padrões de design para atender da melhor forma às necessidades do aplicativo. Como mencionado anteriormente, a estratégia escolhida é baseada no SLA que você deseja oferecer a seus clientes e na topologia de implantação do aplicativo. Para ajudar a orientar sua decisão, a tabela a seguir compara as opções com base no RPO (objetivo de ponto de recuperação) e no ERT (tempo de recuperação estimado).

Padrão RPO ERT
Implantação ativa-passiva para recuperação de desastres com acesso de banco de dados colocalizado Acesso de leitura/gravação < 5 seg. Tempo de detecção de falha + TTL do DNS
Implantação ativa-ativa para balanceamento de carga de aplicativo Acesso de leitura/gravação < 5 seg. Tempo de detecção de falha + TTL do DNS
Implantação ativa-passiva para preservação de dados Acesso somente leitura < 5 seg Acesso somente leitura = 0
Acesso de leitura/gravação = zero Acesso de leitura/gravação = Tempo de detecção de falha + período de carência de perda de dados

Próximas etapas