Configurar uma instância de cluster de comutação por falha do SQL Server que usa discos de alta disponibilidade equilibrados do Hyperdisk no modo de gravação múltipla


As instâncias de cluster de comutação por falha do Microsoft SQL Server (FCI) são uma única instância do SQL Server implementada em vários nós do cluster de comutação por falha do Windows Server (WSFC). Em qualquer altura, 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 2022 e usar a elevada disponibilidade equilibrada do Hyperdisk no modo de vários escritores como armazenamento partilhado regional (multizonal).

Arquitetura

Arquitetura

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.
  • Configure um balanceador de carga ou um nome de rede distribuído (DNN) para encaminhar o tráfego para o seu grupo de disponibilidade com o SQL Server.
  • 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.

Certifique-se de que reviu as limitações dos volumes do Hyperdisk no modo de vários escritores e escolheu uma região onde a alta disponibilidade do Hyperdisk Balanced está disponível

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.

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 estado dos intervalos de IP dos Google Cloud testadores: (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, 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 ter:

Usar uma imagem premium do SQL Server com o SQL Server 2022 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 controlador de domínio e 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 e ative o agente de clustering de failover do Windows Server nos nós do WSFC definindo a chave de metadados enable-wsfc como true:

    MACHINE_TYPE=c3-standard-8
    REGION=$(gcloud config get-value compute/region)
    ZONE_1=$REGION-a
    ZONE_2=$REGION-b
    
    gcloud compute instances create node-1 \
      --zone $ZONE_1 \
      --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 hyperdisk-balanced \
      --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 \
      --zone $ZONE_2 \
      --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 hyperdisk-balanced \
      --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 n4-standard-2 \
      --subnet $SUBNET_NAME \
      --image-family=windows-2022 \
      --image-project=windows-cloud \
      --tags wsfc \
      --boot-disk-size 50 \
      --boot-disk-type hyperdisk-balanced \
      --zone $ZONE_1 \
      --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 cerca de 3 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.

Crie discos Hyperdisk Balanced de alta disponibilidade no modo de gravação múltipla

Agora, cria um disco de alta disponibilidade equilibrado do Hyperdisk no modo de gravação múltipla e anexa-o a ambos os nós do WSFC. Uma das vantagens do Hyperdisk é a capacidade de definir IOPS e débito para corresponder às necessidades da aplicação. Para mais informações, consulte o artigo Acerca da elevada disponibilidade equilibrada do Hyperdisk.

  1. Regresse à sua sessão do Cloud Shell existente.
  2. Crie um disco de alta disponibilidade equilibrado do Hyperdisk:

    SIZE=200
    
    gcloud compute disks create multiwriter-datadisk-1 \
      --size $SIZE \
      --provisioned-throughput 200 \
      --provisioned-iops 5000 \
      --access-mode READ_WRITE_MANY \
      --type hyperdisk-balanced-high-availability \
      --replica-zones $ZONE_1,$ZONE_2
    
  3. Anexe o disco a node-1:

    gcloud compute instances attach-disk node-1 \
      --disk multiwriter-datadisk-1 \
      --zone $ZONE_1 \
      --disk-scope=regional
    
  4. Anexe o disco a node-2:

    gcloud compute instances attach-disk node-2 \
      --disk multiwriter-datadisk-1 \
      --zone $ZONE_2 \
      --disk-scope=regional
    

Reserve endereços IP do cluster

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

  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 \
      --region $REGION \
      --subnet $SUBNET_NAME
    
    LOADBALANCER_ADDRESS=$(gcloud compute addresses describe wsfc \
      --region $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: (não é necessário com uma configuração de DNN)

    gcloud compute addresses create wsfc-cluster \
      --subnet $SUBNET_NAME \
      --region $REGION && \
    CLUSTER_ADDRESS=$(gcloud compute addresses describe wsfc-cluster \
      --region $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
    
    New-SmbShare `
    -Name QWitness `
    -Path 'C:\QWitness' `
    -Description 'SQL File Share Witness' `
    -FullAccess  $env:username,node-1$,node-2$
    
    Grant-SmbShareAccess -Name 'QWitness' -AccountName 'node-1$' -AccessRight Full -Force
    Grant-SmbShareAccess -Name 'QWitness' -AccountName 'node-2$' -AccessRight Full -Force
    

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:

    • 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 criou anteriormente.

    • Para a configuração de DNN
    New-Cluster `
      -Name sql-cluster `
      -Node node-1,node-2 `
      -NoStorage `
      -ManagementPointNetworkType Distributed
    
  5. Regresse à sessão do PowerShell em witness e conceda ao objeto de computador virtual do cluster autorização para aceder à partilha de ficheiros:

    icacls C:\QWitness\ /grant 'sql-cluster$:(OI)(CI)(M)'
    Grant-SmbShareAccess `
      -Name QWitness `
      -AccountName 'sql-cluster$' `
      -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:

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

Adicione um disco de cluster

Agora, inicialize o disco Hyperdisk Balanced de alta disponibilidade partilhado que criou anteriormente e adicione-o ao cluster:

  1. Regresse à sessão do PowerShell em node-1.
  2. Inicialize o disco de alta disponibilidade equilibrado do Hyperdisk:

    $NodeName = [System.Net.Dns]::GetHostName()
    
    $ClusterDisks = Get-PhysicalDisk -CanPool $True |
      Where-Object { ($_ |
        Get-PhysicalDiskStorageNodeView |
        Select-Object -Property StorageNodeObjectId) -like ('*' + $NodeName + '*') }
    Initialize-Disk -Number $ClusterDisks[0].DeviceId
    
  3. No disco, crie uma nova partição que use o sistema de ficheiros NTFS e formate o disco com um tamanho de bloco de 64 KB:

    New-Partition -DiskNumber $ClusterDisks[0].DeviceId `
        -UseMaximumSize  -DriveLetter D | Format-Volume `
        -FileSystem NTFS -newfilesystemlabel DataDisk -AllocationUnitSize 65536
    
  4. Adicione o disco ao cluster:

    Get-ClusterAvailableDisk | Add-ClusterDisk
    

    O disco é apresentado automaticamente no node-2, uma vez que o disco subjacente Hyperdisk Balanced de alta disponibilidade está associado a ambas as instâncias de VM.

  5. Abra o snap-in MMC Failover Cluster Manager:

    cluadmin.msc
    

Testar a comutação por falha do disco

Opcionalmente, pode testar se a comutação em caso de falha do disco 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 esquerdo, navegue para Gestor de clusters de failover > sql-cluster > Armazenamento > Discos.

    Deve ver um disco denominado Cluster Disk 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
    
  6. Regresse ao Gestor de clusters de comutação por falha em node-2.

  7. Observe o estado do disco 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 através do Ambiente de Trabalho Remoto e inicie sessão com o 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 da janela do lado esquerdo, navegue para Failover Cluster Manager > sql-cluster.

    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 sql-cluster 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 > sql-cluster > Storage > Disks.

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

    Se o nó proprietário estiver definido como node-2, clique em Mover armazenamento disponível > Selecionar nó... > node-1 no menu Ações do lado direito 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:

    $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 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 Edição, selecione Só tenho uma licença do SQL Server e selecione Seguinte.

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

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

  10. 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.

  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 como nome da rede e selecione Seguinte.

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

  14. Na página Cluster Disk Selection, selecione Cluster Disk 1 e, de seguida, Next.

  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.

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 um grupo de instâncias não gerido e adicione os dois nós ao grupo:

    gcloud compute instance-groups unmanaged create wsfc-group-1 \
    --zone $ZONE_1
    gcloud compute instance-groups unmanaged add-instances wsfc-group-1 \
    --zone $ZONE_1 \
    --instances node-1
    
    gcloud compute instance-groups unmanaged create wsfc-group-2 \
    --zone $ZONE_2
    gcloud compute instance-groups unmanaged add-instances wsfc-group-2 \
    --zone $ZONE_2 \
    --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"
    

    A porta de sondas de verificação do estado de funcionamento é a 59997, que é a porta que configurou anteriormente como ProbePort para o endereço IP do cluster 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 $REGION \
    --health-checks wsfc-healthcheck \
    --protocol tcp
    
    gcloud compute backend-services add-backend wsfc-backend \
    --instance-group wsfc-group-1 \
    --instance-group-zone $ZONE_1 \
    --region $REGION
    
    gcloud compute backend-services add-backend wsfc-backend \
    --instance-group wsfc-group-2 \
    --instance-group-zone $ZONE_2 \
    --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
    

Configure um recurso de DNN e um nome DNS de DNN

Semelhante ao balanceador de carga interno, o recurso DNN atua como um único gateway para clientes do SQL Server. Durante as comutações por falha, o cluster encaminha o tráfego de forma integrada para o nó FCI do SQL Server ativo. Os clientes estabelecem ligação ao FCI do SQL Server com o nome DNS.

  1. Regresse à sessão do PowerShell em node-1.
  2. Execute o script para criar o recurso de RND

      $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 o node-1 e o node-2

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 \
      --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. 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 cerca de 3 minutos até ver o resultado Instance setup finished e, de 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. Estabeleça ligação ao cluster do SQL Server através do respetivo 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 da DNN.

    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
    
  5. Repetir 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 da DNN.

    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.

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?