Configurar grupos de disponibilidade AlwaysOn do SQL Server com confirmação síncrona usando um nome de rede distribuído


Os grupos de disponibilidade sempre ativados do Microsoft SQL Server permitem replicar bancos de dados em várias instâncias do SQL Server Enterprise.

Assim como as instâncias de cluster de failover do SQL Server, os grupos de disponibilidade AlwaysOn usam o clustering de failover do Windows Server (WSFC, na sigla em inglês) para implementar alta disponibilidade. No entanto, os dois recursos diferem das seguintes maneiras:

Grupos de disponibilidade Always On Instâncias de cluster de failover
Escopo do failover Grupo de bancos de dados Instância
Armazenamento Não compartilhado Compartilhado

Para uma comparação mais detalhada, consulte Comparação de instâncias de cluster de failover e grupos de disponibilidade.

Os grupos de disponibilidade sempre ativados são compatíveis com vários modos de disponibilidade. Neste tutorial, você vai aprender a implantar grupos de disponibilidade sempre ativa no modo de confirmação síncrona para implementar alta disponibilidade em um ou mais bancos de dados.

Na configuração, você vai criar três instâncias de VM. Duas instâncias de VM, node-1 e node-2, servem como nós de cluster e executam o SQL Server. Uma terceira instância de VM, witness, é usada para alcançar um quórum em um cenário de failover. As três instâncias de VM ficam distribuídas em três zonas e compartilham uma sub-rede comum.

Usando um grupo de disponibilidade Always On do SQL Server, um banco de dados de exemplo, bookshelf, é replicado de maneira síncrona nas duas instâncias do SQL Server.

Em um ambiente de cluster do Windows local, os avisos do protocolo de resolução de endereço (ARP) acionam o failover de endereço IP. No entanto, oGoogle Cloudignora os anúncios de ARP. Consequentemente, você precisa implementar uma das duas opções a seguir: usando um balanceador de carga interno e um nome de rede distribuído (DNN).

O artigo pressupõe que você já implantou o Active Directory no Google Cloud e que você tem conhecimento básico do SQL Server, do Active Directory e do Compute Engine. Para mais informações sobre o Active Directory no Google Cloud, consulte a seção Antes de começar.

Usando um grupo de disponibilidade Always On do SQL Server, um banco de dados de exemplo, bookshelf, é replicado de maneira síncrona nas duas instâncias do SQL Server. Um listener de nome de rede distribuída (DNN, na sigla em inglês) na frente do cluster fornece um único endpoint para clientes do SQL Server.

Para mais informações sobre o DNN, consulte Configurar um listener de DNN para um grupo de disponibilidade.

Arquitetura

O diagrama inclui os seguintes pontos:

  • Duas instâncias de VM na mesma região e em zonas diferentes para o cluster de failover chamado node-1 e node-2. Um hospeda a réplica primária do banco de dados do SQL Server, e o outro hospeda a réplica secundária.
  • Uma terceira VM chamada witness serve como testemunha de compartilhamento de arquivos para fornecer um voto de desempate e alcançar um quórum para failover.
  • Um listener de DNN na frente do cluster fornece um único endpoint para clientes do SQL Server.

Objetivos

Custos

Neste tutorial, usamos componentes faturáveis do Google Cloud, incluindo:

Use a Calculadora de preços para gerar uma estimativa de custo com base no uso previsto.

Antes de começar

Para concluir as tarefas deste tutorial, confira se você tem o seguinte:

  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.

  6. Você tem um domínio do Active Directory com pelo menos um controlador de domínio. É possível criar um domínio do Active Directory usando o Microsoft AD gerenciado. Se preferir, implante um ambiente personalizado do Active Directory no Compute Engine e configure uma zona de encaminhamento de DNS particular que encaminhe consultas DNS aos controladores de domínio.
  7. Você tem um usuário do Active Directory que tem permissão para associar computadores ao domínio e pode fazer login usando o RDP. Se você estiver usando o Microsoft AD gerenciado, utilize o usuário setupadmin. Para mais informações sobre o provisionamento de contas de usuário do Active Directory, consulte Provisionamento de contas de usuário do Active Directory.
  8. Um projeto do Google Cloud e uma nuvem privada virtual (VPC) com conectividade aos controladores de domínio do Active Directory.
  9. Uma sub-rede a ser usada para as instâncias de VM do cluster de failover do Windows Server.
Ao concluir este tutorial, exclua os recursos criados para evitar o faturamento contínuo. Para mais informações, consulte Como fazer a limpeza.

Preparar seu projeto e sua rede

Para implantar os grupos de disponibilidade sempre ativados do SQL Server, prepare o projeto e a VPC doGoogle Cloud . As seções a seguir discutem como fazer isso em detalhes.

Configurar o projeto e a região

Para preparar o projeto do Google Cloud para a implantação de grupos de disponibilidade sempre ativados do SQL Server, faça o seguinte:

  1. No console do Google Cloud , abra oCloud 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
    

    Substitua:

    • 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 Google Cloud .

  4. Defina a região padrão.

    gcloud config set compute/region REGION
    

    Substitua REGION pelo ID da região em que você quer implantar.

Crie regras de firewall

Para permitir que os clientes se conectem ao SQL Server e a comunicação entre os nós do cluster, é necessário criar várias regras de firewall. Use tags de rede para simplificar a criação dessas regras de firewall da seguinte maneira:

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

Para criar regras de firewall que usam essas tags de rede, siga estas etapas:

  1. Volte para a sessão atual do Cloud Shell.
  2. Crie regras de firewall para permitir o tráfego entre os nós do cluster.

    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
    

Criar instâncias de VM

Crie e implante duas instâncias de VM para o cluster de failover. A qualquer momento, uma dessas VMs hospeda a réplica primária do banco de dados do SQL Server enquanto o outro nó hospeda a réplica secundária. As duas instâncias de VM precisam:

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, implante uma terceira VM que sirva como uma testemunha de compartilhamento de arquivos seguindo estas etapas:

  1. Volte para a sessão atual do Cloud Shell.
  2. Crie um script especializado para os nós WSFC. Esse script instala os recursos necessários 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 WSFC health check" dir=in action=allow protocol=TCP localport=59998
    
    # Open firewall for SQL Server
    netsh advfirewall firewall add rule name="Allow SQL Server" dir=in action=allow protocol=TCP localport=1433
    
    # Open firewall for SQL Server replication
    netsh advfirewall firewall add rule name="Allow SQL Server replication" dir=in action=allow protocol=TCP localport=5022
    
    # Format data disk
    Get-Disk |
     Where partitionstyle -eq 'RAW' |
     Initialize-Disk -PartitionStyle MBR -PassThru |
     New-Partition -AssignDriveLetter -UseMaximumSize |
     Format-Volume -FileSystem NTFS -NewFileSystemLabel 'Data' -Confirm:$false
    
    # Create data and log folders for SQL Server
    md d:\Data
    md d:\Logs
    EOF
    
  3. Crie as instâncias de VM. Nas duas VMs que servem como nós de cluster, anexe outro disco de dados e ative o cluster de failover do Windows Server definindo a chave de metadados enable-wsfc como true:

    REGION=$(gcloud config get-value compute/region)
    ZONE1=ZONE1
    ZONE2=ZONE2
    ZONE3=ZONE3
    PD_SIZE=200
    MACHINE_TYPE=n2-standard-8
    
    gcloud compute instances create node-1 \
      --zone $ZONE1 \
      --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" \
      --create-disk=name=node-1-datadisk,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 $ZONE2 \
      --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" \
      --create-disk=name=node-2-datadisk,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 $ZONE3 \
      --machine-type e2-medium \
      --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"
    

    Substitua ZONE1, ZONE2, ZONE3 com base nas zonas que você está usando.

  4. Para mesclar as três instâncias de VM ao Active Directory, faça o seguinte para cada uma delas:

    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 alguns minutos até ver 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.

    7. Digite as credenciais de uma conta com permissões para associar uma VM ao domínio.

      Aguarde a reinicialização da VM. Agora você associou a instância da VM ao Active Directory.

Como implantar o cluster de failover

Agora é possível usar as instâncias de VM para implantar um cluster de failover do Windows Server e um SQL Server. As seções a seguir discutem como fazer isso em detalhes.

Como preparar o SQL Server

Crie uma nova conta de usuário no Active Directory para o SQL Server usando as etapas a seguir.

  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 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 Admin account." `
      -AccountPassword $Credential.Password `
      -Enabled $true -PasswordNeverExpires $true
    

Para configurar o SQL Server, execute as seguintes etapas em node-1 e node-2:

  1. Abra o SQL Server Configuration Manager.
  2. No painel de navegação, selecione Serviços do SQL Server.
  3. Na lista de serviços, clique com o botão direito do mouse em SQL Server (MSSQLSERVER) e selecione Propriedades.
  4. Em Fazer logon como, mude a conta da seguinte maneira:

    • 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ê escolheu anteriormente.
  5. Clique em OK.

  6. Quando solicitado a reiniciar o SQL Server, selecione Sim.

O SQL Server agora é executado em uma conta de usuário do domínio.

Criar compartilhamentos de arquivos

Crie dois compartilhamentos de arquivos na instância de VM witness para que ela possa armazenar backups do SQL Server e atuar como uma testemunha de 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 um compartilhamento de arquivos de testemunha e conceda a você e aos dois nós do cluster acesso ao compartilhamento de arquivos.

    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$
    
  5. Crie outro compartilhamento de arquivos para armazenar backups e conceder acesso total ao SQL Server:

    New-Item "C:\Backup" –type directory
    New-SmbShare `
      -Name Backup `
      -Path "C:\Backup" `
      -Description "SQL Backup" `
      -FullAccess  $env:USERDOMAIN\sql_server
    

Criar o cluster de failover

Para criar o cluster de failover, siga estas etapas:

  1. Volte para a sessão na Área de trabalho remota em node-1.
  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.

    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.

    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 cluster do Windows ao grupo Contas mescladas de domínio do Cloud Service para que ele possa mesclar computadores ao domínio.

    Add-ADGroupMember `
      -Identity "Cloud Service Domain Join Accounts" `
      -Members sql-cluster$
    
  9. Ative os grupos de disponibilidade sempre ativa nos dois nós.

    Enable-SqlAlwaysOn -ServerInstance node-1 -Force
    Enable-SqlAlwaysOn -ServerInstance node-2 -Force
    

Como criar um grupo de disponibilidade

Agora, crie um banco de dados de amostra bookshelf, inclua-o em um novo grupo de disponibilidade chamado bookshelf-ag e configure a alta disponibilidade.

Criar um banco de dados

Crie um novo banco de dados. Para os fins deste tutorial, o banco de dados não precisa conter nenhum dado.

  1. Volte para a sessão na Área de trabalho remota em node-1.
  2. Abra o SQL Server Management Studio.
  3. Na caixa de diálogo Conectar-se ao servidor, verifique se o nome do servidor está definido como node-1 e selecione Conectar.
  4. No menu, selecione Arquivo > Novo > Consulta com conexão atual.
  5. Cole este script SQL no editor:

    -- Create a sample database
    CREATE DATABASE bookshelf ON PRIMARY (
      NAME = 'bookshelf',
      FILENAME='d:\Data\bookshelf.mdf',
      SIZE = 256MB,
      MAXSIZE = UNLIMITED,
      FILEGROWTH = 256MB)
    LOG ON (
      NAME = 'bookshelf_log',
      FILENAME='d:\Logs\bookshelf.ldf',
      SIZE = 256MB,
      MAXSIZE = UNLIMITED,
      FILEGROWTH = 256MB)
    GO
    
    USE [bookshelf]
    SET ANSI_NULLS ON
    SET QUOTED_IDENTIFIER ON
    GO
    
    -- Create sample table
    CREATE TABLE [dbo].[Books] (
      [Id] [bigint] IDENTITY(1,1) NOT NULL,
      [Title] [nvarchar](max) NOT NULL,
      [Author] [nvarchar](max) NULL,
      [PublishedDate] [datetime] NULL,
      [ImageUrl] [nvarchar](max) NULL,
      [Description] [nvarchar](max) NULL,
      [CreatedById] [nvarchar](max) NULL,
      CONSTRAINT [PK_dbo.Books] PRIMARY KEY CLUSTERED ([Id] ASC) WITH (
        PAD_INDEX = OFF,
        STATISTICS_NORECOMPUTE = OFF,
        IGNORE_DUP_KEY = OFF,
        ALLOW_ROW_LOCKS = ON,
        ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GO
    
    -- Create a backup
    EXEC dbo.sp_changedbowner @loginame = 'sa', @map = false;
      ALTER DATABASE [bookshelf] SET RECOVERY FULL;
      GO
      BACKUP DATABASE bookshelf to disk = '\\witness\Backup\bookshelf.bak' WITH INIT
    GO
    

    O script cria um novo banco de dados com uma única tabela e executa um backup inicial para witness.

  6. Selecione Executar para executar o script SQL.

Configurar alta disponibilidade

Agora é possível configurar a alta disponibilidade para o grupo de disponibilidade usando o T-SQL ou o Server Management Studio.

Usando o T-SQL

Para configurar a alta disponibilidade do grupo de disponibilidade usando o T-SQL, siga estas etapas:

  1. Conecte-se a node-1 e execute o script a seguir para criar o grupo de disponibilidade bookshelf-ag.

    CREATE LOGIN [NET_DOMAIN\sql_server] FROM WINDOWS;
    GO
    
    USE [bookshelf];
    CREATE USER [NET_DOMAIN\sql_server] FOR LOGIN [NET_DOMAIN\sql_server];
    GO
    
    USE [master];
    CREATE ENDPOINT bookshelf_endpoint
      STATE=STARTED
      AS TCP (LISTENER_PORT=5022)
      FOR DATABASE_MIRRORING (ROLE=ALL);
    GO
    
    GRANT CONNECT ON ENDPOINT::[bookshelf_endpoint] TO [NET_DOMAIN\sql_server]
    GO
    
  2. Conecte-se a node-2 e execute o script a seguir.

    CREATE LOGIN [NET_DOMAIN\sql_server] FROM WINDOWS;
    GO
    
    CREATE ENDPOINT bookshelf_endpoint
      STATE=STARTED
      AS TCP (LISTENER_PORT=5022)
      FOR DATABASE_MIRRORING (ROLE=ALL);
    GO
    
    GRANT CONNECT ON ENDPOINT::[bookshelf_endpoint] TO [NET_DOMAIN\sql_server]
    GO
    
  3. Em node-1, execute o script a seguir para criar o grupo de disponibilidade bookshelf-ag.

    USE master;
    GO
    
    CREATE AVAILABILITY GROUP [bookshelf-ag]
    WITH (AUTOMATED_BACKUP_PREFERENCE = SECONDARY,
    CLUSTER_TYPE = WSFC,
    DB_FAILOVER = ON
    )
    FOR DATABASE [bookshelf]
    REPLICA ON
      N'node-1' WITH (
          ENDPOINT_URL = 'TCP://node-1:5022',
          AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
          FAILOVER_MODE = AUTOMATIC,
          BACKUP_PRIORITY = 50,
          SEEDING_MODE = AUTOMATIC,
          SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)
      ),
      N'node-2' WITH (
          ENDPOINT_URL = 'TCP://node-2:5022',
          AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
          FAILOVER_MODE = AUTOMATIC,
          BACKUP_PRIORITY = 50,
          SEEDING_MODE = AUTOMATIC,
          SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)
      );
    GO
    
  4. Conecte-se a node-2 e execute o script a seguir para unir a réplica secundária ao grupo de disponibilidade e ativar a semeadura automática.

    USE master;
    GO
    
    ALTER AVAILABILITY GROUP [bookshelf-ag] JOIN;
    ALTER AVAILABILITY GROUP [bookshelf-ag] GRANT CREATE ANY DATABASE;
    
    
  5. Verifique o status do grupo de disponibilidade.

    SELECT * FROM sys.dm_hadr_availability_group_states;
    GO
    

    O synchronization_health_desc vai aparecer como HEALTHY.

Como usar o SQL Server Management Studio

Para configurar a alta disponibilidade do grupo de disponibilidade usando o SQL Server Management Studio, siga estas etapas:

  1. Na janela Pesquisador de objetos, clique com o botão direito do mouse em Alta disponibilidade sempre ativada e selecione Assistente de novo grupo de disponibilidade.
  2. Na página Especificar opções, defina o nome do grupo de disponibilidade como bookshelf-ag e selecione Avançar.
  3. Na página Selecionar bancos de dados, selecione o banco de dados bookshelf e, em seguida, Avançar.
  4. Na página Especificar réplicas, selecione a guia Réplicas.

    1. Selecione Adicionar réplica.
    2. Na caixa de diálogo Conectar-se ao servidor, insira o nome do servidor node-2 e selecione Conectar.

      A lista de réplicas de disponibilidade agora contém instâncias do SQL Server, node-1 e node-2.

    3. Defina o Modo de disponibilidade como Commit síncrono em ambas as instâncias.

    4. Defina Failover automático como Ativado nas duas instâncias.

    5. Selecione Próxima.

  5. Na página Selecionar Sincronização de Dados, selecione Propagação automática.

  6. Na página Validação, confirme se todas as verificações foram bem-sucedidas. Você pode ignorar a verificação do listener do grupo de disponibilidade.

  7. Na página Resumo, selecione Concluir.

  8. Na página Resultados, selecione Fechar.

Configurar um listener de DNN para o grupo de disponibilidade

Um listener de DNN funciona como um endpoint único para clientes do SQL Server. Para configurar um listener de DNN, siga estas etapas:

  1. Volte para a sessão do PowerShell em node-1.
  2. Execute o script a seguir para criar um listener de DNN.

      $Ag='bookshelf-ag'
      $Port='DNN_PORT'
      $Dns='DNN_NAME'
    
      # create the DNN resource with the port as the resource name
      Add-ClusterResource -Name $Port -ResourceType "Distributed Network Name" -Group $Ag
    
      # set the DNS name of the DNN resource
      Get-ClusterResource -Name $Port | Set-ClusterParameter -Name DnsName -Value $Dns
    
      # start the DNN resource
      Start-ClusterResource -Name $Port
    
      # add the Dependency from availability group resource to the DNN resource
      Set-ClusterResourceDependency -Resource $Ag -Dependency "[$Port]"
    
      # restart the availability group resource
      Stop-ClusterResource -Name $Ag
      Start-ClusterResource -Name $Ag
    

    Substitua DNN_PORT pela porta do listener de DNN. A porta do listener de DNN precisa ser configurada com uma porta exclusiva. Para mais informações, consulte Considerações sobre portas.

    Substitua DNN_NAME pelo nome do listener de DNN.

  3. Crie regras de firewall para a porta do listener de DNN em node-1 e node-2.

      netsh advfirewall firewall add rule name="Allow DNN listener" dir=in action=allow protocol=TCP localport=DNN_PORT
    

Testar o failover

Agora você está pronto para testar se o failover funciona conforme esperado:

  1. Volte para a sessão do PowerShell em witness.
  2. Execute o script a seguir.

    while ($True){
      $Conn = New-Object System.Data.SqlClient.SqlConnection
      $Conn.ConnectionString = "Server=DNN_NAME,DNN_PORT;Integrated Security=true;Initial Catalog=master"
      $Conn.Open()
    
      $Cmd = New-Object System.Data.SqlClient.SqlCommand
      $Cmd.Connection = $Conn
      $Cmd.CommandText = "SELECT SERVERPROPERTY('ServerName')"
    
      $Adapter = New-Object System.Data.SqlClient.SqlDataAdapter $Cmd
      $Data = New-Object System.Data.DataSet
      $Adapter.Fill($Data) | Out-Null
      $Data.Tables[0] + (Get-Date -Format "MM/dd/yyyy HH:mm:ss")
    
      Start-Sleep -Seconds 2
    }
    

    Substitua DNN_NAME pelo nome do listener de DNN e DNN_PORT pela porta do listener de DNN.

    A cada dois segundos, o script se conecta ao SQL Server usando o listener do grupo de disponibilidade e consulta o nome do servidor.

    Deixe o script em execução.

  3. Retorne à sessão da Área de trabalho remota em node-1 para acionar um failover.

    1. No SQL Server Management Studio, navegue até Alta disponibilidade sempre ativada > Grupos de disponibilidade > bookshelf-ag (primária) e clique com o botão direito do mouse no nó.
    2. Selecione Failover.
    3. Na página Selecionar nova réplica primária, verifique se node-2 está selecionado como a nova réplica primária e se a coluna Prontidão de failover indica No data loss. Depois, selecione Avançar.
    4. Na página Conectar à réplica, selecione Conectar.
    5. Na caixa de diálogo Conectar-se ao servidor, verifique se o nome do servidor é node-2 e clique em Conectar.
    6. Selecione Avançar e Concluir.
    7. Na página Resultados, verifique se o failover foi bem-sucedido.
  4. Volte para a sessão do PowerShell em witness.

  5. Observe a saída do script em execução e veja que o nome do servidor mudou de node-1 para node-2 como resultado do failover.

  6. Para interromper o script, pressione Ctrl+C.

Limpar

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