Como configurar uma instância de cluster de failover do SQL Server que usa discos permanentes no modo de vários gravadores


As instâncias de cluster de failover sempre ativadas (FCI) do Microsoft SQL Server permitem que você execute uma única instância do SQL Server em vários nós do cluster de failover do Windows Server (WSFC). A qualquer momento, um dos nós do cluster hospeda ativamente a instância do SQL. No caso de falha, o WSFC transfere automaticamente a propriedade dos recursos da instância para outro nó.

O FCI do SQL Server requer a localização dos dados em um armazenamento compartilhado para que possa ser acessado em todos os nós do WSFC. Neste guia, descrevemos como implantar uma instância de cluster de failover do SQL Server 2022 e usar discos permanentes no modo de vários gravadores como armazenamento compartilhado.

Em um ambiente local, é possível permitir que o WSFC execute avisos de ARP se um failover ocorrer para notificar o equipamento de rede sobre uma mudança de endereço IP. No entanto, o Google Cloud ignora os anúncios de ARP. Consequentemente, você precisa implementar uma das duas opções a seguir:

Arquitetura

Arquitetura

O artigo pressupõe que você já implantou o Active Directory no Google Cloud e que tem conhecimentos básicos de SQL Server, Active Directory e Compute Engine.

Objetivos

  • Implante um WSFC com duas instâncias de VM do SQL Server e uma terceira instância de VM que funciona como uma testemunha de compartilhamento de arquivos.
  • Implantar uma FCI do SQL Server no WSFC.
  • Configure um balanceador de carga ou um nome de rede distribuído (DNN) para rotear o tráfego ao seu grupo de disponibilidade com o SQL Server.
  • Verifique se o cluster está funcionando simulando um failover.

Custos

Neste tutorial, há componentes faturáveis do Google Cloud, entre eles:

Use a calculadora de preços para gerar uma estimativa de custo com base na projeção de uso.

Antes de começar

Para concluir este guia, você precisa do seguinte:

Verifique as restrições atuais de discos permanentes no modo de vários gravadores e selecione uma zona em que os discos permanentes disponíveis no modo de vários gravadores estejam disponíveis.

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

  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.

    Go to project selector

  3. Make sure 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.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

Ao concluir este tutorial, exclua os recursos criados para evitar o faturamento contínuo. Para mais informações, consulte Como fazer a limpeza.

Como preparar o projeto e a rede

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

  1. No Console do Google Cloud Platform, abra o Cloud Shell clicando no botão Ativar o Cloud Shell Ative o Cloud Shell..

    Acesse o Console do Google Cloud

  2. Inicialize as seguintes variáveis:

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    

    Em que:

    • VPC_NAME: nome da VPC.
    • SUBNET_NAME: nome da sub-rede.
  3. Defina o ID do projeto padrão:

    gcloud config set project PROJECT_ID
    

    Substitua PROJECT_ID pelo ID do projeto do Google Cloud.

  4. Defina a zona padrão:

    gcloud config set compute/zone ZONE
    

    Substitua ZONE pelo ID da zona em que você quer implantar.

Crie regras de firewall

Para permitir que os clientes se conectem ao SQL Server, permita a comunicação entre os nós WSFC e que o balanceador de carga realize verificações de integridade, você precisa criar várias regras de firewall. Para simplificar a criação dessas regras de firewall, use tags de rede:

  • Os dois nós WSFC são anotados com a tag wsfc-node.
  • Todos os servidores (incluindo a testemunha) são anotados com a tag wsfc.

Crie regras de firewall que usem estas tags de rede:

  1. Volte para a sessão atual do Cloud Shell.
  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 integridade dos intervalos de IP das sondas do Google Cloud: (não é necessário com uma configuração de DNN)

    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, implante duas instâncias de VM para o cluster de failover. A qualquer momento, apenas uma dessas VMs serve como o nó FCI ativo enquanto o outro nó atua como o nó de failover. As duas instâncias de VM precisam:

  • estar na mesma zona para acessar os mesmos discos permanentes;
  • ter o cluster de failover do Windows Server e o SQL Server instalados.
  • ativar o suporte WSFC do Compute Engine;

usar uma imagem premium do SQL Server que tenha o SQL Server 2022 pré-instalado.

Para dar um voto de desempate e conquistar um quórum para o cenário de failover, você implanta uma terceira VM que serve como uma testemunha de compartilhamento de arquivos.

  1. Volte para a sessão atual do Cloud Shell.
  2. Crie uma política de posição de propagação que distribua os nós WSFC por toda a infraestrutura de data center subjacente para que eles não compartilhem o mesmo host ou sistema de energia:

    ZONE=$(gcloud config get-value compute/zone)
    gcloud compute resource-policies create group-placement spread-placement \
      --availability-domain-count 2 \
      --region ${ZONE::-2}
    
  3. Crie um script de especialização para os nós WSFC. O script instala o recurso necessário do Windows 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
    
  4. Crie as instâncias de VM e ative o agente do clustering de failover do Windows Server nos nós WSFC definindo a chave de metadados enable-wsfc como true:

    MACHINE_TYPE=n2-standard-8
    
    gcloud compute instances create node-1 \
      --resource-policies spread-placement \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2022-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" \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create node-2 \
      --resource-policies spread-placement \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2022-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" \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create "witness" \
      --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"
    
  5. Para mesclar as três instâncias de VM ao Active Directory, faça o seguinte para cada uma das três instâncias de VM:

    1. Monitore o processo de inicialização da VM visualizando a saída da porta serial:

      gcloud compute instances tail-serial-port-output NAME
      

      Substitua NAME pelo nome da instância de VM.

      Aguarde cerca de três minutos até conferir a saída Instance setup finished e pressione Ctrl + C. Nesse momento, a instância de VM está pronta para ser usada.

    2. Crie um nome de usuário e uma senha para a instância de VM.

    3. Conecte-se à VM usando a Área de trabalho remota e faça login usando o nome de usuário e a senha criados na etapa anterior.

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

    5. Confirme a elevação do prompt clicando em Sim.

    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 um minuto para que a reinicialização seja concluída.

Criar discos permanentes no modo de vários gravadores

Agora, crie três discos permanentes no modo de vários gravadores e anexe cada um deles aos dois nós WSFC.

  1. Volte para a sessão atual do Cloud Shell.
  2. Crie três discos permanentes compartilhados:

    PD_SIZE=50
    
    gcloud beta compute disks create datadisk-1 \
      --size $PD_SIZE \
      --type pd-ssd \
      --multi-writer \
      --zone $(gcloud config get-value compute/zone)
    gcloud beta compute disks create datadisk-2 \
      --size $PD_SIZE \
      --type pd-ssd \
      --multi-writer \
      --zone $(gcloud config get-value compute/zone)
    gcloud beta compute disks create datadisk-3 \
      --size $PD_SIZE \
      --type pd-ssd \
      --multi-writer \
      --zone $(gcloud config get-value compute/zone)
    
  3. Anexe os discos a node-1:

    gcloud compute instances attach-disk node-1 --disk datadisk-1
    gcloud compute instances attach-disk node-1 --disk datadisk-2
    gcloud compute instances attach-disk node-1 --disk datadisk-3
    
  4. Anexe os discos a node-2:

    gcloud compute instances attach-disk node-2 --disk datadisk-1
    gcloud compute instances attach-disk node-2 --disk datadisk-2
    gcloud compute instances attach-disk node-2 --disk datadisk-3
    

Reservar endereços IP do cluster

Agora você reserva dois endereços IP estáticos na sua VPC. Um endereço IP é usado como o endereço IP do cluster WSFC, o outro é usado pelo balanceador de carga interno.

  1. Reserve um IP estático para o balanceador de carga interno e capture o endereço em uma nova variável de ambiente chamada LOADBALANCER_ADDRESS:

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

    Anote o endereço IP, você precisará dele mais tarde.

  2. Reserve outro endereço IP estático que você use como IP do cluster: (não necessário com uma configuração de DNN)

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

    Anote o endereço IP, você precisará dele mais tarde.

Agora o projeto e a VPC estão prontos para a implantação do WSFC e do SQL Server.

Criar um compartilhamento de arquivos da testemunha

Para preparar o witness que serve como uma testemunha de compartilhamento de arquivos, crie um compartilhamento de arquivos e conceda a você e aos dois nós WSFC acesso ao compartilhamento de arquivos:

  1. Conecte-se a witness usando a Área de trabalho remota. Faça login com a conta de usuário do domínio.
  2. Clique com o botão direito do mouse no botão Iniciar (ou pressione Win+X) e clique em Windows PowerShell (administrador).
  3. Confirme a elevação do prompt clicando em Sim.
  4. Crie a pasta da testemunha e compartilhe-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$
    

Como implantar o cluster de failover

Use as instâncias de VM para implantar um WSFC e SQL Server.

Implantar o WSFC

Agora você está pronto para criar o cluster de failove.

  1. Conecte-se a node-1 usando a Área de trabalho remota. Faça login com a conta de usuário do domínio.
  2. Clique com o botão direito do mouse no botão Iniciar (ou pressione Win+X) e clique em Windows PowerShell (administrador).
  3. Confirme a elevação do prompt clicando em Sim.
  4. Crie um novo cluster:

    • Para a configuração do balanceador de carga
    New-Cluster `
      -Name sql-cluster `
      -Node node-1,node-2 `
      -NoStorage `
      -StaticAddress CLUSTER_ADDRESS
    

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

    • Para configuração de DNN
    New-Cluster `
      -Name sql-cluster `
      -Node node-1,node-2 `
      -NoStorage `
      -ManagementPointNetworkType Distributed
    
  5. Retorne à sessão do PowerShell em witness e conceda ao objeto de computador virtual do cluster a permissão de acesso ao compartilhamento de arquivos:

    icacls C:\QWitness\ /grant 'sql-cluster$:(OI)(CI)(M)'
    Grant-SmbShareAccess `
      -Name QWitness `
      -AccountName 'sql-cluster$' `
      -AccessRight Full `
      -Force
    
  6. Retorne à sessão do PowerShell em node-1 e configure o cluster para usar o compartilhamento de arquivos em witness como um quórum de cluster:

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

    Test-Cluster
    

    Talvez sejam exibidos 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 é possível executar o snap-in de MMC do failover para analisar a integridade do cluster executando cluadmin.msc.

  8. Se você estiver usando o AD gerenciado, adicione a conta de computador usada pelo WSFC ao grupo de Contas mescladas de domínio do Cloud Service para que ela possa juntar computadores ao domínio:

    Add-ADGroupMember `
      -Identity "Cloud Service Domain Join Accounts" `
      -Members sql-cluster$
    

Criar um pool de armazenamento

Agora, crie um pool de armazenamento que combine os três discos permanentes criados anteriormente e use o pool de armazenamento para criar um volume compartilhado do cluster:

  1. Volte para a sessão do PowerShell em node-1.
  2. Crie um novo pool de armazenamento que use os três discos permanentes:

    $NodeName = [System.Net.Dns]::GetHostName()
    
    $ClusterDisks = Get-PhysicalDisk -CanPool $True |
      Where-Object { ($_ |
        Get-PhysicalDiskStorageNodeView |
        Select-Object -Property StorageNodeObjectId) -like ('*' + $NodeName + '*') }
    
    $Pool = New-StoragePool `
      -StorageSubsystemFriendlyName 'Clustered*' `
      -FriendlyName FciPool `
      -PhysicalDisks $ClusterDisks `
      -ResiliencySettingNameDefault Simple `
      -Verbose
    
  3. No pool de armazenamento, crie um novo volume que use as versões de volume compartilhada do cluster do ReFS e um tamanho de cluster de 64 KB:

    $Pool | New-Volume `
      -FriendlyName FciVolume `
      -FileSystem CSVFS_ReFS `
      -Size 100GB `
      -AllocationUnitSize 65536
    

    O volume aparece automaticamente em node-2, já que os discos permanentes subjacentes são anexados às duas instâncias de VM.

  4. Abra o snap-in MMC do Gerenciado de cluster de failover:

    cluadmin.msc
    
  5. No painel da janela à esquerda, acesse Failover Cluster Manager > sql-cluster > Storage > Disks.

  6. Clique com o botão direito do mouse em Disco virtual de cluster (FciVolume) e selecione Remover dos volumes compartilhados do cluster.

  7. Selecione Disco virtual de cluster (FciVolume).

  8. Na guia Volumes, na parte inferior, clique com o botão direito do mouse e selecione Alterar letra da unidade.

  9. Selecione a letra da unidade D e clique em OK.

Como testar o failover do pool de armazenamento

Como alternativa, é possível testar se o failover do pool de armazenamento funciona corretamente:

  1. Conecte-se a node-2 usando a Área de trabalho remota. Faça login com a conta de usuário do domínio.
  2. Clique com o botão direito do mouse no botão Iniciar (ou pressione Win+X) e selecione Executar
  3. Digite cluadmin.msc e selecione OK.
  4. No painel da janela à esquerda, acesse Failover Cluster Manager > sql-cluster > Storage > Pools.

    Você verá um pool chamado Cluster Pool 1 com o nó do proprietário definido como node-1.

  5. Volte ao Cloud Shell e redefina a VM node-1 para simular um failover:

    gcloud compute instances reset node-1
    
  6. Volte para o Failover Cluster Manager em node-2.

  7. Observe o status do pool de armazenamento pressionando repetidamente F5 para atualizar a visualização.

    Depois de cerca de 30 segundos, o nó do proprietário deve alternar automaticamente para node-2.

Remover a instalação padrão do SQL Server

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

Para cada um dos dois nós WSFC, node-1 e node-2, execute as seguintes etapas:

  1. Clique com o botão direito do mouse no botão Iniciar (ou pressione Win+X) e clique em Windows PowerShell (administrador).
  2. Confirme a elevação do prompt clicando em Sim.
  3. Remova a instância do SQL Server padrão:

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

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

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

    Restart-Computer
    
  7. Aguarde aproximadamente um minuto para que a reinicialização seja concluída.

Instalar a FCI do SQL Server

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

  1. Reconecte-se ao node-1 usando a área de trabalho remota e faça login usando o usuário do domínio.
  2. Clique com o botão direito do mouse no botão Iniciar (ou pressione Win+X) e selecione Executar
  3. Digite cluadmin.msc e selecione OK.
  4. No painel da janela à esquerda, acesse Failover Cluster Manager > sql-cluster.

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

    Se o servidor de host atual estiver definido como node-2, clique com o botão direito do mouse em sql-cluster no painel da janela à esquerda e selecione More actions > Move core cluster resources > Select node… > node-1 e clique em OK.

  5. No painel da janela à esquerda, acesse Failover Cluster Manager > sql-cluster > Storage > Pools.

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

    Se o nó do proprietário estiver definido como node-2, clique com o botão direito do mouse no pool, selecione Move > Select Node > node-1 e clique em OK.

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

  1. Clique com o botão direito do mouse no botão Iniciar (ou pressione Win+X) e clique em Windows PowerShell (administrador).
  2. Confirme a elevação do prompt clicando em Sim.
  3. Crie uma conta de usuário de domínio para o servidor SQL e o agente SQL e atribua uma senha:

    $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
    
  4. Inicie a configuração do SQL Server:

    & c:\sql_server_install\setup.exe
    
  5. No menu à esquerda, selecione Installation.

  6. Selecione Nova instalação do cluster de failover do SQL Server.

  7. Na página Edição, marque Eu tenho somente uma licença do SQL Server e selecione Próxima.

  8. Na página Termos de licença, analise os termos e, se você aceitar, selecione Próxima.

  9. Na página Microsoft Update, selecione Próxima para iniciar a instalação.

  10. Na página Instalar regras de cluster de failover, você verá um aviso Avisos de verificação de cluster MSCS e Firewall do Windows. Ignore esses avisos e selecione Próxima.

  11. Na página Seleção de recurso, selecione Serviços do banco de dados e depois Próximo.

  12. Na página Instance Configuration, insira sql como o nome da rede e selecione Next.

  13. Na página Cluster Resource Group, mantenha os padrões e selecione Next.

  14. Na página Seleção de disco do cluster, selecione Disco virtual de cluster (FciVolume) e selecione Avançar.

  15. Na página Cluster Network Configuration, defina as configurações a seguir e selecione Next:

    • DHCP: claro
    • Endereço IP: insira o endereço IP do balanceador de carga interno.
  16. Na página Configuração do servidor, defina as configurações a seguir para o SQL Server Agent e o SQL Server Database Engine:

    • Nome da conta: DOMAIN\sql_server em que DOMAIN é o nome do NetBIOS do seu domínio do Active Directory
    • Senha: digite a senha que você criou anteriormente
  17. Selecione a guia Agrupamento e selecione o agrupamento que você quer usar. Depois clique em Next.

  18. Na página Configuração do mecanismo do banco de dados, selecione Adicionar usuário atual para designar o usuário atual como administrador do SQL Server. Depois, selecione Próxima.

  19. Na página Pronto para instalar, revise as configurações e selecione Instalar.

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

Agora adicione node-2 ao cluster de failover do SQL Server:

  1. Conecte-se ao node-2 usando a área de trabalho remota e faça login usando o usuário do domínio.
  2. Clique com o botão direito do mouse no botão Iniciar (ou pressione Win+X) e clique em Windows PowerShell (administrador).
  3. Confirme a elevação do prompt clicando em Sim.
  4. Inicie a configuração do SQL Server:

    & c:\sql_server_install\setup.exe
    
  5. No menu à esquerda, selecione Installation.

  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 configurações padrão até chegar à página Contas de serviço.

  8. Na página Contas de serviço, digite a senha que você criou anteriormente para o SQL Server Agent e o SQL Server Database Engine. Depois, selecione Próxima.

  9. Na página Pronto para instalar, revise as configurações e selecione Instalar.

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

Configurar verificações de integridade

A última etapa é configurar o cluster para expor um endpoint de verificação de integridade que possa ser usado por um balanceador de carga interno:

  1. Volte para a 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 wsfc que você reservou anteriormente.

  3. Configure o cluster de failover para responder ao serviço de verificação de integridade:

    $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 do cluster:

    $SqlIpAddress | Stop-ClusterResource
    $SqlIpAddress | Start-ClusterResource
    
  5. Reinicie o grupo do cluster:

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

criar um balanceador de carga interno

Agora, para fornecer um único endpoint para clientes do SQL Server, implante um balanceador de carga interno que use uma verificação de integridade que garanta que o tráfego seja direcionado ao nó ativo da WSFC

  1. Volte para a sessão atual do Cloud Shell.
  2. Crie um grupo de instâncias não gerenciadas e adicione os dois nós ao grupo:

    gcloud compute instance-groups unmanaged create wsfc-group
    gcloud compute instance-groups unmanaged add-instances wsfc-group --instances node-1,node-2
    
  3. Crie uma verificação de integridade 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"
    

    A verificação de integridade faz sondagem na porta 59997, que foi configurada anteriormente como ProbePort para o endereço IP do cluster do WSFC.

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

    gcloud compute backend-services create wsfc-backend \
      --load-balancing-scheme internal \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --health-checks wsfc-healthcheck \
      --protocol tcp
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group \
      --instance-group-zone $(gcloud config get-value compute/zone) \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev)
    
  5. Criar 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 $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --backend-service wsfc-backend
    

Configurar um recurso DNN e um nome DNN DNS

Semelhante ao balanceador de carga interno, o recurso DNN atua como um gateway único para clientes do SQL Server. Durante os failovers, o cluster roteia o tráfego para o nó FCI ativo do SQL Server sem problemas. Os clientes se conectam à FCI do SQL Server com o nome DNS.

  1. Volte para a sessão do PowerShell em node-1.
  2. Execute o script para criar o recurso DNN

      $DNNResourceName='fci-dnn'
      $DNN_DNSName='fcidnn'
    
      # create the DNN resource
      Add-ClusterResource -Name $DNNResourceName -ResourceType 'Distributed Network Name' -Group 'SQL Server (MSSQLSERVER)'
    
      # set the DNS name of the DNN resource
      Get-ClusterResource -Name $DNNResourceName | Set-ClusterParameter -Name DnsName -Value $DNN_DNSName
    
      # start the DNN resource
      Start-ClusterResource -Name $DNNResourceName
    
  3. Reinicie node-1 e node-2

Como testar o cluster de failover

Você concluiu a instalação do cluster de failover, mas ainda precisa testar se o cluster funciona corretamente.

Preparar um cliente

Crie uma nova instância de VM que possa ser usada para se conectar ao cluster de failover:

  1. Volte para a sessão atual do Cloud Shell.
  2. Crie uma nova instância de VM:

    gcloud compute instances create sqlclient \
      --machine-type n2-standard-2 \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2022-win-2022 \
      --image-project windows-sql-cloud \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd
    
  3. Monitore o processo de inicialização da VM visualizando a saída da porta serial:

    gcloud compute instances tail-serial-port-output sqlclient
    

    Aguarde cerca de três minutos até conferir a configuração da instância de saída concluída e pressione Ctrl+C. Nesse momento, a instância de VM está pronta para ser usada.

  4. Crie um nome de usuário e uma senha para a instância de VM.

  5. Conecte-se à VM usando a Área de trabalho remota e faça login usando o nome de usuário e a senha criados na etapa anterior.

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

  7. Confirme a elevação do prompt clicando em Sim.

  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 um minuto para que a reinicialização seja concluída.

Fazer o teste

Use a VM sqlclient para testar se é possível se conectar ao cluster de failover e verificar se o failover funciona corretamente:

  1. Conecte-se ao sqlclient usando a área de trabalho remota e faça login usando o usuário do domínio.
  2. Clique com o botão direito do mouse no botão Iniciar (ou pressione Win+X) e clique em Windows PowerShell.
  3. Conecte-se ao cluster do SQL Server usando o nome de rede sql e consulte a tabela dm_os_cluster_nodes:

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

    Substitua SQL_SERVER_NAME pelo sql para a configuração do balanceador de carga ou fcidnn para a configuração do DNN.

    O resultado será semelhante a este:

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

    node-1 é o proprietário atual do recurso de cluster de failover do SQL Server.

  4. Volte ao Cloud Shell e desative a VM node-1 para testar o cenário de failover.

    gcloud compute instances stop node-1
    
  5. Repita a consulta:

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

    Substitua SQL_SERVER_NAME pelo sql para a configuração do balanceador de carga ou fcidnn para a configuração do DNN.

    A resposta será semelhante a esta:

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

    Observe que, independentemente da perda do node-1, a consulta é bem-sucedida e mostra que o node-2 já é o proprietário atual do cluster de failover.

Limpeza

Depois de concluir o tutorial, você pode limpar os recursos que criou para que eles parem de usar a cota e gerar cobranças. Nas seções a seguir, você aprenderá a excluir e desativar esses recursos.

Excluir o projeto

O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.

Para excluir 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.

A seguir