Configurar um grupo de disponibilidade de grupo de trabalho

Aplica-se a:SQL Server na VM do Azure

Este artigo explica as etapas necessárias para criar um cluster independente de domínio do Ative Directory com um grupo de disponibilidade Always On; Isso também é conhecido como um cluster de grupo de trabalho. Este artigo se concentra nas etapas relevantes para preparar e configurar o grupo de trabalho e o grupo de disponibilidade e ignora as etapas abordadas em outros artigos, como como criar o cluster ou implantar o grupo de disponibilidade.

Pré-requisitos

Para configurar um grupo de disponibilidade de grupo de trabalho, você precisa do seguinte:

  • Pelo menos duas máquinas virtuais do Windows Server 2016 (ou superior) executando o SQL Server 2016 (ou superior), implantadas no mesmo conjunto de disponibilidade ou zonas de disponibilidade diferentes, usando endereços IP estáticos.
  • Uma rede local com um mínimo de 4 endereços IP livres na sub-rede.
  • Uma conta em cada máquina no grupo de administradores que também tem direitos sysadmin no SQL Server.
  • Portas abertas: TCP 1433, TCP 5022, TCP 59999.

Para referência, os seguintes parâmetros são usados neste artigo, mas podem ser modificados conforme necessário:

Name Parâmetro
Nó1 AGNode1 (10.0.0.4)
Nó2 AGNode2 (10.0.0.5)
Nome do cluster AGWGAG (10.0.0.6)
Ouvinte AGListener (10.0.0.7)
Sufixo DNS ag.wgcluster.example.com
Nome do grupo de trabalho AGWorkgroup

Definir um sufixo DNS

Nesta etapa, configure o sufixo DNS para ambos os servidores. Por exemplo, ag.wgcluster.example.com. Isso permite que você use o nome do objeto ao qual deseja se conectar como um endereço totalmente qualificado em sua rede, como AGNode1.ag.wgcluster.example.com.

Para configurar o sufixo DNS, siga estes passos:

  1. RDP no seu primeiro nó e abra o Gerenciador do Servidor.

  2. Selecione Servidor Local e, em seguida, selecione o nome da sua máquina virtual em Nome do computador.

  3. Selecione Alterar... em Para renomear este computador....

  4. Altere o nome do grupo de trabalho para ser algo significativo, como AGWORKGROUP:

    Change workgroup name

  5. Selecione Mais... para abrir a caixa de diálogo Sufixo DNS e Nome do Computador NetBIOS.

  6. Digite o nome do sufixo DNS em Sufixo DNS primário deste computador, como ag.wgcluster.example.com e selecione OK:

    Screenshot shows the D N S Suffix and NetBIOS Computer Name dialog box where you can enter the value.

  7. Confirme se o Nome completo do computador está agora a mostrar o sufixo DNS e, em seguida, selecione OK para guardar as alterações:

    Screenshot shows where to see your Full computer name.

  8. Reinicie o servidor quando lhe for pedido para o fazer.

  9. Repita essas etapas em quaisquer outros nós a serem usados para o grupo de disponibilidade.

Editar um arquivo host

Como não há um diretório ativo, não há como autenticar conexões do Windows. Como tal, atribua confiança editando o arquivo host com um editor de texto.

Para editar o ficheiro anfitrião, siga estes passos:

  1. RDP na sua máquina virtual.

  2. Use o Explorador de Arquivos para ir para c:\windows\system32\drivers\etc.

  3. Clique com o botão direito do mouse no arquivo hosts e abra o arquivo com o Bloco de Notas (ou qualquer outro editor de texto).

  4. No final do arquivo, adicione uma entrada para cada nó, o grupo de disponibilidade e o ouvinte na forma de IP Address, DNS Suffix #comment :

    10.0.0.4 AGNode1.ag.wgcluster.example.com #Availability group node
    10.0.0.5 AGNode2.ag.wgcluster.example.com #Availability group node
    10.0.0.6 AGWGAG.ag.wgcluster.example.com #Cluster IP
    10.0.0.7 AGListener.ag.wgcluster.example.com #Listener IP
    

    Add entries for the IP address, cluster, and listener to the host file

Definir permissões

Como não há Ative Directory para gerenciar permissões, você precisa permitir manualmente que uma conta de administrador local não interna crie o cluster.

Para fazer isso, execute o seguinte cmdlet do PowerShell em uma sessão administrativa do PowerShell em cada nó:


new-itemproperty -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name LocalAccountTokenFilterPolicy -Value 1

Criar o cluster de ativação pós-falha

Nesta etapa, você criará o cluster de failover. Se você não estiver familiarizado com essas etapas, poderá segui-las no tutorial de cluster de failover.

Diferenças notáveis entre o tutorial e o que deve ser feito para um cluster de grupo de trabalho:

  • Desmarque Armazenamento e Espaços de Armazenamento Diretos ao executar a validação do cluster.
  • Ao adicionar os nós ao cluster, adicione o nome totalmente qualificado, como:
    • AGNode1.ag.wgcluster.example.com
    • AGNode2.ag.wgcluster.example.com
  • Desmarque Adicionar todo o armazenamento qualificado ao cluster.

Depois que o cluster tiver sido criado, atribua um endereço IP estático do cluster. Para o fazer, siga estes passos:

  1. Em um dos nós, abra o Gerenciador de Cluster de Failover, selecione o cluster, clique com o botão direito do mouse em Nome: <ClusterNam> em Recursos Principais do Cluster e selecione Propriedades.

    Launch properties for the cluster name

  2. Selecione o endereço IP em Endereços IP e selecione Editar.

  3. Selecione Usar estático, forneça o endereço IP do cluster e selecione OK:

    Provide a static IP address for the cluster

  4. Verifique se as configurações estão corretas e selecione OK para salvá-las:

    Verify cluster properties

Criar uma testemunha na nuvem

Nesta etapa, configure uma testemunha de compartilhamento de nuvem. Se você não estiver familiarizado com as etapas, consulte Implantar uma testemunha de nuvem para um cluster de failover.

Ativar o recurso de grupo de disponibilidade

Nesta etapa, habilite o recurso de grupo de disponibilidade. Se você não estiver familiarizado com as etapas, consulte o tutorial do grupo de disponibilidade.

Criar chaves e certificados

Nesta etapa, crie certificados que um logon SQL usa no ponto de extremidade criptografado. Crie uma pasta em cada nó para armazenar os backups de certificado, como c:\certs.

Para configurar o primeiro nó, siga estes passos:

  1. Abra o SQL Server Management Studio e conecte-se ao seu primeiro nó, como AGNode1.

  2. Abra uma janela Nova consulta e execute a seguinte instrução Transact-SQL (T-SQL) após atualizar para uma senha complexa e segura:

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'PassWOrd123!';  
    GO
    
    --create a cert from the master key
    USE master;  
    CREATE CERTIFICATE AGNode1Cert   
       WITH SUBJECT = 'AGNode1 Certificate';  
    GO  
    
    --Backup the cert and transfer it to AGNode2
    BACKUP CERTIFICATE AGNode1Cert TO FILE = 'C:\certs\AGNode1Cert.crt';  
    GO  
    
  3. Em seguida, crie o ponto de extremidade HADR e use o certificado para autenticação executando esta instrução Transact-SQL (T-SQL):

    --CREATE or ALTER the mirroring endpoint
    CREATE ENDPOINT hadr_endpoint  
       STATE = STARTED  
       AS TCP (  
          LISTENER_PORT=5022  
          , LISTENER_IP = ALL  
       )   
       FOR DATABASE_MIRRORING (   
          AUTHENTICATION = CERTIFICATE AGNode1Cert  
          , ENCRYPTION = REQUIRED ALGORITHM AES  
          , ROLE = ALL  
       );  
    GO  
    
  4. Use o Explorador de Arquivos para ir para o local do arquivo onde está o certificado, como c:\certs.

  5. Faça manualmente uma cópia do certificado, como AGNode1Cert.crt, do primeiro nó, e transfira-o para o mesmo local no segundo nó.

Para configurar o segundo nó, siga estes passos:

  1. Conecte-se ao segundo nó com o SQL Server Management Studio, como AGNode2.

  2. Em uma janela Nova consulta, execute a seguinte instrução Transact-SQL (T-SQL) após atualizar para uma senha complexa e segura:

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'PassWOrd123!';  
    GO 
    
    --create a cert from the master key
    USE master;  
    CREATE CERTIFICATE AGNode2Cert   
       WITH SUBJECT = 'AGNode2 Certificate';  
    GO  
    --Backup the cert and transfer it to AGNode1
    BACKUP CERTIFICATE AGNode2Cert TO FILE = 'C:\certs\AGNode2Cert.crt';  
    GO
    
  3. Em seguida, crie o ponto de extremidade HADR e use o certificado para autenticação executando esta instrução Transact-SQL (T-SQL):

    --CREATE or ALTER the mirroring endpoint
    CREATE ENDPOINT hadr_endpoint  
       STATE = STARTED  
       AS TCP (  
          LISTENER_PORT=5022  
          , LISTENER_IP = ALL  
       )   
       FOR DATABASE_MIRRORING (   
          AUTHENTICATION = CERTIFICATE AGNode2Cert  
          , ENCRYPTION = REQUIRED ALGORITHM AES  
          , ROLE = ALL  
       );  
    GO  
    
  4. Use o Explorador de Arquivos para ir para o local do arquivo onde está o certificado, como c:\certs.

  5. Faça manualmente uma cópia do certificado, como AGNode2Cert.crt, do segundo nó, e transfira-o para o mesmo local no primeiro nó.

Se houver outros nós no cluster, repita essas etapas lá também, modificando os respetivos nomes de certificado.

Criar logins

A autenticação de certificado é usada para sincronizar dados entre nós. Para permitir isso, crie um logon para o outro nó, crie um usuário para o logon, crie um certificado para o logon para usar o certificado de backup e, em seguida, conceda conexão no ponto de extremidade de espelhamento.

Para fazer isso, primeiro execute a seguinte consulta Transact-SQL (T-SQL) no primeiro nó, como AGNode1:

--create a login for the AGNode2
USE master;  
CREATE LOGIN AGNode2_Login WITH PASSWORD = 'PassWord123!';  
GO  

--create a user from the login
CREATE USER AGNode2_User FOR LOGIN AGNode2_Login;  
GO  

--create a certificate that the login uses for authentication
CREATE CERTIFICATE AGNode2Cert  
   AUTHORIZATION AGNode2_User  
   FROM FILE = 'C:\certs\AGNode2Cert.crt'  
GO 

--grant connect for login
GRANT CONNECT ON ENDPOINT::hadr_endpoint TO [AGNode2_login];  
GO

Em seguida, execute a seguinte consulta Transact-SQL (T-SQL) no segundo nó, como AGNode2:

--create a login for the AGNode1
USE master;  
CREATE LOGIN AGNode1_Login WITH PASSWORD = 'PassWord123!';  
GO  

--create a user from the login
CREATE USER AGNode1_User FOR LOGIN AGNode1_Login;  
GO  

--create a certificate that the login uses for authentication
CREATE CERTIFICATE AGNode1Cert  
   AUTHORIZATION AGNode1_User  
   FROM FILE = 'C:\certs\AGNode1Cert.crt'  
GO 

--grant connect for login
GRANT CONNECT ON ENDPOINT::hadr_endpoint TO [AGNode1_login];  
GO

Se houver outros nós no cluster, repita essas etapas lá também, modificando o respetivo certificado e nomes de usuário.

Configurar um grupo de disponibilidade

Nesta etapa, configure seu grupo de disponibilidade e adicione seus bancos de dados a ele. Não crie um ouvinte neste momento. Se você não estiver familiarizado com as etapas, consulte o tutorial do grupo de disponibilidade. Certifique-se de iniciar um failover e failback para verificar se tudo está funcionando como deveria.

Nota

Se houver uma falha durante o processo de sincronização, talvez seja necessário conceder NT AUTHORITY\SYSTEM direitos sysadmin para criar recursos de cluster no primeiro nó, como AGNode1 temporariamente.

Configurar um balanceador de carga

Nesta etapa final, configure o balanceador de carga usando o portal do Azure ou o PowerShell.

No entanto, pode haver algumas limitações ao usar a GUI do Cluster do Windows e, como tal, você deve usar o PowerShell para criar um ponto de acesso de cliente ou o nome de rede para seu ouvinte com o seguinte script de exemplo:

Add-ClusterResource -Name "IPAddress1" -ResourceType "IP Address" -Group "WGAG" 
Get-ClusterResource -Name IPAddress1 | Set-ClusterParameter -Multiple @{"Network" = "Cluster Network 1";"Address" = "10.0.0.4";"SubnetMask" = "255.0.0.0";"EnableDHCP" = 0} 
Add-ClusterResource -Name "IPAddress2" -ResourceType "IP Address" -Group "WGAG" 
Get-ClusterResource -Name IPAddress2 | Set-ClusterParameter -Multiple @{"Network" = "Cluster Network 2";"Address" = "10.0.0.5";"SubnetMask" = "255.0.0.0";"EnableDHCP" = 0} 
Add-ClusterResource -Name "TestName" -Group "WGAG" -ResourceType "Network Name" 
Get-ClusterResource -Name "TestName" | Set-ClusterParameter -Multiple @{"DnsName" = "TestName";"RegisterAllProvidersIP" = 1} 
Set-ClusterResourceDependency -Resource TestName -Dependency "[IPAddress1] or [IPAddress2]" 
Start-ClusterResource -Name TestName -Verbose 

Próximos passos

Depois que o grupo de disponibilidade for implantado, considere otimizar as configurações de HADR para o SQL Server em VMs do Azure.

Para saber mais, consulte: