Partilhar via


Operar a FCI (instância de cluster de failover) RHEL do SQL Server

Aplica-se a:SQL Server – Linux

Este documento descreve como executar as tarefas a seguir para o SQL Server em um cluster de failover de disco compartilhado com o Red Hat Enterprise Linux.

  • Fazer failover do cluster manualmente
  • Monitorar um serviço SQL Server de cluster de failover
  • Adicionar um nó de cluster
  • Remover um nó de cluster
  • Alterar a frequência de monitoramento de recursos do SQL Server

Descrição da arquitetura

A camada de clustering baseia-se no complemento de HA do RHEL (Red Hat Enterprise Linux) criado com base no 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ó ou no outro.

O diagrama a seguir ilustra os componentes em um cluster do Linux com o SQL Server.

Cluster SQL de disco compartilhado do Red Hat Enterprise Linux 7.

Para saber mais sobre configuração de cluster, opções de agentes de recursos e gerenciamento, acesse a Documentação de referência do RHEL.

Fazer failover de cluster manualmente

O comando resource move cria uma restrição que força o recurso a ser reiniciado no nó de destino.  Depois de executar o comando move, a execução do recurso clear removerá a restrição, de modo que seja possível mover o recurso novamente ou fazer o failover do recurso automaticamente.

sudo pcs resource move <sqlResourceName> <targetNodeName>
sudo pcs resource clear <sqlResourceName>

O exemplo a seguir move o recurso mssqlha para um nó chamado sqlfcivm2 e, em seguida, remove a restrição, de modo que o recurso possa ser movido para outro nó posteriormente.

sudo pcs resource move mssqlha sqlfcivm2
sudo pcs resource clear mssqlha

Monitorar um serviço SQL Server de cluster de failover

Exiba o status atual do cluster:

sudo pcs status

Exiba o status ativo de cluster e recursos:

sudo crm_mon

Exiba os logs do agente de recursos em /var/log/cluster/corosync.log

Adicionar um nó a um cluster

  1. Verifique o endereço IP de cada nó. O script a seguir mostra o endereço IP do nó atual.

    ip addr show
    
  2. O novo nó precisa de um nome exclusivo que tenha 15 caracteres ou menos. Por padrão, no Red Hat Linux, o nome do computador é localhost.localdomain. Esse nome padrão pode não ser exclusivo e é muito longo. Defina o nome do computador como o novo nó. Defina o nome do computador adicionando-o a /etc/hosts. O script a seguir permite que você edite /etc/hosts com vi.

    sudo vi /etc/hosts
    

    O exemplo a seguir mostra /etc/hosts com adições para três nós chamados sqlfcivm1, sqlfcivm2 e sqlfcivm3.

    127.0.0.1      localhost localhost4 localhost4.localdomain4
    ::1            localhost localhost6 localhost6.localdomain6
    10.128.18.128  fcivm1
    10.128.16.77   fcivm2
    10.128.14.26   fcivm3
    

    O arquivo deve ser o mesmo em todos os nós.

  3. Interrompa o serviço SQL Server no novo nó.

  4. Siga as instruções para montar o diretório do arquivo de banco de dados na localização compartilhada:

    No servidor NFS, instale nfs-utils

    sudo yum -y install nfs-utils
    

    Abra o firewall em clientes e no 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 --reload
    

    Edite o arquivo /etc/fstab para incluir o comando mount:

    <IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intr
    

    Execute mount -a para que as alterações entrem em vigor.

  5. 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/passwd
    sudo echo "<loginName>" >> /var/opt/mssql/secrets/passwd
    sudo echo "<loginPassword>" >> /var/opt/mssql/secrets/passwd
    sudo chown root:root /var/opt/mssql/passwd
    sudo chmod 600 /var/opt/mssql/passwd
    
  6. 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 --reload
    

    Se você estiver usando outro firewall que não tenha uma configuração de alta disponibilidade interna, as portas a seguir precisarão ser abertas para que o Pacemaker possa se comunicar com outros nós no cluster:

    • TCP: portas 2224, 3121 e 21064
    • UDP: porta 5405
  7. Instale os pacotes do Pacemaker no novo nó.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  8. Defina 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 hacluster
    
  9. Habilite e inicie o serviço pcsd e o Pacemaker. Isso permitirá que o novo nó reingresse no cluster após a reinicialização. Execute o comando a seguir no novo nó.

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    
  10. Instalar o agente do recurso FCI para SQL Server. Execute os comandos a seguir no novo nó.

    sudo yum install mssql-server-ha
    
  11. Em um nó existente do cluster, autentique o novo nó e adicione-o ao cluster:

    sudo pcs cluster auth <nodeName3> -u hacluster
    sudo pcs cluster node add <nodeName3>
    

    O exemplo a seguir adiciona um nó chamado vm3 ao cluster.

    sudo pcs cluster auth
    sudo pcs cluster start
    

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 do intervalo de monitoramento do recurso sqlservr

sudo pcs resource op monitor interval=<interval>s <sqlResourceName>

O seguinte exemplo define o intervalo de monitoramento como 2 segundos para o recurso mssql:

sudo pcs resource op monitor interval=2s mssqlha

Solução de problemas do cluster de disco compartilhado do Red Hat Enterprise Linux para o SQL Server

Ao solucionar de problemas do cluster, é útil entender como os três daemons funcionam em conjunto para gerenciar os recursos de cluster.

Daemon Descrição
Corosync Fornece associação de quorum e mensagens entre os nós de 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ó.

Um exemplo de uma saída de quorum íntegra do Pacemaker é:

Cluster name: MyAppSQL
Last updated: Wed Oct 31 12:00:00 2016  Last change: Wed Oct 31 11:00:00 2016 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

No exemplo, partition with quorum significa que um quorum de maioria dos 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 participam atualmente do cluster. Se algum nó não estiver participando, pcs status retornará 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

    As portas a seguir precisam ser abertas em todos os nós para que o Pacemaker possa se comunicar.

    • **TCP: 2224, 3121, 21064
  • Serviços do Pacemaker ou do Corosync em execução

  • Comunicação dos nós

  • Mapeamentos de nomes de nós