Configurar um balanceador de carga do Azure para um VNN de FCI – SQL Server em VMs do Azure

Aplica-se a: SQL Server na VM do Azure

Dica

Há vários métodos de implantação de um grupo de disponibilidade. Simplifique sua implantação sem precisar usar o Azure Load Balancer ou DNN (nome de rede distribuída) para seu grupo de disponibilidade Always On criando suas VMs (máquinas virtuais) do SQL Server em várias sub-redes dentro da mesma rede virtual do Azure. Se você já tiver criado seu grupo de disponibilidade em uma única sub-rede, poderá migrá-lo para um ambiente de várias sub-redes.

Em máquinas virtuais do Azure, os clusters usam um balanceador de carga para manter um endereço IP que precisa estar em um nó de cluster de cada vez. Nesta solução, o balanceador de carga contém o endereço IP para o VNN (nome de rede virtual) usado pelo recurso clusterizado no Azure.

Este artigo ensina a configurar um balanceador de carga usando o serviço do Azure Load Balancer. O balanceador de carga roteará o tráfego para a instância de cluster de failover com o SQL Server em VMs do Azure para HADR (alta disponibilidade e recuperação de desastre).

Um DNN (nome de rede distribuída) é uma opção de conectividade alternativa para o SQL Server 2019 CU2 e posteriores. Um DNN oferece configuração simplificada e failover aprimorado.

Pré-requisitos

Para realizar as etapas deste artigo, você já deve ter:

Criar um balanceador de carga

É possível criar qualquer um dos seguintes tipos de balanceadores de carga:

  • Interno: um balanceador de carga interno só pode ser acessado por meio de recursos particulares que são internos da rede. Ao configurar um balanceador de carga interno e as respectivas regras, use o endereço IP da FCI como o endereço IP de front-end.

  • Externo: um balanceador de carga externo pode rotear o tráfego dos recursos públicos para os internos. Ao configurar um balanceador de carga externo, não é possível usar um endereço IP público como o endereço IP da FCI.

    Para usar um balanceador de carga externo, aloque logicamente um endereço IP na mesma sub-rede da FCI que não entre em conflito com nenhum outro endereço IP. Use esse endereço como o endereço IP de front-end para as regras de balanceamento de carga.

Para criar o balanceador de carga:

  1. No portal do Azure, acesse o grupo de recursos que contém as máquinas virtuais.

  2. Selecione Adicionar. Pesquise o Load Balancer no Azure Marketplace. Selecione Load Balancer.

  3. Selecione Criar.

  4. Em Criar balanceador de carga, na guia Básico, configure o balanceador de carga usando os seguintes valores:

    • Assinatura: Sua assinatura do Azure.
    • Grupo de recursos: o grupo de recursos que contém as máquinas virtuais.
    • Name: um nome que identifica o balanceador de carga.
    • Região: a localização do Azure que contém as máquinas virtuais.
    • SKU: Standard.
    • Tipo: Público ou Interno. Um balanceador de carga interno pode ser acessado na rede virtual. A maioria dos aplicativos do Microsoft Azure pode usar um balanceador de carga interno. Se o aplicativo precisar de acesso ao SQL Server diretamente pela Internet, use um balanceador de carga público.
    • Camada: Regional.

    Captura de tela do portal do Azure mostrando a página de informações básicas de um balanceador de carga.

  5. Selecione Próximo: Configuração do IP de front-end.

  6. Selecione Adicionar uma configuração de IP de front-end.

    Captura de tela do portal do Azure mostrando o botão usado para adicionar uma configuração de IP de front-end.

  7. Configure o endereço IP de front-end usando os seguintes valores:

    • Nome: um nome que identifica a configuração de IP de front-end.
    • Rede virtual: a mesma rede que a das máquinas virtuais.
    • Sub-rede: a mesma sub-rede que as máquinas virtuais.
    • Atribuição: Estático.
    • Endereço IP: o endereço IP atribuído ao recurso de rede clusterizado.
    • Zona de disponibilidade: uma zona de disponibilidade opcional para implantar o endereço IP.

    Captura de tela do portal do Azure mostrando a página para configurar um endereço IP de front-end.

  8. Selecione Adicionar para criar o endereço IP de front-end.

  9. Selecione Examinar + criar para criar o balanceador de carga.

Configurar um pool de back-end

  1. Retorne ao grupo de recursos do Azure que contém as máquinas virtuais e localize o novo balanceador de carga. Talvez você precise atualizar a exibição no grupo de recursos. Escolha o balanceador de carga.

  2. Selecione Pools de back-end e +Adicionar.

  3. Em Nome, forneça um nome para o pool de back-end.

  4. Em Configuração do Pool de Back-end, escolha NIC.

  5. Selecione Adicionar para associar o pool de back-end ao conjunto de disponibilidade que contém as VMs.

  6. Em Máquina virtual, escolha as máquinas virtuais que participarão como nós de cluster. Certifique-se de incluir todas as máquinas virtuais que hospedarão FCI.

    Adicione apenas o endereço IP primário de cada VM. Não adicione nenhum endereço IP secundário.

  7. Selecione Adicionar para adicionar as máquinas virtuais ao pool de back-end.

  8. Selecione Salvar para criar o pool de back-end.

Configurar uma investigação de integridade

  1. No painel do balanceador de carga, selecione Investigações de integridade.

  2. No painel Adicionar investigação de integridade, defina os seguintes parâmetros:

    • Name: um nome para a investigação de integridade.
    • Protocolo: TCP.
    • Porta: a porta que você criou no firewall para a investigação de integridade ao preparar a VM. Neste artigo, o exemplo usa a porta TCP 59999.
    • Intervalo: cinco segundos.
  3. Selecione Adicionar.

Definir regras de balanceamento de carga

  1. No painel do balanceador de carga, selecione Regras de balanceamento de carga.

  2. Selecione Adicionar.

  3. Defina estes parâmetros:

    • Nome: um nome para a regra de balanceamento de carga.
    • Endereço IP de front-end: o endereço IP definido durante a configuração do front-end.
    • Pool de back-end: o pool de back-end que contém as máquinas virtuais destinadas ao balanceador de carga.
    • Portas de alta disponibilidade: habilita o balanceamento de carga em todas as portas para protocolos TCP e UDP.
    • Protocolo: TCP.
    • Porta: a porta TCP da FCI do SQL Server. O padrão é 1433.
    • Porta de back-end: a mesma porta que o valor da Porta quando você habilita IP Flutuante (retorno de servidor direto) .
    • Investigação de integridade: a investigação de integridade configurada anteriormente.
    • Persistência de sessão: Nenhum.
    • Tempo limite de ociosidade (minutos): 4.
    • IP flutuante (retorno de servidor direto) : habilitado.
  4. Selecione Salvar.

Configurar uma investigação de cluster

Defina o parâmetro de porta da investigação de cluster no PowerShell.

Atualize as variáveis no script a seguir com valores do seu ambiente. Remova os colchetes angulares (< e >) do script.

$ClusterNetworkName = "<Cluster Network Name>"
$IPResourceName = "<SQL Server FCI IP Address Resource Name>" 
$ILBIP = "<n.n.n.n>" 
[int]$ProbePort = <nnnnn>

Import-Module FailoverClusters

Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"=$ProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}

A tabela a seguir descreve os valores que você precisará atualizar:

Variável Valor
ClusterNetworkName O nome do cluster de failover do Windows Server para a rede. Em Gerenciador de Cluster de Failover>Redes, clique com o botão direito do mouse na rede e selecione Propriedades. O valor correto está em Nome, na guia Geral.
IPResourceName O nome do recurso do endereço IP da FCI do SQL Server. Em Gerenciador de Cluster de Failover>Funções, na função FCI do SQL Server, em Nome do Servidor, clique com o botão direito do mouse no recurso de endereço IP e selecione Propriedades. O valor correto está em Nome, na guia Geral.
ILBIP O endereço IP do balanceador de carga interno. Esse endereço é configurado no portal do Azure como o endereço de front-end do balanceador de carga interno. Ele também é o endereço IP da FCI do SQL Server. É possível localizá-lo no Gerenciador de clusters de failover, na mesma página de propriedades em que você encontrou o valor de IPResourceName.
ProbePort A porta de investigação configurada na investigação de integridade do balanceador de carga. Qualquer porta TCP não usada é válida.
SubnetMask A máscara de sub-rede para o parâmetro de cluster. Deve ser o endereço TCP/IP difundido: 255.255.255.255.

Depois de configurar a investigação de cluster, você poderá ver todos os parâmetros do cluster no PowerShell. Execute este script:

Get-ClusterResource $IPResourceName | Get-ClusterParameter

Modificar a cadeia de conexão

No caso dos clientes que têm o suporte necessário, adicione MultiSubnetFailover=True à cadeia de conexão. Embora a opção de conexão MultiSubnetFailover não seja necessária, ela fornece o benefício de um failover de sub-rede mais rápido. Isso ocorre porque o driver do cliente tenta abrir um soquete TCP para cada endereço de IP em paralelo. O driver do cliente aguarda a resposta bem-sucedida do primeiro endereço IP. Após essa resposta, o driver do cliente usa o endereço IP para a conexão.

Se o cliente não der suporte ao parâmetro MultiSubnetFailover, modifique as configurações RegisterAllProvidersIP e HostRecordTTL para evitar atrasos de conectividade após o failover.

Use o PowerShell para modificar as configurações RegisterAllProvidersIp e HostRecordTTL:

Get-ClusterResource yourFCIname | Set-ClusterParameter RegisterAllProvidersIP 0  
Get-ClusterResource yourFCIname | Set-ClusterParameter HostRecordTTL 300 

Para saber mais, confira a documentação sobre o tempo limite de conexão do ouvinte no SQL Server.

Dica

  • Defina o parâmetro MultiSubnetFailover como true na cadeia de conexão, mesmo para soluções de HADR que abrangem uma única sub-rede. Essa configuração dá suporte à expansão futura de sub-redes sem a necessidade de atualizar cadeias de conexão.
  • Por padrão, os clientes armazenam em cache registros DNS do cluster por 20 minutos. Ao reduzir HostRecordTTL, você reduz o TTL (tempo de vida útil) do registro armazenado em cache. Os clientes herdados podem se reconectar mais rapidamente. Devido a isso, reduzir a configuração HostRecordTTL pode aumentar o tráfego para os servidores DNS.

Failover de Teste

Teste o failover do recurso clusterizado para validar a funcionalidade do cluster:

  1. Conecte-se a um dos nós de cluster do SQL Server usando o protocolo RDP.
  2. Abra o Gerenciador de Cluster de Failover. Selecione funções. Observe qual nó possui a função FCI do SQL Server.
  3. Clique com o botão direito do mouse na função FCI do SQL Server.
  4. Selecione Mover e O Melhor Nó Possível.

O Gerenciador de Cluster de Failover mostra a função e seus recursos ficam offline. Os recursos então são movidos e ficam online novamente no outro nó.

Testar a conectividade

Para testar a conectividade, entre em outra máquina virtual na mesma rede virtual. Abra o SQL Server Management Studio e conecte-se ao nome de FCI do SQL Server.

Observação

Se necessário, baixe o SQL Server Management Studio.

Próximas etapas

Para obter mais informações, consulte: