28 de abril de 20264 min de leitura

Solucionando falhas em Failover Groups do SQL Managed Instance em topologias Hub-Spoke

Banner - Solucionando falhas em Failover Groups do SQL Managed Instance em topologias Hub-Spoke

Diagrama de topologia

Visão Geral

Failover groups (FOG) para Azure SQL Managed Instance (SQL MI) são a solução de replicação geo-redundante da Microsoft, garantindo consistência de dados e endpoints estáveis durante desastres. No entanto, em arquiteturas de rede corporativa — especificamente topologias Hub-Spoke com firewalls centralizados (NVA) —, a implementação pode encontrar obstáculos invisíveis. Este artigo analisa um cenário crítico onde a comunicação entre regiões parecia operacional, mas a inicialização do FOG falhava consistentemente.

O Cenário do Cliente

A infraestrutura utilizava uma topologia robusta conforme abaixo:

  • Spoke VNet (Região 1): Instância de SQL MI primária em uma subnet dedicada.
  • Spoke VNet (Região 2): Instância de SQL MI secundária em uma subnet dedicada.
  • Hub VNet: Centralização de segurança através de um firewall de terceiros (NVA).
  • Roteamento: Fluxo de tráfego east-west forçado pelo firewall do Hub via UDRs.

O SQL MI opera de forma distinta, dependendo do data-plane e control-plane. Mudanças no design de rede não são apenas opcionais; elas são determinantes para o comportamento do serviço e a viabilidade da replicação.

Problema Identificado

Durante o provisionamento, a criação do Failover Group travava ou falhava por timeout. Embora a conectividade básica entre as VNets estivesse correta, o sistema de validação da plataforma rejeitava a configuração, impedindo o início da replicação dos dados.

Pontos de atenção observados:

  • Falhas constantes no provisionamento do cluster de replicação.
  • Nenhuma atividade de seeding entre as instâncias.
  • Validadores de rede (como ping ou testes simples de rotas) não refletiam as restrições reais de porta específicas exigidas pelo SQL MI.

O Desafio da Conectividade "Aparente"

Para que o FOG funcione, o SQL MI exige conectividade bidirecional via:

  • TCP 5022: Porta de replicação.
  • TCP 11000–11999: Portas de gerenciamento e comunicação interna.

Em ambientes com NVA, a inspeção de pacotes introduz variáveis complicadoras como UDR steering, NAT/SNAT, e, crucialmente, Timeouts de sessão ociosas. Muitas vezes, o firewall encerra a conexão antes que o processo de handshake da replicação SQL complete, causando falhas "silenciosas" que não aparecem no TRACEROUTE.

Abordagem de Investigação

Para diagnosticar, seguimos uma estratégia em camadas:

  1. Validação de Pré-requisitos: Verificação rigorosa de requisitos técnicos, como instâncias secundárias vazias, alinhamento de Service Tier e o uso obrigatório do mesmo DNS Zone ID (ponto frequente de erro).
  2. Testes "SQL MI-Aware": Abandonamos testes de ping tradicionais em favor de scripts de SQL Agent dentro das instâncias, que validam a conectividade real nos endpoints específicos da replicação.
  3. Análise do Caminho de Firewall: Inspeção de como o NVA tratava o tráfego east-west. Verificamos, especificamente, se políticas de inspeção TLS ou NAT/SNAT estavam alterando os pacotes de replicação.

Hipóteses de Falha Comuns

Em nossas análises de casos similares, isolamos sete causas raízes recorrentes:

  1. Abertura incompleta de portas: Apenas a porta 5022 é liberada, ignorando o range 11000-11999.
  2. Regras em conflito: NSGs (Network Security Groups) configurados corretamente, mas políticas de firewall com prioridade superior bloqueando o fluxo.
  3. Roteamento Assimétrico: O tráfego de saída sai pelo firewall, mas o de retorno tenta tomar um atalho sem passar pela inspeção, rompendo o estado de conexão do NVA.
  4. SNAT/NAT excessivo: Modificação do IP de origem/destino, violando a identidade da instância SQL.
  5. Timeouts de sessão ociosas: A replicação, quando em latência ou em grandes volumes iniciais, sofre interrupção por inatividade forçada.
  6. Mismatches de DNS Zone ID: Impossibilidade de modificação pós-criação.
  7. Sobreposição de Address Space: Conflitos de CIDR entre VNets peered.

Lições Aprendidas e Checklist de Pré-Voo

Ao desenhar topologias Hub-Spoke, ignore a tentação de tratar o tráfego entre bancos de dados como qualquer outro tráfego de aplicação. Inclua isto no seu checklist:

  • Planejamento de Endereçamento: Garanta isolamento total de CIDRs.
  • DNS: Reuso obrigatório de DNS Zone ID na criação da secundária.
  • Regras de Firewall: Liberação estrita (Inbound/Outbound) nas portas 5022 e 11000–11999 em todos os pontos de enforcement.
  • Estabilidade de Rota: Evite qualquer forma de NAT ou inspeção profunda (Deep Packet Inspection) sobre o fluxo de replicação.

O principal aprendizado aqui é estratégico: falhas em Failover Groups raramente são problemas do SQL em si, mas sim reflexos de uma rede que não foi desenhada para a natureza proprietária dos fluxos de replicação do Azure PaaS.


Artigo originalmente publicado em Azure Updates - Latest from Azure Charts.

Gostou? Compartilhe:
Precisa de ajuda?Fale com nossos especialistas 👋
Avatar Walcew - Headset