Configurar uma instância de cluster de comutação por falha do SQL Server que usa o Storage Spaces Direct


As instâncias de cluster de comutação por falha Always On do Microsoft SQL Server (FCI) permitem-lhe executar uma única instância do SQL Server em vários nós do cluster de comutação por falha do Windows Server (WSFC). Em qualquer momento, um dos nós do cluster aloja ativamente a instância SQL. Em caso de falha, o WSFC transfere automaticamente a propriedade dos recursos da instância para outro nó.

O FCI do SQL Server requer que os dados estejam localizados no armazenamento partilhado para que possam ser acedidos em todos os nós do WSFC. Este guia descreve como pode implementar uma instância de cluster de failover do SQL Server 2019 que usa o Storage Spaces Direct (S2D) para armazenamento partilhado. O S2D fornece uma SAN virtual baseada em software que pode usar discos de dados de VMs do Compute Engine para armazenar a base de dados SQL.

O diagrama seguinte ilustra a implementação:

Arquitetura

Ao implementar uma arquitetura hiperconvergente, as instâncias de VM node-1 e node-2 servem como nós do WSFC e também alojam o armazenamento partilhado. Uma terceira instância de VM, witness, é usada para alcançar um quórum num cenário de comutação por falha. As três instâncias de VM estão distribuídas por três zonas e partilham uma sub-rede comum.

Os clientes comunicam com a instância do SQL Server através de um balanceador de carga de TCP interno. Este equilibrador de carga usa uma verificação de funcionamento personalizada para determinar que nó do WSFC está atualmente a alojar a instância SQL e encaminha o tráfego para essa instância.

Este artigo pressupõe que já implementou o Active Directory no Google Cloud e que tem conhecimentos básicos do SQL Server, do Active Directory e do Compute Engine.

Objetivos

  • Implemente um WSFC que compreenda duas instâncias de VM do SQL Server e uma terceira instância de VM que funcione como testemunha de partilha de ficheiros.
  • Implemente um FCI do SQL Server no WSFC.
  • Verifique se o cluster está a funcionar simulando uma comutação por falha.

Custos

Este tutorial usa componentes faturáveis do Google Cloud, incluindo:

Use a calculadora de preços para gerar uma estimativa de custos com base na sua utilização prevista.

Antes de começar

Para concluir este guia, precisa do seguinte:

  • Um domínio do Active Directory com, pelo menos, um controlador de domínio. Pode criar um domínio do Active Directory através do Microsoft AD gerido. Em alternativa, pode implementar um ambiente do Active Directory personalizado no Compute Engine e configurar uma zona de encaminhamento de DNS privado que encaminha as consultas de DNS para os controladores de domínio.
  • Um utilizador do Active Directory que tem autorização para associar computadores ao domínio e pode iniciar sessão através do RDP. Se estiver a usar o Managed Microsoft AD, pode usar o utilizador setupadmin.
  • Um projeto Google Cloud e uma VPC com conetividade aos controladores de domínio do Active Directory.
  • Uma sub-rede a usar para as instâncias de VM do WSFC.

Para concluir o guia, também precisa de um Google Cloud projeto:

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Quando terminar este tutorial, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpar.

Preparar o projeto e a rede

Para preparar o Google Cloud projeto e a VPC para a implementação do FCI do SQL Server, faça o seguinte:

  1. Na Google Cloud consola, abra o Cloud Shell clicando no botão Ativar Cloud Shell Ative o Cloud Shell..

    Aceda à Google Cloud consola

  2. Inicialize as seguintes variáveis:

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    

    Onde:

    • VPC_NAME: nome da sua VPC
    • SUBNET_NAME: nome da sua sub-rede
  3. Defina o seu ID do projeto predefinido:

    gcloud config set project PROJECT_ID
    

    Substitua PROJECT_ID pelo ID do seu Google Cloud projeto.

  4. Predefina a sua região:

    gcloud config set compute/region REGION
    

    Substitua REGION pelo ID da região na qual quer fazer a implementação.

Crie regras de firewall

Para permitir que os clientes se liguem ao SQL Server, permita a comunicação entre os nós do WSFC e para permitir que o equilibrador de carga realize verificações de estado, tem de criar várias regras de firewall. Para simplificar a criação destas regras de firewall, use etiquetas de rede:

  • Os 2 nós do WSFC estão anotados com a etiqueta wsfc-node.
  • Todos os servidores (incluindo o servidor testemunha) são anotados com a etiqueta wsfc.

Crie regras de firewall que usem estas etiquetas de rede:

  1. Regresse à sua sessão do Cloud Shell existente.
  2. Crie regras de firewall para os nós do WSFC:

    SUBNET_CIDR=$(gcloud compute networks subnets describe $SUBNET_NAME --format=value\('ipCidrRange'\))
    
    gcloud compute firewall-rules create allow-all-between-wsfc-nodes \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp,udp,icmp \
      --enable-logging \
      --source-tags=wsfc \
      --target-tags=wsfc \
      --network=$VPC_NAME \
      --priority 10000
    
    gcloud compute firewall-rules create allow-sql-to-wsfc-nodes \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp:1433 \
      --enable-logging \
      --source-ranges=$SUBNET_CIDR \
      --target-tags=wsfc-node \
      --network=$VPC_NAME \
      --priority 10000
    
  3. Crie uma regra de firewall que permita verificações de funcionamento a partir dos intervalos de IPs dos verificadores do Google Cloud:

    gcloud compute firewall-rules create allow-health-check-to-wsfc-nodes \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp \
      --source-ranges=130.211.0.0/22,35.191.0.0/16 \
      --target-tags=wsfc-node \
      --network=$VPC_NAME \
      --priority 10000
    

Crie instâncias de VM

Agora, implementa duas instâncias de VM para o cluster de comutação por falha. Em qualquer momento, apenas uma destas VMs funciona como o nó FCI ativo, enquanto o outro nó funciona como o nó de comutação por falha. As duas instâncias de VM têm de cumprir os seguintes requisitos:

  • Estão localizados na mesma região para que possam ser acedidos por um balanceador de carga TCP interno.
  • O respetivo agente convidado está configurado para usar o modo WSFC. Neste modo, o agente convidado ignora os endereços IP dos equilibradores de carga internos quando configura a interface de rede local. Este comportamento é necessário para evitar conflitos de endereços IP durante eventos de comutação por falha do WSFC.

Usar uma imagem premium do SQL Server com o SQL Server 2019 pré-instalado.

Para fornecer um voto de desempate e alcançar um quórum para o cenário de comutação por falha, implementa uma terceira VM que funciona como um teste de partilha de ficheiros.

  1. Regresse à sua sessão do Cloud Shell existente.
  2. Crie um script especializado para os nós do WSFC. O script instala a funcionalidade do Windows necessária e cria regras de firewall para o WSFC e o SQL Server:

    cat << "EOF" > specialize-node.ps1
    
    $ErrorActionPreference = "stop"
    
    # Install required Windows features
    Install-WindowsFeature Failover-Clustering -IncludeManagementTools
    Install-WindowsFeature RSAT-AD-PowerShell
    
    # Open firewall for WSFC
    netsh advfirewall firewall add rule name="Allow SQL Server health check" dir=in action=allow protocol=TCP localport=59997
    
    # Open firewall for SQL Server
    netsh advfirewall firewall add rule name="Allow SQL Server" dir=in action=allow protocol=TCP localport=1433
    
    EOF
    
  3. Crie as instâncias de VM. Nas duas VMs que funcionam como nós S2D e WSFC, anexe discos de dados adicionais e ative o modo WSFC definindo a chave de metadados enable-wsfc como true:

    REGION=$(gcloud config get-value compute/region)
    PD_SIZE=50
    MACHINE_TYPE=n2-standard-8
    
    gcloud compute instances create node-1 \
      --zone $REGION-a \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2019-win-2022 \
      --image-project windows-sql-cloud \
      --tags wsfc,wsfc-node \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --boot-disk-device-name "node-1" \
      --create-disk=name=node-1-datadisk-1,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-1-datadisk-2,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-1-datadisk-3,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-1-datadisk-4,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create node-2 \
      --zone $REGION-b \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2019-win-2022 \
      --image-project windows-sql-cloud \
      --tags wsfc,wsfc-node \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --boot-disk-device-name "node-2" \
      --create-disk=name=node-2-datadisk-1,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-2-datadisk-2,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-2-datadisk-3,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-2-datadisk-4,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create "witness" \
      --zone $REGION-c \
      --machine-type n2-standard-2 \
      --subnet $SUBNET_NAME \
      --image-family=windows-2022 \
      --image-project=windows-cloud \
      --tags wsfc \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --metadata sysprep-specialize-script-ps1="add-windowsfeature FS-FileServer"
    
  4. Para associar as 3 instâncias de VM ao Active Directory, faça o seguinte para cada uma das 3 instâncias de VM:

    1. Monitorize o processo de inicialização da VM vendo a respetiva saída da porta de série:

      gcloud compute instances tail-serial-port-output NAME
      

      Substitua NAME pelo nome da instância de VM.

      Aguarde alguns minutos até ver o resultado Instance setup finished e, em seguida, prima Ctrl+C. Neste momento, a instância de VM está pronta a ser usada.

    2. Crie um nome de utilizador e uma palavra-passe para a instância de VM

    3. Estabeleça ligação à VM através do Ambiente de Trabalho Remoto e inicie sessão com o nome de utilizador e a palavra-passe criados no passo anterior.

    4. Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell (administrador).

    5. Clique em Sim para confirmar o pedido de elevação.

    6. Associe o computador ao seu domínio do Active Directory e reinicie:

      Add-Computer -Domain DOMAIN -Restart
      

      Substitua DOMAIN pelo nome DNS do seu domínio do Active Directory.

      Aguarde aproximadamente 1 minuto para que o reinício seja concluído.

Reserve endereços IP do cluster

Agora, reserva dois endereços IP estáticos na sua rede VPC. As duas moradas têm finalidades diferentes:

  • IP do equilibrador de carga: este endereço IP é usado pelos clientes para estabelecer ligação ao SQL Server.
  • IP do cluster: este endereço IP é usado apenas internamente pelo WSFC.

Para reservar os endereços IP estáticos, faça o seguinte:

  1. Reserve um IP estático para o equilibrador de carga interno e capture o endereço numa nova variável de ambiente denominada LOADBALANCER_ADDRESS:

    gcloud compute addresses create wsfc \
      --subnet $SUBNET_NAME \
      --region $(gcloud config get-value compute/region)
    
    LOADBALANCER_ADDRESS=$(gcloud compute addresses describe wsfc \
      --region $(gcloud config get-value compute/region) \
      --format=value\(address\)) && \
    echo "Load Balancer IP: $LOADBALANCER_ADDRESS"
    

    Tome nota do endereço IP, pois vai precisar dele mais tarde.

  2. Reserve outro endereço IP estático que usa como IP do cluster:

    gcloud compute addresses create wsfc-cluster \
      --subnet $SUBNET_NAME \
      --region $(gcloud config get-value compute/region) && \
    CLUSTER_ADDRESS=$(gcloud compute addresses describe wsfc-cluster \
        --region $(gcloud config get-value compute/region) \
        --format=value\(address\)) && \
    echo "Cluster IP: $CLUSTER_ADDRESS"
    

    Tome nota do endereço IP, pois vai precisar dele mais tarde.

O projeto e a VPC estão agora prontos para a implementação do WSFC e do SQL Server.

Crie uma partilha de ficheiros de testemunho

Para preparar witness para funcionar como testemunha de partilha de ficheiros, crie uma partilha de ficheiros e conceda-se a si próprio e aos dois nós do WSFC acesso à partilha de ficheiros:

  1. Ligue-se a witness através do Ambiente de Trabalho Remoto. Inicie sessão com a sua conta de utilizador do domínio.
  2. Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell (administrador).
  3. Clique em Sim para confirmar o pedido de elevação.
  4. Crie a pasta de testemunho e partilhe-a:

    New-Item "C:\QWitness" -Type directory
    
    icacls C:\QWitness\ /grant 'node-1$:(OI)(CI)(M)'
    icacls C:\QWitness\ /grant 'node-2$:(OI)(CI)(M)'
    
    New-SmbShare `
      -Name QWitness `
      -Path "C:\QWitness" `
      -Description "SQL File Share Witness" `
      -FullAccess  $env:username,node-1$,node-2$
    

Implementar o cluster de comutação por falha

Agora, usa as instâncias de VM para implementar um WSFC e o SQL Server.

Implemente o WSFC

Já tem tudo pronto para criar o cluster de failover:

  1. Ligue-se a node-1 através do Ambiente de Trabalho Remoto. Inicie sessão com a sua conta de utilizador do domínio.
  2. Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell (administrador).
  3. Clique em Sim para confirmar o pedido de elevação.
  4. Crie um novo cluster:

    New-Cluster `
      -Name windows-fci `
      -Node node-1,node-2 `
      -NoStorage `
      -StaticAddress CLUSTER_ADDRESS
    

    Substitua CLUSTER_ADDRESS pelo endereço IP do cluster que criou anteriormente.

    O comando cria uma conta de computador windows-fci no seu domínio do Active Directory.

  5. Regresse à sessão do PowerShell em witness e conceda à conta do computador a autorização windows-fci para aceder à partilha de ficheiros:

    icacls C:\QWitness\ /grant 'windows-fci$:(OI)(CI)(M)'
    Grant-SmbShareAccess `
      -Name QWitness `
      -AccountName 'windows-fci$' `
      -AccessRight Full `
      -Force
    
  6. Regresse à sessão do PowerShell em node-1 e configure o cluster para usar a partilha de ficheiros em witness como um quorum de cluster:

    Set-ClusterQuorum -FileShareWitness \\witness\QWitness
    
  7. Verifique se o cluster foi criado com êxito:

    Test-Cluster
    

    Pode ver alguns avisos que podem ser ignorados com segurança:

    WARNING: System Configuration - Validate All Drivers Signed: The test reported some warnings..
    WARNING: Network - Validate Network Communication: The test reported some warnings..
    WARNING:
    Test Result:
    HadUnselectedTests, ClusterConditionallyApproved
    Testing has completed for the tests you selected. You should review the warnings in the Report.  A cluster solution is
    supported by Microsoft only if you run all cluster validation tests, and all tests succeed (with or without warnings).
    

    Também pode iniciar o snap-in MMC do Gestor de clusters de failover para rever o estado do cluster executando cluadmin.msc.

  8. Se estiver a usar o AD gerido, adicione a conta do computador usada pelo WSFC ao grupo Contas de associação ao domínio do serviço na nuvem para que possa associar computadores ao domínio:

    Install-WindowsFeature RSAT-ADDS
    Add-ADGroupMember `
      -Identity "Cloud Service Domain Join Accounts" `
      -Members windows-fci$
    

Ativar o Storage Spaces Direct

Agora, ativa o S2D e cria um volume partilhado do cluster que combina os três discos persistentes que criou anteriormente:

  1. Regresse à sessão do PowerShell em node-1.
  2. Ativar S2D:

    Enable-ClusterStorageSpacesDirect
    

    Opcionalmente, se quiser um melhor desempenho do disco, pode adicionar SSDs locais aos nós S2D, além dos discos persistentes SSD padrão. Os SSDs locais podem servir como a camada de colocação em cache do S2D. Faça com que o número de unidades de capacidade (no nosso caso, discos persistentes SSD) seja um múltiplo do número de SSDs locais. Em alternativa, execute o seguinte comando para ativar o S2D com o armazenamento em cache:

    Enable-ClusterStorageSpacesDirect -CacheDeviceModel "EphemeralDisk"
    

    Aceite a predefinição quando lhe for pedido que confirme. Pode ver alguns avisos que podem ser ignorados com segurança:

    WARNING: 2021/04/08-13:12:26.159 Node node-1: No disks found to be used for cache
    WARNING: 2021/04/08-13:12:26.159 Node node-2: No disks found to be used for cache
    
  3. Opcionalmente, defina a cache na memória do volume partilhado de cluster (CSV) para 2048 MB para um melhor débito de leitura:

    (Get-Cluster).BlockCacheSize = 2048
    
  4. Crie um novo volume que use as versões de volume partilhado do cluster do ReFS e um tamanho do cluster de 64 KB:

    New-Volume `
      -StoragePoolFriendlyName S2D* `
      -FriendlyName FciVolume `
      -FileSystem CSVFS_ReFS `
      -UseMaximumSize `
      -AllocationUnitSize 65536
    

Testar a comutação por falha do conjunto de armazenamento

Opcionalmente, pode testar se a comutação por falha do conjunto de armazenamento funciona corretamente:

  1. Ligue-se a node-2 através do Ambiente de Trabalho Remoto. Inicie sessão com a sua conta de utilizador do domínio.
  2. Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e selecione Executar
  3. Introduza cluadmin.msc e selecione OK.
  4. No painel de navegação do lado esquerdo, navegue para Gestor de clusters de failover > windows-fci > Armazenamento > Pools.

    Deve ver um conjunto denominado Cluster Pool 1 com o nó proprietário definido como node-1.

  5. Regresse ao Cloud Shell e reponha a VM node-1 para simular uma comutação por falha:

    gcloud compute instances reset node-1 --zone $REGION-a
    
  6. Regresse ao Gestor de clusters de comutação por falha em node-2.

  7. Observe o estado do conjunto de armazenamento premindo repetidamente F5 para atualizar a vista.

    Após cerca de 30 segundos, o nó proprietário deve mudar automaticamente para node-2.

Remova a instalação predefinida do SQL Server

Agora, remova a instalação predefinida do SQL Server dos dois nós e substitua-a por uma nova configuração de FCI.

Para cada um dos dois nós do WSFC, node-1 e node-2, siga estes passos:

  1. Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell (administrador).
  2. Clique em Sim para confirmar o pedido de elevação.
  3. Remova a instância predefinida do SQL Server:

    C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
    
  4. Remova o controlador OLE da Microsoft:

    Get-Package -Name "Microsoft OLE*" | Uninstall-Package -Force
    
  5. Remova o controlador ODBC da Microsoft:

    Get-Package -Name "Microsoft ODBC*" | Uninstall-Package -Force
    
  6. Reinicie o computador:

    Restart-Computer
    
  7. Aguarde aproximadamente 1 minuto para que o reinício seja concluído.

Instale o FCI do SQL Server

Antes de instalar a nova configuração de FCI, verifique se o node-1 é o nó ativo no cluster:

  1. Volte a ligar-se ao node-1 usando o ambiente de trabalho remoto e inicie sessão com o utilizador do seu domínio.
  2. Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e selecione Executar
  3. Introduza cluadmin.msc e selecione OK.
  4. No painel da janela do lado esquerdo, navegue para Gestor de clusters de failover > windows-fci.

    Verifique se o servidor anfitrião atual está definido como node-1.

    Se o servidor anfitrião atual estiver definido como node-2, clique com o botão direito do rato em windows-fci no painel da janela do lado esquerdo e selecione Mais ações > Mover recursos do cluster principal > Selecionar nó… > node-1 e clique em OK.

  5. No painel da janela do lado esquerdo, navegue para Failover Cluster Manager > windows-fci > Storage > Pools.

    Verifique se o nó proprietário de Cluster Pool 1 está definido como node-1.

    Se o nó proprietário estiver definido como node-2, clique com o botão direito do rato no conjunto, selecione Mover > Selecionar nó > node-1 e clique em OK.

Agora, cria uma nova instalação do cluster de failover do SQL Server em node-1:

  1. Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell (administrador).
  2. Clique em Sim para confirmar o pedido de elevação.
  3. Crie uma conta de utilizador do domínio para o SQL Server e o agente SQL e atribua uma palavra-passe:

    Active Directory

    $Credential = Get-Credential -UserName sql_server -Message 'Enter password'
    New-ADUser `
      -Name "sql_server" `
      -Description "SQL Agent and SQL Admin account." `
      -AccountPassword $Credential.Password `
      -Enabled $true -PasswordNeverExpires $true
    

    Microsoft AD gerido

    $Credential = Get-Credential -UserName sql_server -Message 'Enter password'
    New-ADUser `
      -Name "sql_server" `
      -Description "SQL Agent and SQL Admin account." `
      -AccountPassword $Credential.Password `
      -Enabled $true -PasswordNeverExpires $true `
      -Path "OU=Cloud,DOMAIN"
    

    Substitua DOMAIN pelo nome distinto do seu domínio, por exemplo, DC=example,DC=org.

  4. Inicie a configuração do SQL Server:

    & c:\sql_server_install\setup.exe
    
  5. No menu do lado esquerdo, selecione Instalação.

  6. Selecione Nova instalação do cluster de comutação por falha do SQL Server

  7. Na página Microsoft Update, selecione Seguinte para iniciar a instalação.

  8. Na página Instalar regras de cluster de failover, é apresentado um aviso Avisos de validação de cluster do MSCS e Firewall do Windows. Pode ignorar estes avisos e selecionar Seguinte.

  9. Na página Chave do produto, mantenha as predefinições e selecione Seguinte.

  10. Na página Termos de licença, reveja os termos e, se os aceitar, selecione Seguinte.

  11. Na página Seleção de funcionalidades, selecione Serviços do motor de base de dados e, de seguida, selecione Seguinte.

  12. Na página Configuração da instância, introduza sql para o nome da rede e a instância com nome, e selecione Seguinte.

  13. Na página Grupo de recursos do cluster, mantenha as predefinições e selecione Seguinte.

  14. Na página Seleção de discos do cluster, ative Disco virtual do cluster (FciVolume) e desative todos os outros discos. Selecione Seguinte.

  15. Na página Configuração da rede de clusters, configure as seguintes definições e, em seguida, selecione Seguinte:

    • DHCP: clear
    • Endereço IP: introduza o endereço IP do balanceador de carga interno.
  16. Na página Configuração do servidor, configure as seguintes definições para o SQL Server Agent e o SQL Server Database Engine:

    • Nome da conta: DOMAIN\sql_server, onde DOMAIN é o nome NetBIOS do seu domínio do Active Directory
    • Palavra-passe: introduza a palavra-passe que criou anteriormente
  17. Selecione o separador Ordenação e selecione a ordenação que quer usar. Em seguida, clique em Seguinte.

  18. Na página Configuração do motor de base de dados, selecione Adicionar utilizador atual para designar o utilizador atual como administrador do SQL Server. Em seguida, selecione Seguinte.

  19. Na página Pronto para instalar, reveja as definições e, de seguida, selecione Instalar.

  20. Após a conclusão da instalação, selecione Fechar.

O seu domínio do Active Directory contém agora uma conta de computador sql que representa a instância do SQL Server e uma entrada DNS correspondente que aponta para o endereço IP do equilibrador de carga interno.

Agora, adicione node-2 ao cluster de comutação por falha do SQL Server:

  1. Estabeleça ligação a node-2 através do Ambiente de Trabalho Remoto e inicie sessão com o utilizador do seu domínio.
  2. Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell (administrador).
  3. Clique em Sim para confirmar o pedido de elevação.
  4. Inicie a configuração do SQL Server:

    & c:\sql_server_install\setup.exe
    
  5. No menu do lado esquerdo, selecione Instalação.

  6. Selecione Adicionar nó a um cluster de failover do SQL Server.

  7. Siga as instruções do assistente de instalação e aceite as definições predefinidas até aceder à página Contas de serviço.

  8. Na página Contas de serviço, introduza a palavra-passe que criou anteriormente para o SQL Server Agent e o SQL Server Database Engine. Em seguida, selecione Seguinte.

  9. Na página Pronto para instalar, reveja as definições e, de seguida, selecione Instalar.

  10. Após a conclusão da instalação, selecione Fechar.

Configure verificações de funcionamento

Como passo final, configure o cluster para expor um ponto final de verificação do estado que pode ser usado por um equilibrador de carga interno:

  1. Regresse à sessão do PowerShell em node-2
  2. Inicialize uma variável com o endereço IP do balanceador de carga.

    $LoadBalancerIP = 'IP_ADDRESS'
    

    Substitua IP_ADDRESS pelo endereço IP do endereço wsfc que reservou anteriormente.

  3. Configure o cluster de comutação por falha para responder ao serviço de verificação de funcionamento:

    $SqlGroup = Get-ClusterGroup |
      Where-Object {$_.Name.StartsWith("SQL Server")}
    $SqlIpAddress = Get-ClusterResource |
      Where-Object {$_.Name.StartsWith("SQL IP Address")}
    
    $SqlIpAddress | Set-ClusterParameter -Multiple @{
     'Address'=$LoadBalancerIP;
     'ProbePort'= 59997;
     'SubnetMask'='255.255.255.255';
     'Network'= (Get-ClusterNetwork).Name;
     'EnableDhcp'=0; }
    
  4. Reinicie o recurso de cluster:

    $SqlIpAddress | Stop-ClusterResource
    $SqlIpAddress | Start-ClusterResource
    
  5. Reinicie o grupo de clusters:

    $SqlGroup | Stop-ClusterGroup
    $SqlGroup | Start-ClusterGroup
    

Crie um balanceador de carga interno

Para fornecer um único ponto final para clientes do SQL Server, agora implementa um equilibrador de carga interno. O balanceador de carga usa uma verificação do estado que garante que o tráfego é direcionado para o nó ativo do WSFC.

  1. Regresse à sua sessão do Cloud Shell existente.
  2. Crie dois grupos de instâncias não geridos, um por zona, e adicione os dois nós aos grupos:

    gcloud compute instance-groups unmanaged create wsfc-group-1 --zone $REGION-a
    gcloud compute instance-groups unmanaged add-instances wsfc-group-1 --zone $REGION-a \
      --instances node-1
    
    gcloud compute instance-groups unmanaged create wsfc-group-2 --zone $REGION-b
    gcloud compute instance-groups unmanaged add-instances wsfc-group-2 --zone $REGION-b \
      --instances node-2
    
  3. Crie uma verificação de funcionamento que o balanceador de carga possa usar para determinar qual é o nó ativo.

    gcloud compute health-checks create tcp wsfc-healthcheck \
      --check-interval="2s" \
      --healthy-threshold=1 \
      --unhealthy-threshold=2 \
      --port=59997 \
      --timeout="1s"
    

    As sondas de verificação do estado de funcionamento usam a porta 59997, que configurou anteriormente como ProbePort para o recurso de endereço IP do SQL Server.

  4. Crie um serviço de back-end e adicione os dois grupos de instâncias:

    gcloud compute backend-services create wsfc-backend \
      --load-balancing-scheme internal \
      --region $(gcloud config get-value compute/region) \
      --health-checks wsfc-healthcheck \
      --protocol tcp
    
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group-1 \
      --instance-group-zone $REGION-a \
      --region $REGION
    
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group-2 \
      --instance-group-zone $REGION-b \
      --region $REGION
    
  5. Crie o balanceador de carga interno:

    gcloud compute forwarding-rules create wsfc-sql \
      --load-balancing-scheme internal \
      --address $LOADBALANCER_ADDRESS \
      --ports 1433 \
      --network $VPC_NAME \
      --subnet $SUBNET_NAME \
      --region $REGION \
      --backend-service wsfc-backend
    

Testar o cluster de comutação por falha

Concluiu a instalação do cluster de ativação pós-falha, mas ainda tem de testar se o cluster funciona corretamente.

Prepare um cliente

Crie uma nova instância de VM que pode usar para se ligar ao cluster de failover:

  1. Regresse à sua sessão do Cloud Shell existente.
  2. Criar uma nova instância de VM:

    gcloud compute instances create sqlclient \
      --zone $REGION-a \
      --machine-type n2-standard-2 \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2019-win-2022 \
      --image-project windows-sql-cloud \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd
    
  3. Monitorize o processo de inicialização da VM vendo a respetiva saída da porta de série:

    gcloud compute instances tail-serial-port-output sqlclient
    

    Aguarde alguns minutos até ver o resultado Instance setup finished e, em seguida, prima Ctrl+C. Neste momento, a instância de VM está pronta a ser usada.

  4. Crie um nome de utilizador e uma palavra-passe para a instância de VM

  5. Estabeleça ligação à VM através do Ambiente de Trabalho Remoto e inicie sessão com o nome de utilizador e a palavra-passe criados no passo anterior.

  6. Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell (administrador).

  7. Clique em Sim para confirmar o pedido de elevação.

  8. Associe o computador ao seu domínio do Active Directory:

    Add-Computer -Domain DOMAIN
    

    Substitua DOMAIN pelo nome DNS do seu domínio do Active Directory.

  9. Reinicie o computador:

    Restart-Computer
    

    Aguarde aproximadamente 1 minuto para que o reinício seja concluído.

Execute o teste

Use a VM sqlclient para testar se consegue estabelecer ligação ao cluster de comutação por falha e para verificar se a comutação por falha funciona corretamente:

  1. Estabeleça ligação a sqlclient através do Ambiente de Trabalho Remoto e inicie sessão com o utilizador do seu domínio.
  2. Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell.
  3. Ligue-se ao cluster do SQL Server através de TCP/IP e do nome DNS sql e consulte a tabela dm_os_cluster_nodes:

    & "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" `
       -S tcp:sql -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    

    O resultado deve ter o seguinte aspeto:

    NodeName                       status      status_description is_current_owner
    ------------------------------ ----------- ------------------ ----------------
    NODE-1                                   0 up                                1
    NODE-2                                   0 up                                0
    
    (2 rows affected)
    

    Tenha em atenção que node-1 é o proprietário atual do recurso de cluster de comutação por falha do SQL Server.

  4. Regresse ao Cloud Shell e desative a VM node-1 para testar o cenário de comutação por falha.

    gcloud compute instances stop node-1 --zone $REGION-a
    
  5. Repetir a consulta:

    & "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" `
       -S tcp:sql -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    

    O resultado deve ter agora o seguinte aspeto:

    NodeName                       status      status_description is_current_owner
    ------------------------------ ----------- ------------------ ----------------
    NODE-1                                   1 down                              0
    NODE-2                                   0 up                                1
    
    (2 rows affected)
    

    Repare que, apesar da perda de node-1, a consulta é bem-sucedida e mostra que node-2 é agora o proprietário atual do cluster de comutação por falha.

Limitações

  • O S2D só é suportado para o Windows Server 2016 e superior.
  • Com o S2D, cada disco contém apenas uma vista parcial dos dados gerais. Por isso, não basta tirar uma captura de um disco persistente para fazer uma cópia de segurança dos seus dados. Em alternativa, use a cópia de segurança SQL nativa.

Limpar

Depois de concluir o tutorial, pode limpar os recursos que criou para que deixem de usar a quota e incorrer em custos. As secções seguintes descrevem como eliminar ou desativar estes recursos.

Eliminar o projeto

A forma mais fácil de eliminar a faturação é eliminar o projeto que criou para o tutorial.

Para eliminar o projeto:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

O que se segue?