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
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.
Pesquise por balanceador de carga e, em seguida, 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:
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.
No grupo de recursos, selecione o balanceador de carga criado.
Em Configurações, selecione Pools de back-end.
Em Pools de back-end, selecione Adicionar para criar um pool de endereços de back-end.
Em Adicionar pool de back-ends, sob Nome, digite um nome para o pool de back-ends.
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 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.
No painel Configurações do balanceador de carga, selecione Investigações de integridade.
No painel Investigações de integridade, selecione Adicionar.
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
Selecione OK.
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.
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. 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 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 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.
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
Crie um grupo que contém o recurso
virtualip
eazure_load_balancer
:sudo pcs resource group add virtualip_group azure_load_balancer virtualip
Adicionar restrições
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
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
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
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
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 doag1-listener
. Em seguida, adicioneag1-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
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 logonsa
que foi criado com o SQL Server.
sqlcmd -S ag1-listener -U sa -P <YourPassword>
- Use um logon criado anteriormente e substitua
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
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
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.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
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>
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 logonsa
que foi criado com o SQL Server.
sqlcmd -S ag1-listener -U sa -P <YourPassword>
- Use um logon 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 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.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de