Compartilhar via


Tutorial: configurar um ouvinte do grupo de disponibilidade nas máquinas virtuais do Linux

Aplica-se a: SQL Server de VM do Azure

Este tutorial apresentará as etapas para a criação de ouvinte do grupo de disponibilidade (AG) para seus SQL Servers em máquinas virtuais do Linux (VMs) no Azure, para Red Hat Enterprise Linux (RHEL), SUSE Linux Enterprise Server (SLES), e Ubuntu.

Você aprenderá a:

  • Criar um balanceador de carga no portal do Azure
  • Configurar o pool de back-end para o balanceador de carga
  • Criar uma investigação para o balanceador de carga
  • Definir as regras de balanceamento de carga
  • Criar o recurso do balanceador de carga no cluster
  • Criar o ouvinte do grupo de disponibilidade
  • Testar a conexão com o ouvinte
  • Testar um failover

Observação

Comunicação livre de desvio

Este artigo contém referências ao termo subordinado, um termo que a Microsoft considera ofensivo quando usado neste contexto. O termo aparece neste artigo porque ele atualmente aparece no software. Quando o termo for removido do software, também o removeremos do artigo.

Pré-requisito

Criar o balanceador de carga no portal do Azure

As instruções a seguir percorrem as etapas 1 a 4 da seção Criar e configurar o balanceador de carga no portal do Azure do artigo Configurar um balanceador de carga e o ouvinte do grupo de disponibilidade (SQL Server em VMs do Azure).

Criar o balanceador de carga

  1. No Portal do Azure, abra o grupo de recursos que contém as máquinas virtuais do SQL Server.

  2. No grupo de recursos, selecione Adicionar.

  3. Pesquise por balanceador de carga e, em seguida, nos resultados da pesquisa, selecione Balanceador de Carga, que é publicado pela Microsoft.

  4. No painel Balanceador de carga, selecione Criar.

  5. Na caixa de diálogo Criar balanceador de carga, configure o balanceador de carga da seguinte maneira:

    Configuração Valor
    Nome Um nome de texto que representa o balanceador de carga. Por exemplo, sqlLB.
    Tipo Interna
    Rede virtual A rede virtual padrão que foi criada deve se chamar VM1VNET.
    Sub-rede Selecione a sub-rede na qual estão as instâncias do SQL Server. O padrão deve ser VM1Subnet.
    Atribuição de endereço IP Estático
    Endereço IP privado Use o endereço IP virtualip que foi criado no cluster.
    Assinatura Use a assinatura que foi usada para seu grupo de recursos.
    Grupo de recursos Selecione o grupo de recursos no qual estão as instâncias do SQL Server.
    Localidade Selecione o local do Azure no qual estão as instâncias do SQL Server.

Configure o pool de back-end

O Azure chama o pool de back-ends do pool de endereços back-end. Nesse caso, o pool de back-ends é composto por endereços das três instâncias do SQL Server em seu grupo de disponibilidade.

  1. No grupo de recursos, selecione o balanceador de carga criado.

  2. Em Configurações, selecione Pools de back-end.

  3. Em Pools de back-end, selecione Adicionar para criar um pool de endereços de back-end.

  4. Em Adicionar pool de back-ends, sob Nome, digite um nome para o pool de back-ends.

  5. Em Associado a, selecione Máquina virtual.

  6. Selecione cada máquina virtual no ambiente e associe o endereço IP apropriado a cada seleção.

    Captura de tela mostrando como adicionar um pool de back-end.

  7. Selecione Adicionar.

Criar uma investigação

A investigação define como o Azure verifica qual das instâncias do SQL Server é a proprietária atual do ouvinte do grupo de disponibilidade. O Azure investiga o serviço com base no endereço IP em uma porta que você define quando cria o teste.

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

  2. No painel Investigações de integridade, selecione Adicionar.

  3. Configure a investigação no painel Adicionar investigação. Use os valores a seguir para configurar a investigação:

    Configuração Valor
    Nome Um nome de texto que representa a investigação. Por exemplo, SQLAlwaysOnEndPointProbe.
    Protocolo TCP
    Porta Você pode usar qualquer porta disponível. Por exemplo, 59999.
    Intervalo 5
    Limite não íntegro 2
  4. Selecione OK.

  5. Entre em todas as suas máquinas virtuais e abra a porta de investigação usando os seguintes comandos:

    sudo firewall-cmd --zone=public --add-port=59999/tcp --permanent
    sudo firewall-cmd --reload
    

O Azure cria a investigação e a usa para testar qual instância do SQL Server tem o ouvinte do grupo de disponibilidade.

Definir as regras de balanceamento de carga

As regras de balanceamento de carga configuram como o balanceador de carga encaminha o tráfego para as instâncias do SQL Server. Para esse balanceador de carga, habilite o retorno de servidor direto, pois somente uma das três instâncias do SQL Server por vez é proprietária do recurso de ouvinte do grupo de disponibilidade.

  1. No painel Configurações do balanceador de carga, selecione Regras de balanceamento de carga.

  2. No painel Regras de balanceamento de carga, selecione Adicionar.

  3. No painel Adicionar regras de balanceamento de carga, configure a regra de balanceamento de carga. Use as configurações a seguir:

    Configuração Valor
    Nome Um nome de texto que representa as regras de balanceamento de carga. Por exemplo, SQLAlwaysOnEndPointListener.
    Protocolo TCP
    Porta 1433
    Porta de back-end 1433. Esse valor é ignorado porque essa regra usa IP flutuante (retorno de servidor direto).
    Investigação Use o nome da investigação que você criou para este balanceador de carga.
    Persistência de sessão Nenhuma
    Tempo limite de ociosidade (minutos) 4
    IP flutuante (retorno de servidor direto) Enabled

    Captura de tela mostrando como adicionar uma regra de balanceamento de carga.

  4. Selecione OK.

  5. O Azure configura a regra de balanceamento de carga. Agora, o balanceador de carga está configurado para rotear o tráfego para a instância do SQL Server que hospeda o ouvinte para o grupo de disponibilidade.

Neste ponto, o grupo de recursos tem um balanceador de carga que se conecta em todas as máquinas do SQL Server. O balanceador de carga também contém um endereço IP para o ouvinte do grupo de disponibilidade Always On do SQL Server para que qualquer computador possa responder às solicitações para os grupos de disponibilidade.

Criar o recurso de ouvinte do grupo de disponibilidade

Antes de criar um recurso de balanceador de carga no Pacemaker, primeiro crie o recurso de ouvinte:

sudo crm configure primitive virtualip \
ocf:heartbeat:IPaddr2 \
params ip=x.y.z.a

No exemplo anterior, x.y.z.a refere-se ao endereço IP front-end do balanceador de carga.

Criar o recurso do balanceador de carga no cluster

Siga as instruções para a distribuição que está configurando.

  1. Inicie a sessão na máquina virtual primária. Precisamos criar o recurso para habilitar a porta de investigação do Azure Load Balancer (59999 é usado em nosso exemplo). Execute o comando a seguir:

    sudo pcs resource create azure_load_balancer azure-lb port=59999
    
  2. Crie um grupo que contém o recurso virtualip e azure_load_balancer:

    sudo pcs resource group add virtualip_group azure_load_balancer virtualip
    

Adicionar restrições

  1. Uma restrição de colocalização deve ser configurada para verificar se o endereço IP do balanceador de carga do Azure e o recurso do AG estão em execução no mesmo nó. Execute o comando a seguir:

    sudo pcs constraint colocation add azure_load_balancer ag_cluster-master INFINITY with-rsc-role=Master
    
  2. Crie uma restrição de ordenação para garantir que o recurso AG esteja em funcionamento antes do endereço IP do balanceador de carga do Azure. Enquanto a restrição de colocalização implica uma restrição de ordenação, isso a impõe.

    sudo pcs constraint order promote ag_cluster-master then start azure_load_balancer
    
  3. Para verificar as restrições, execute o seguinte comando:

    sudo pcs constraint list --full
    

    Você deve ver o seguinte resultado:

    Location Constraints:
    Ordering Constraints:
      promote ag_cluster-master then start virtualip (kind:Mandatory) (id:order-ag_cluster-master-virtualip-mandatory)
      promote ag_cluster-master then start azure_load_balancer (kind:Mandatory) (id:order-ag_cluster-master-azure_load_balancer-mandatory)
    Colocation Constraints:
      virtualip with ag_cluster-master (score:INFINITY) (with-rsc-role:Master) (id:colocation-virtualip-ag_cluster-master-INFINITY)
      azure_load_balancer with ag_cluster-master (score:INFINITY) (with-rsc-role:Master) (id:colocation-azure_load_balancer-ag_cluster-master-INFINITY)
    Ticket Constraints:
    

Crie o ouvinte do grupo de disponibilidade

  1. No nó primário, execute os comandos a seguir no sqlcmdou SSMS: Substitua o endereço IP usado abaixo pelo endereço IP virtualip.

    • SQL Server 2022 e versões posteriores:

      ALTER AVAILABILITY GROUP [ag1]
      ADD LISTENER 'ag1-listener' (
          WITH IP((
              '10.0.0.7',
              '0.0.0.0'
          )),
          PORT = 1433
      );
      GO
      
    • SQL Server 2017 e SQL Server 2019:

      ALTER AVAILABILITY GROUP [ag1]
      ADD LISTENER 'ag1-listener' (
          WITH IP((
              '10.0.0.7',
              '255.255.255.255'
          )),
          PORT = 1433
      );
      GO
      
  2. Inicia a sessão em cada nó de VM. Use o comando a seguir para abrir o arquivo de hosts e configurar a resolução do ag1-listener em cada computador.

    sudo vi /etc/hosts
    

    No editor vi, digite i para inserir texto e, em uma linha em branco, adicione o IP do ag1-listener. Em seguida, adicione ag1-listener após um espaço ao lado do IP.

    <IP of ag1-listener> ag1-listener
    

    Para sair do editor vi, primeiro pressione a tecla Esc e, em seguida, insira o comando :wq para gravar o arquivo e encerrar. Faça isso em cada nó.

Testar o ouvinte e um failover

Esta seção aborda o logon em um ouvinte do grupo de disponibilidade do SQL Server e o teste de um failover.

Testar o logon no SQL Server usando o ouvinte do grupo de disponibilidade

  1. Use o sqlcmd para iniciar a sessão no nó primário do SQL Server usando o nome do ouvinte do grupo de disponibilidade:

    • Use um logon criado anteriormente e substitua <YourPassword> pela senha correta. O exemplo abaixo usa o logon sa que foi criado com o SQL Server.
    sqlcmd -S ag1-listener -U sa -P <YourPassword>
    
  2. Verifique o nome do servidor ao qual você está conectado. Execute o seguinte comando no sqlcmd:

    SELECT @@SERVERNAME;
    

    A saída deve mostrar o nó primário atual. Isso deverá ser VM1 se você nunca tiver testado um failover.

    Saia da sessão do SQL Server digitando o comando exit.

Testar um failover

  1. Execute o comando a seguir para fazer failover manual da réplica primária para <VM2> ou outra réplica. Substitua <VM2> pelo valor do nome do servidor.

    sudo pcs resource move ag_cluster-master <VM2> --master
    
  2. Se você verificar suas restrições, verá que outra restrição foi adicionada devido ao failover manual:

    sudo pcs constraint list --full
    

    Você verá que uma restrição com a ID cli-prefer-ag_cluster-master foi adicionada.

  3. Remova a restrição com a ID cli-prefer-ag_cluster-master usando o seguinte comando:

    sudo pcs constraint remove cli-prefer-ag_cluster-master
    
  4. Verifique os recursos de cluster usando o comando sudo pcs resource; você verá que a instância primária agora é <VM2>.

    Observação

    Este artigo contém referências ao termo servidor subordinado, um termo que a Microsoft não usa mais. Quando o termo for removido do software, também o removeremos deste artigo.

    [<username>@<VM1> ~]$ sudo pcs resource
    Master/Slave Set: ag_cluster-master [ag_cluster]
        Masters: [ <VM2> ]
        Slaves: [ <VM1> <VM3> ]
    Resource Group: virtualip_group
        azure_load_balancer        (ocf::heartbeat:azure-lb):      Started <VM2>
        virtualip  (ocf::heartbeat:IPaddr2):       Started <VM2>
    
  5. Use o sqlcmd para iniciar a sessão em sua réplica primária usando o nome do ouvinte:

    • Use um logon criado anteriormente e substitua <YourPassword> pela senha correta. O exemplo abaixo usa o logon sa que foi criado com o SQL Server.
    sqlcmd -S ag1-listener -U sa -P <YourPassword>
    
  6. Verifique o servidor ao qual você está conectado. Execute o seguinte comando no sqlcmd:

    SELECT @@SERVERNAME;
    

    Você verá que agora está conectado à VM para a qual você fez failover.

Próxima etapa

Para utilizar um ouvinte do grupo de disponibilidade para suas instâncias do SQL Server, você precisa criar e configurar um balanceador de carga.