Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server no Linux
Este artigo explica como operar uma FCI (instância de cluster de failover) do SQL Server no Linux. Para criar um SQL Server FCI no Linux, veja Configurar instância de cluster de failover no Linux (RHEL).
Descrição da arquitetura
A camada de clusterização é baseada no add-on de HA do Red Hat Enterprise Linux (RHEL) HA add-on, desenvolvido sobre o Pacemaker. O Corosync e o Pacemaker coordenam a comunicação de cluster e o gerenciamento de recursos. A instância do SQL Server está ativa em um nó por vez.
O diagrama a seguir ilustra os componentes em um cluster do Linux com o SQL Server.
Para mais informações sobre configuração do cluster, opções de agentes de recursos e gerenciamento, visite a documentação de referência RHEL.
Failover
O failover para FCIs é semelhante a um WSFC (cluster de failover do Windows Server). Se o nó de cluster que hospeda a FCI apresentar algum tipo de falha, a FCI deverá fazer o failover automaticamente para outro nó. Ao contrário de um WSFC, não há como definir proprietários preferenciais; portanto, o Pacemaker escolhe o nó que será o novo host para a FCI.
Às vezes, você pode querer realizar o failover manual da FCI para outro nó. O processo não é o mesmo que com FCIs em um WSFC. Em um WSFC, você faz failover de recursos no nível da função. No Pacemaker, você escolhe um recurso para mover, e se todas as restrições estiverem corretas, todo o resto também se move.
A forma de fazer failover depende da distribuição Linux. Siga as instruções da sua distribuição Linux.
Failover manual (RHEL ou Ubuntu)
Para fazer um failover manual em servidores RHEL (Red Hat Enterprise Linux) ou Ubuntu, execute as etapas a seguir.
Emita o seguinte comando:
sudo pcs resource move <FCIResourceName> <NewHostNode><FCIResourceName>é o nome do recurso do Pacemaker para o FCI do SQL Server, e<NewHostNode>é o nome do nó do cluster no qual você deseja hospedar o FCI.Durante um failover manual, o Pacemaker cria uma restrição de localização no recurso que foi escolhido para ser movido manualmente. Para ver essa restrição, execute
sudo pcs constraint.Após a conclusão do failover, remova a restrição:
sudo pcs resource clear <FCIResourceName>
Failover manual (SLES)
Note
A partir do SQL Server 2025 (17.x), não há suporte para SLES (SUSE Linux Enterprise Server). Para o SQL Server 2022 (16.x) e versões anteriores, apenas o SLES 15 é suportado.
No SUSE Linux Enterprise Server (SLES), use o comando migrate para realizar manualmente o failover de uma FCI do SQL Server. Por exemplo:
crm resource migrate <FCIResourceName> <NewHostNode>
<FCIResourceName> é o nome do recurso para a instância do cluster de failover, e <NewHostNode> é o nome do novo host de destino.
Monitorar um cluster de failover
Exiba o status atual do cluster:
sudo pcs status
Veja o status ao vivo do cluster e dos recursos:
sudo crm_mon
Veja os logs do agente de recursos em /var/log/cluster/corosync.log.
Adicionar um nó a um cluster
Verifique o endereço IP de cada nó. O script a seguir mostra o endereço IP do nó atual.
ip addr showO novo nó precisa de um nome único que tenha 15 caracteres ou menos. Defina o nome do computador adicionando-o a
/etc/hosts. O script a seguir permite que você edite/etc/hostscomvi.sudo vi /etc/hostsO exemplo a seguir mostra
/etc/hostscom adições para três nós nomeadossqlfcivm1,sqlfcivm2, esqlfcivm3.127.0.0.1 localhost localhost4 localhost4.localdomain4 ::1 localhost localhost6 localhost6.localdomain6 10.128.18.128 sqlfcivm1 10.128.16.77 sqlfcivm2 10.128.14.26 sqlfcivm3O arquivo deve ser o mesmo em todos os nós.
Interrompa o serviço SQL Server no novo nó.
Siga as instruções para montar o diretório de arquivos do banco de dados no local compartilhado.
No servidor NFS, instale
nfs-utils:sudo yum -y install nfs-utilsAbra o firewall em clientes e servidor NFS:
sudo firewall-cmd --permanent --add-service=nfs sudo firewall-cmd --permanent --add-service=mountd sudo firewall-cmd --permanent --add-service=rpc-bind sudo firewall-cmd --reloadEdite o arquivo
/etc/fstabpara incluir o comando mount:<IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intrExecute
mount -apara que as alterações entrem em vigor.No novo nó, crie um arquivo para armazenar o nome de usuário e a senha do SQL Server para o logon do Pacemaker. O comando a seguir cria e popula este arquivo:
sudo touch /var/opt/mssql/secrets/passwd echo "<loginName>" | sudo tee -a /var/opt/mssql/secrets/passwd echo "<password>" | sudo tee -a /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwdCaution
Sua senha deve seguir a política de senha padrão do SQL Server. Por padrão, a senha precisa ter pelo menos oito caracteres e conter caracteres de três dos seguintes quatro conjuntos: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As senhas podem ter até 128 caracteres. Use senhas que sejam tão longas e complexas quanto possível.
No novo nó, abra as portas do firewall do Pacemaker. Para abrir essas portas com o
firewalld, execute o seguinte comando:sudo firewall-cmd --permanent --add-service=high-availability sudo firewall-cmd --reloadSe você estiver usando outro firewall que não tenha configuração de alta disponibilidade embutida, abra as seguintes portas para o Pacemaker se comunicar com outros nós do cluster:
- TCP: portas 2224, 3121 e 21064
- UDP: porta 5405
Instale os pacotes do Pacemaker no novo nó.
sudo yum install pacemaker pcs fence-agents-all resource-agentsDefina a senha do usuário padrão criado ao instalar pacotes do Pacemaker e do Corosync. Use a mesma senha dos nós existentes.
sudo passwd haclusterHabilite e inicie o serviço
pcsde o Pacemaker. O novo nó pode voltar a ingressar no cluster após uma reinicialização. Execute o comando a seguir no novo nó.sudo systemctl enable pcsd sudo systemctl start pcsd sudo systemctl enable pacemakerInstalar o agente de recurso FCI para SQL Server. Execute o comando a seguir no novo nó.
sudo yum install mssql-server-haEm um nó existente no cluster, autentique o novo nó e adicione-o ao cluster:
sudo pcs cluster auth <nodeName3> -u hacluster sudo pcs cluster node add <nodeName3>
Remover nós de um cluster
Para remover um nó de um cluster, execute o seguinte comando:
sudo pcs cluster node remove <nodeName>
Alterar a frequência de monitoramento de recursos
sudo pcs resource op monitor interval=<interval>s <sqlResourceName>
O exemplo a seguir define o intervalo de monitoramento para 2 segundos para o mssqlha recurso:
sudo pcs resource op monitor interval=2s mssqlha
Troubleshoot
Ao solucionar de problemas do cluster, é útil entender como os três daemons funcionam em conjunto para gerenciar os recursos de cluster.
| Daemon | Description |
|---|---|
| Corosync | Fornece participação no quórum e troca de mensagens entre os nós do cluster. |
| Pacemaker | Reside na parte superior do Corosync e fornece computadores de estado para recursos. |
| PCSD | Gerencia o Pacemaker e o Corosync por meio das ferramentas pcs. |
O PCSD precisa estar em execução para que as ferramentas pcs sejam usadas.
Status atual do cluster
sudo pcs status retorna informações básicas sobre o cluster, o quorum, os nós, os recursos e o status do daemon de cada nó.
O exemplo a seguir mostra uma saída saudável do quórum Pacemaker:
Cluster name: MyAppSQL
Last updated: Wed Oct 31 12:00:00 2024 Last change: Wed Oct 31 11:00:00 2024 by root via crm_resource on sqlvmnode1
Stack: corosync
Current DC: sqlvmnode1 (version 1.1.13-10.el7_2.4-44eb2dd) - partition with quorum
3 nodes and 1 resource configured
Online: [ sqlvmnode1 sqlvmnode2 sqlvmnode3 ]
Full list of resources:
mssqlha (ocf::sql:fci): Started sqlvmnode1
PCSD Status:
sqlvmnode1: Online
sqlvmnode2: Online
sqlvmnode3: Online
Daemon Status:
corosync: active/disabled
pacemaker: active/enabled
Neste exemplo, partition with quorum significa que um quórum majoritário de nós está online. Se o cluster perder um quorum de maioria dos nós, pcs status retornará partition WITHOUT quorum e todos os recursos serão interrompidos.
Online: [sqlvmnode1 sqlvmnode2 sqlvmnode3] retorna o nome de todos os nós que estão participando atualmente do cluster. Se algum dos nós não estiver participando, pcs status retorna OFFLINE: [<nodename>].
PCSD Status mostra o status do cluster de cada nó.
Motivos pelos quais um nó pode estar offline
Verifique os itens a seguir quando um nó estiver offline.
Firewall
Abra as seguintes portas em todos os nós para que o Pacemaker possa se comunicar:
- TCP: portas 2224, 3121 e 21064
- UDP: porta 5405
Serviços do Pacemaker ou do Corosync em execução
Comunicação dos nós
Mapeamentos de nomes de nós