Configurar a instância do cluster de failover no Linux (NFS)

Aplica-se a:SQL Server em Linux

Este artigo explica como configurar o armazenamento NFS para uma instância de cluster de failover (FCI) no Linux.

NFS, ou sistema de arquivos de rede, é um método comum para compartilhar discos no mundo Linux, mas não no Windows. Semelhante ao iSCSI, o NFS pode ser configurado em um servidor ou em algum tipo de dispositivo ou unidade de armazenamento, desde que atenda aos requisitos de armazenamento do SQL Server.

Informações importantes sobre o servidor NFS

A fonte que hospeda NFS (um servidor Linux ou outra coisa) deve estar usando/sendo compatível com a versão 4.2 ou posterior. As versões anteriores não funcionam com o SQL Server no Linux.

Ao configurar as pastas para serem partilhadas no servidor NFS, siga estas orientações gerais:

  • rw para garantir que a pasta possa ser lida e escrita
  • sync para garantir gravações garantidas na pasta
  • Não use no_root_squash como opção; é considerado um risco de segurança
  • Verifique se a pasta tem todos os direitos (777) aplicados

Assegure que os seus padrões de segurança para o acesso são cumpridos. Ao configurar a pasta, certifique-se de que apenas os servidores que participam da FCI devem ver a pasta NFS. No exemplo a seguir, um /etc/exports modificado em uma solução NFS baseada em Linux é mostrado, onde a pasta é restrita a FCIN1 e FCIN2.

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients. See export(5).
#
/var/nfs/fci1   FCIN1(rw,sync) FCIN2(rw,sync)

Instruções

  1. Escolha um dos servidores que participarão da configuração da FCI. Não importa qual.

  2. Verifique se o servidor consegue ver os pontos de montagem no servidor NFS.

    sudo showmount -e <IPAddressOfNFSServer>
    
    • <IPAddressOfNFSServer> é o endereço IP do servidor NFS que você vai usar.
  3. Para bancos de dados do sistema ou qualquer coisa armazenada no local de dados padrão, siga estas etapas. Caso contrário, pule para a Etapa 4.

    • Certifique-se de que o SQL Server está parado no servidor em que está a trabalhar.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    • Altere completamente para ser o superusuário.

      sudo -i
      
    • Mude para ser o utilizador n.º mssql.

      su mssql
      
    • Crie um diretório temporário para armazenar os dados e os arquivos de log do SQL Server.

      mkdir <TempDir>
      
      • <TempDir> é o nome da pasta. O exemplo a seguir cria uma pasta chamada /var/opt/mssql/tmp.
      mkdir /var/opt/mssql/tmp
      
    • Copie os dados e ficheiros de registo do SQL Server para o diretório temporário.

      cp /var/opt/mssql/data/* <TempDir>
      
      • <TempDir> é o nome da pasta da etapa anterior.
    • Verifique se os arquivos estão no diretório.

      ls <TempDir>
      
      • <TempDir> é o nome da pasta da etapa anterior.
    • Apague os ficheiros do diretório de dados existente do SQL Server.

      rm -f /var/opt/mssql/data/*
      
    • Verifique se os arquivos foram excluídos.

      ls /var/opt/mssql/data
      
    • Digite exit para voltar para o usuário root.

    • Monte o compartilhamento NFS na pasta de dados do SQL Server.

      mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
      
      • <IPAddressOfNFSServer> é o endereço IP do servidor NFS que você vai usar
      • <FolderOnNFSServer> é o nome do compartilhamento NFS. A seguinte sintaxe de exemplo corresponde ao exemplo anterior /etc/exports .
      mount -t nfs4 10.201.202.63:/var/nfs/fci1 /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
      
    • Verifique se a montagem foi bem-sucedida executando o comando 'mount' sem opções.

      mount
      

      Aqui está a saída esperada.

      10.201.202.63:/var/nfs/fci1 on /var/opt/mssql/data type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard, proto=tcp,port=0,timeo=14, retrans=2,sec=sys,clientaddr=10.201.202.128,local lock=none, addr=10.201.202.63)
      
    • Mude para o utilizador mssql.

      su mssql
      
    • Copie os ficheiros do diretório temporário para /var/opt/mssql/data.

      cp /var/opt/mssql/tmp/* /var/opt/mssql/data
      
    • Verifique se os arquivos estão lá.

      ls /var/opt/mssql/data
      
    • Digite exit para não ser mssql.

    • Digite exit para não ser root.

    • Inicie o SQL Server. Se tudo foi copiado corretamente e a segurança aplicada corretamente, o SQL Server deverá aparecer como iniciado.

      sudo systemctl start mssql-server
      sudo systemctl status mssql-server
      
    • Crie um banco de dados para testar se a segurança está configurada corretamente. O exemplo a seguir mostra que está sendo feito via Transact-SQL. Isso também pode ser feito por meio do SQL Server Management Studio (SSMS).

      Captura de tela mostrando como criar o banco de dados de teste.

    • Pare o SQL Server e verifique se está desligado.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    • Se não estiveres a criar outras montagens NFS, desmonta a partilha. Se estiver a criar outras montagens, não desmonte.

      sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> /var/opt/mssql/data
      
      • <IPAddressOfNFSServer> é o endereço IP do servidor NFS que você vai usar
      • <FolderOnNFSServer> é o nome do compartilhamento NFS
      • /var/opt/mssql/data é o ponto de montagem estabelecido anteriormente neste procedimento.
  4. Para coisas diferentes de bancos de dados do sistema, como bancos de dados de usuários ou backups, siga estas etapas. Se estiver usando apenas o local padrão, pule para a Etapa 5.

    • Torne-se o superusuário.

      sudo -i
      
    • Crie uma pasta que será usada pelo SQL Server.

      mkdir <FolderName>
      
      • <FolderName> é o nome da pasta. O caminho completo da pasta precisa ser especificado se não estiver no local certo.

      O exemplo a seguir cria uma pasta chamada /var/opt/mssql/userdata.

      mkdir /var/opt/mssql/userdata
      
    • Monte o compartilhamento NFS na pasta que foi criada na etapa anterior.

      mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn> -o nfsvers=4.2,timeo=14,intr
      
      • <IPAddressOfNFSServer> é o endereço IP do servidor NFS que você vai usar
      • <FolderOnNFSServer> é o nome do compartilhamento NFS
      • <FolderToMountIn> é a pasta criada na etapa anterior.

      O exemplo a seguir monta o compartilhamento NFS.

      mount -t nfs4 10.201.202.63:/var/nfs/fci2 /var/opt/mssql/userdata -o nfsvers=4.2,timeo=14,intr
      
    • Verifique se a montagem foi bem-sucedida executando o comando 'mount' sem opções.

    • Digite exit para não ser mais o superusuário.

    • Para testar, crie um banco de dados nessa pasta. O exemplo a seguir usa sqlcmd para criar um banco de dados, alternar o contexto para ele, verificar se os arquivos existem no nível do sistema operacional e, em seguida, exclui o local temporário. Você pode usar o SSMS.

      Captura de tela do comando sqlcmd e da resposta ao comando.

    • Desmontar o compartilhamento

      sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
      
      • <IPAddressOfNFSServer> é o endereço IP do servidor NFS que você vai usar
      • <FolderOnNFSServer> é o nome do compartilhamento NFS
      • <FolderToMountIn> é a pasta criada anteriormente neste processo.
  5. Repita as etapas nos outros nós.