Partilhar via


Configurar instância de cluster de failover - SQL Server no Linux (RHEL)

Aplica-se a:SQL Server - Linux

Uma instância de cluster de failover de dois nós com disco partilhado do SQL Server fornece redundância ao nível do servidor para alta disponibilidade. Neste tutorial, você aprenderá a criar uma instância de cluster de failover de dois nós do SQL Server no Linux. As etapas específicas que você concluirá incluem:

  • Instalar e configurar o Linux
  • Instalar e configurar o SQL Server
  • Configurar o ficheiro hosts
  • Configurar o armazenamento compartilhado e mover os arquivos de banco de dados
  • Instalar e configurar o Pacemaker em cada nó do cluster
  • Configurar a instância de cluster de failover

Este artigo explica como criar uma FCI (instância de cluster de failover de disco compartilhado) de dois nós para o SQL Server. O artigo inclui instruções e exemplos de script para o Red Hat Enterprise Linux (RHEL). As distribuições do Ubuntu são semelhantes ao RHEL, então os exemplos de script normalmente também funcionarão no Ubuntu.

Para obter informações conceituais, consulte Instâncias de cluster de failover - SQL Server no Linux.

Pré-requisitos

Para concluir o seguinte cenário de ponta a ponta, você precisa de duas máquinas para implantar o cluster de dois nós e outro servidor para armazenamento. As etapas abaixo descrevem como esses servidores serão configurados.

Instalar e configurar o Linux

A primeira etapa é configurar o sistema operacional nos nós do cluster. Em cada nó do cluster, configure uma distribuição Linux. Use a mesma distribuição e versão em ambos os nós. Use uma ou outra das seguintes distribuições:

  • RHEL com uma assinatura válida para o complemento HA

Instalar e configurar o SQL Server

  1. Instale e configure o SQL Server em ambos os nós. Para obter instruções detalhadas, consulte Diretrizes de instalação do SQL Server no Linux.

  2. Designe um nó como primário e o outro como secundário, para fins de configuração. Para seguir este guia, use estes termos.

  3. No nó secundário, pare e desative o SQL Server. O exemplo a seguir para e desabilita o SQL Server:

    sudo systemctl stop mssql-server
    sudo systemctl disable mssql-server
    

    Observação

    No momento da configuração, uma Chave Mestra do Servidor é gerada para a instância do SQL Server e colocada em var/opt/mssql/secrets/machine-key. No Linux, o SQL Server sempre é executado como uma conta local chamada mssql. Por ser uma conta local, a sua identidade não é partilhada entre nós. Portanto, você precisa copiar a chave de criptografia do nó primário para cada nó secundário para que cada conta mssql local possa acessá-la para descriptografar a Chave Mestra do Servidor.

  4. No nó primário, crie um logon do SQL Server para o Pacemaker e conceda a permissão de logon para executar sp_server_diagnostics. O Pacemaker usa essa conta para verificar qual nó está executando o SQL Server.

    sudo systemctl start mssql-server
    

    Conecte-se ao banco de dados do SQL Server master com a conta sa e execute o seguinte:

    USE [master];
    GO
    
    CREATE LOGIN [<loginName>]
        WITH PASSWORD = N'<password>';
    
    ALTER SERVER ROLE [sysadmin] ADD MEMBER [<loginName>];
    

    Atenção

    A sua palavra-passe deve seguir a política de palavra-passe predefinida do SQL Server . Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.

    Como alternativa, você pode definir as permissões em um nível mais granular. O login do Pacemaker requer que VIEW SERVER STATE consulte o status de integridade com sp_server_diagnostics, setupadmine ALTER ANY LINKED SERVER para atualizar o nome da instância FCI com o nome do recurso, executando sp_dropserver e sp_addserver.

  5. No nó primário, pare e desabilite o SQL Server.

Configurar o ficheiro hosts

Em cada nó de cluster, configure o ficheiro hosts. O arquivo hosts deve incluir o endereço IP e o nome de cada nó do cluster.

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

    sudo ip addr show
    
  2. Defina o nome de computador em cada um dos nós. Dê a cada nó um nome exclusivo com 15 caracteres ou menos. Defina o nome do computador adicionando-o a /etc/hosts. O script a seguir permite editar /etc/hosts com vi.

    sudo vi /etc/hosts
    

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

    127.0.0.1        localhost localhost4 localhost4.localdomain4
    ::1              localhost localhost6 localhost6.localdomain6
    10.128.18.128    sqlfcivm1
    10.128.16.77     sqlfcivm2
    

Configurar o armazenamento e mover arquivos de banco de dados

Você precisa fornecer armazenamento que ambos os nós possam acessar. Você pode usar iSCSI, NFS ou SMB. Configure o armazenamento, apresente o armazenamento aos nós do cluster e mova os arquivos de banco de dados para o novo armazenamento. Os artigos a seguir explicam as etapas para cada tipo de armazenamento:

Instalar e configurar o Pacemaker em cada nó do cluster

  1. Em ambos os nós do cluster, 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 preenche esse arquivo:

    sudo touch /var/opt/mssql/secrets/passwd
    sudo echo '<loginName>' >> /var/opt/mssql/secrets/passwd
    sudo echo '<loginPassword>' >> /var/opt/mssql/secrets/passwd
    sudo chown root:root /var/opt/mssql/secrets/passwd
    sudo chmod 600 /var/opt/mssql/secrets/passwd
    
  2. Em ambos os nós do cluster, abra as portas de firewall do Pacemaker. Para abrir essas portas com 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 interna de alta disponibilidade, as seguintes portas precisarão ser abertas para que o Pacemaker possa se comunicar com outros nós no cluster:

    • TCP: portas 2224, 3121, 21064
    • UDP: porta 5405
  3. Instale pacotes Pacemaker em cada nó.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  4. Defina a senha para o usuário padrão que é criado ao instalar os pacotes Pacemaker e Corosync. Use a mesma senha em ambos os nós.

    sudo passwd hacluster
    
  5. Ative e inicie o serviço pcsd e o Pacemaker. Isso permitirá que os nós reingressem no cluster após a reinicialização. Execute o seguinte comando em ambos os nós.

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    
  6. Instale o agente de recursos FCI para SQL Server. Execute os seguintes comandos em ambos os nós.

    sudo yum install mssql-server-ha
    

Configurar a instância de cluster de failover

A FCI será criada num grupo de recursos. Isso é um pouco mais fácil, pois o grupo de recursos alivia a necessidade de restrições. No entanto, adicione os recursos ao grupo de recursos na ordem em que devem ser iniciados. A ordem em que devem começar é:

  1. Recurso de armazenamento
  2. Recurso de rede
  3. Recurso de aplicação

Este exemplo cria uma FCI no grupo NewLinFCIGrp. O nome do grupo de recursos deve ser exclusivo de qualquer recurso criado no Pacemaker.

  1. Crie o recurso de disco. Você não recebe resposta de volta se não houver um problema. A maneira de criar o recurso de disco depende do tipo de armazenamento. A seção a seguir mostra exemplos para cada tipo de armazenamento (iSCSI, NFS e SMB). Use o exemplo que se aplica ao tipo de armazenamento para seu armazenamento clusterizado.

    sudo pcs resource create <iSCSIDiskResourceName> Filesystem device="/dev/<VolumeGroupName>/<LogicalVolumeName>" directory="<FolderToMountiSCSIDisk>" fstype="<FileSystemType>" --group RGName
    
    • <iSCSIDIskResourceName> é o nome do recurso associado ao disco iSCSI
    • <VolumeGroupName> é o nome do grupo de volumes
    • <LogicalVolumeName> é o nome do volume lógico que foi criado
    • <FolderToMountiSCSIDIsk> é a pasta para montar o disco (para bancos de dados do sistema e o local padrão, seria /var/opt/mssql/data)
    • <FileSystemType> seria EXT4 ou XFS, dependendo de como as coisas foram formatadas e o que a distribuição suporta.

  1. Crie o endereço IP que será usado pela FCI. Você não recebe resposta de volta se não houver um problema.

    sudo pcs resource create <IPResourceName> ocf:heartbeat:IPaddr2 ip=<IPAddress> nic=<NetworkCard> cidr_netmask=<NetMask> --group <RGName>
    
    • <IPResourceName> é o nome do recurso associado ao endereço IP
    • <IPAddress> é o endereço IP da FCI
    • <NetworkCard> é a placa de rede associada à sub-rede (ou seja, eth0)
    • <NetMask> é a máscara de rede da sub-rede (ou seja, 24)
    • <RGName> é o nome do grupo de recursos
  2. Crie o recurso FCI. Você não recebe resposta de volta se não houver um problema.

    sudo pcs resource create FCIResourceName ocf:mssql:fci op defaults timeout=60s --group RGName
    
    • <FCIResourceName> não é apenas o nome do recurso, mas o nome amigável associado à FCI. Isso é o que os usuários e aplicativos usam para se conectar.
    • <RGName> é o nome do grupo de recursos.
  3. Execute o comando sudo pcs resource. A FCI deve estar online.

  4. Conecte-se à FCI com SSMS ou sqlcmd usando o nome DNS/recurso da FCI.

  5. Emitir a declaração SELECT @@SERVERNAME. Ele deve retornar o nome da FCI.

  6. Emitir a declaração SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS'). Ele deve retornar o nome do nó no qual a FCI está sendo executada.

  7. Provoque manualmente a falha da FCI para o(s) outro(s) nó(s). Consulte as instruções em Gerir instância de cluster de failover - SQL Server em Linux.

  8. Finalmente, retorne a FCI ao nó original e remova a restrição de colocation.

Resumo

Neste tutorial, você concluiu as seguintes tarefas.

  • Instalar e configurar o Linux
  • Instalar e configurar o SQL Server
  • Configurar ficheiro hosts
  • Configurar o armazenamento compartilhado e mover os arquivos de banco de dados
  • Instalar e configurar o Pacemaker em cada nó do cluster
  • Configurar a instância de cluster de failover