Tutorial: Configurar um ouvinte de grupo de disponibilidade em máquinas virtuais Linux
Aplica-se a:SQL Server na VM do Azure
Este tutorial abordará as etapas sobre como criar um ouvinte de grupo de disponibilidade (AG) para seus SQL Servers em máquinas virtuais (VMs) Linux no Azure, para Red Hat Enterprise Linux (RHEL), SUSE Linux Enterprise Server (SLES) e Ubuntu.
Saberá como:
- Criar um balanceador de carga no portal do Azure
- Configurar o pool de back-end para o balanceador de carga
- Criar uma sonda para o balanceador de carga
- Definir as regras de balanceamento de carga
- Criar o recurso de balanceador de carga no cluster
- Criar o ouvinte AG
- Teste a conexão com o ouvinte
- Testando um failover
Nota
Comunicação sem preconceitos
Este artigo contém referências ao termo slave, um termo que a Microsoft considera ofensivo quando usado neste contexto. O termo aparece neste artigo porque aparece atualmente no software. Quando o termo for removido do software, iremos removê-lo do artigo.
Pré-requisito
Conclua o Tutorial: Configurar grupos de disponibilidade para o SQL Server em máquinas virtuais RHEL no Azure.
Criar o balanceador de carga no portal do Azure
As instruções a seguir guiam você pelas 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 & ouvinte do grupo de disponibilidade (SQL Server em VMs do Azure).
Criar o balanceador de carga
No portal do Azure, abra o grupo de recursos que contém as máquinas virtuais do SQL Server.
No grupo de recursos, selecione Adicionar.
Procure por balanceador de carga e, nos resultados da pesquisa, selecione Balanceador de Carga, que é publicado pela Microsoft.
No painel Balanceador de Carga, selecione Criar.
Na caixa de diálogo Criar balanceador de carga, configure o balanceador de carga da seguinte maneira:
Definição valor Nome Um nome de texto que representa o balanceador de carga. Por exemplo, sqlLB
.Tipo Interno Rede virtual A rede virtual padrão que foi criada deve ser nomeada VM1VNET
.Sub-rede Selecione a sub-rede em que as instâncias do SQL Server estão. O padrão deve ser VM1Subnet
.Atribuição de endereço IP Estático Endereço IP privado Use o virtualip
endereço IP que foi criado no cluster.Subscrição Utilize a subscrição que foi utilizada para o seu grupo de recursos. Grupo de recursos Selecione o grupo de recursos em que as instâncias do SQL Server estão. Localização Selecione o local do Azure em que as instâncias do SQL Server estão.
Configurar o pool de back-end
O Azure chama o pool de back-end do pool de endereços back-end. Nesse caso, o pool de back-end são os endereços das três instâncias do SQL Server em seu AG.
No grupo de recursos, selecione o balanceador de carga que você criou.
Em Configurações, selecione Pools de back-end.
Em Pools de back-end, selecione Adicionar para criar um pool de endereços back-end.
Em Adicionar pool de back-end, em Nome, digite um nome para o pool de back-end.
Em Associado a, selecione Máquina virtual.
Selecione cada máquina virtual no ambiente e associe o endereço IP apropriado a cada seleção.
Selecione Adicionar.
Criar uma sonda
A investigação define como o Azure verifica qual das instâncias do SQL Server atualmente possui o ouvinte AG. O Azure investiga o serviço com base no endereço IP em uma porta que você define ao criar a sonda.
No painel Configurações do balanceador de carga, selecione Sondas de integridade.
No painel Testes de integridade, selecione Adicionar.
Configure a sonda no painel Adicionar sonda . Use os seguintes valores para configurar a sonda:
Definição valor Nome Um nome de texto que representa a sonda. Por exemplo, SQLAlwaysOnEndPointProbe
.Protocolo TCP
Porta Você pode usar qualquer porta disponível. Por exemplo, 59999
.Intervalo 5
Limiar com funcionamento incorreto 2
Selecione OK.
Entre em todas as suas máquinas virtuais e abra a porta de teste usando os seguintes comandos:
sudo firewall-cmd --zone=public --add-port=59999/tcp --permanent sudo firewall-cmd --reload
O Azure cria a sonda e a usa para testar qual instância do SQL Server tem o ouvinte para o AG.
Definir as regras de balanceamento de carga
As regras de balanceamento de carga configuram como o balanceador de carga roteia o tráfego para as instâncias do SQL Server. Para esse balanceador de carga, você habilita o retorno direto do servidor porque apenas uma das três instâncias do SQL Server possui o recurso de ouvinte AG de cada vez.
No painel Configurações do balanceador de carga, selecione Regras de balanceamento de carga.
No painel Regras de balanceamento de carga, selecione Adicionar.
No painel Adicionar regras de balanceamento de carga, configure a regra de balanceamento de carga. Utilize as seguintes definições:
Definiçã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 direto do servidor).Sonda Use o nome do teste que você criou para esse balanceador de carga. Persistência da sessão Nenhuma Tempo limite de inatividade (minutos) 4
IP flutuante (retorno direto do servidor) Ativado Selecione OK.
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 do AG.
Neste ponto, o grupo de recursos tem um balanceador de carga que se conecta a todas as máquinas do SQL Server. O balanceador de carga também contém um endereço IP para o ouvinte Always On AG do SQL Server, para que qualquer máquina possa responder a solicitações para AGs.
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 de balanceador de carga no cluster
Siga as instruções para a distribuição que você está configurando.
Entre na máquina virtual principal. Precisamos criar o recurso para habilitar a porta de teste do balanceador de carga do Azure (59999 é usado em nosso exemplo). Execute o seguinte comando:
sudo pcs resource create azure_load_balancer azure-lb port=59999
Crie um grupo que contenha o
virtualip
recurso eazure_load_balancer
:sudo pcs resource group add virtualip_group azure_load_balancer virtualip
Adicionar restrições
Uma restrição de colocation deve ser configurada para garantir que o endereço IP do balanceador de carga do Azure e o recurso AG estejam sendo executados no mesmo nó. Execute o seguinte comando:
sudo pcs constraint colocation add azure_load_balancer ag_cluster-master INFINITY with-rsc-role=Master
Crie uma restrição de ordenação para garantir que o recurso AG esteja ativo e em execução antes do endereço IP do balanceador de carga do Azure. Embora a restrição de colocation implique uma restrição de ordenação, isso a impõe.
sudo pcs constraint order promote ag_cluster-master then start azure_load_balancer
Para verificar as restrições, execute o seguinte comando:
sudo pcs constraint list --full
Deverá 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:
Criar o ouvinte do grupo de disponibilidade
No nó primário, execute o seguinte comando em sqlcmd ou SSMS. Substitua o endereço IP usado abaixo pelo
virtualip
endereço IP.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
Entre em cada nó da VM. Use o comando a seguir para abrir o arquivo hosts e configurar a resolução de nomes de host para o
ag1-listener
em cada máquina.sudo vi /etc/hosts
No editor vi, digite
i
para inserir texto e, em uma linha em branco, adicione o IP doag1-listener
. Em seguida, adicioneag1-listener
depois de 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, digite o comando
:wq
para gravar o arquivo e sair. Faça isso em cada nó.
Testar o ouvinte e um failover
Esta seção aborda o logon em um ouvinte do SQL Server AG e o teste de um failover.
Testar o logon no SQL Server usando o ouvinte do grupo de disponibilidade
Use sqlcmd para entrar no nó primário do SQL Server usando o nome do ouvinte AG:
- Use um login que foi criado anteriormente e substitua
<YourPassword>
pela senha correta. O exemplo a seguir usa o logon que foi criado com osa
SQL Server.
sqlcmd -S ag1-listener -U sa -P <YourPassword>
- Use um login que foi criado anteriormente e substitua
Verifique o nome do servidor ao qual você está conectado. Execute o seguinte comando no sqlcmd:
SELECT @@SERVERNAME;
Sua saída deve mostrar o nó primário atual. Isso deve ocorrer
VM1
se você nunca testou um failover.Saia da sessão do SQL Server digitando o
exit
comando.
Testar um failover
Execute o comando a seguir para fazer failover manualmente da réplica primária ou
<VM2>
de outra réplica. Substitua<VM2>
pelo valor do nome do servidor.sudo pcs resource move ag_cluster-master <VM2> --master
Se você verificar suas restrições, verá que outra restrição foi adicionada devido ao failover manual:
sudo pcs constraint list --full
Você vê que uma restrição com ID
cli-prefer-ag_cluster-master
foi adicionada.Remova a restrição com ID
cli-prefer-ag_cluster-master
usando o seguinte comando:sudo pcs constraint remove cli-prefer-ag_cluster-master
Verifique os recursos do cluster usando o comando
sudo pcs resource
, e você verá que a instância primária é agora<VM2>
.Nota
Este artigo poderá conter referências ao termo slave (secundário), um termo que a Microsoft já não utiliza. Quando o termo for removido do software, iremos removê-lo 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>
Use o sqlcmd para entrar na réplica principal usando o nome do ouvinte:
- Use um login que foi criado anteriormente e substitua
<YourPassword>
pela senha correta. O exemplo a seguir usa o logon que foi criado com osa
SQL Server.
sqlcmd -S ag1-listener -U sa -P <YourPassword>
- Use um login que foi criado anteriormente e substitua
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 fez failover.
Próximo passo
Para utilizar um ouvinte de grupo de disponibilidade para suas instâncias do SQL Server, você precisa criar e configurar um balanceador de carga.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários