Condividi tramite


Configurare un gruppo di disponibilità del gruppo di lavoro

Si applica a: SQL Server su VM di Azure

Questo articolo illustra i passaggi necessari per creare un cluster indipendente dal dominio di Active Directory con un gruppo di disponibilità Always On; questa operazione è nota anche come cluster del gruppo di lavoro. Questo articolo è incentrato sui passaggi relativi alla preparazione e alla configurazione del gruppo di lavoro e del gruppo di disponibilità e sorvola sui passaggi trattati in altri articoli, ad esempio la modalità di creazione del cluster o la distribuzione del gruppo di disponibilità.

Prerequisiti

Per configurare un gruppo di disponibilità del gruppo di lavoro, è necessario quanto segue:

  • Almeno due macchine virtuali Windows Server 2016 (o versioni successive) che eseguono SQL Server 2016 (o versione successiva), distribuite nello stesso set di disponibilità o in diverse zone di disponibilità, usando indirizzi IP statici.
  • Una rete locale con almeno 4 indirizzi IP liberi nella subnet.
  • Un account in ogni computer del gruppo di amministratori che dispone anche dei diritti di amministratore di sistema all'interno di SQL Server.
  • Porte aperte: TCP 1433, TCP 5022, TCP 59999.

Per riferimento, in questo articolo vengono usati i parametri seguenti, ma è possibile modificarli quando necessario:

Nome Parametro
Node1 AGNode1 (10.0.0.4)
Node2 AGNode2 (10.0.0.5)
Nome cluster AGWGAG (10.0.0.6)
Listener AGListener (10.0.0.7)
Suffisso DNS ag.wgcluster.example.com
Nome gruppo di lavoro AGWorkgroup

Impostare il suffisso DNS

In questo passaggio, configurare il suffisso DNS per entrambi i server. Ad esempio: ag.wgcluster.example.com. Questo consente di usare il nome dell'oggetto a cui si desidera connettersi come indirizzo completo all'interno della rete, ad esempio AGNode1.ag.wgcluster.example.com.

Seguire questa procedura per configurare il suffisso DNS:

  1. RDP nel primo nodo e aprire Server Manager.

  2. Selezionare Server locale quindi selezionare il nome della macchina virtuale in Nome computer.

  3. Selezionare Modifica... in Per rinominare il computer....

  4. Modificare il nome del gruppo di lavoro in modo che sia significativo, ad esempio AGWORKGROUP:

    Modificare il nome del gruppo di lavoro

  5. Selezionare Altro... per aprire la finestra di dialogo Suffisso DNS e nome NetBIOS del computer.

  6. Digitare il nome del suffisso DNS in Suffisso DNS primario del computer, ad esempio ag.wgcluster.example.com, quindi selezionare OK:

    Screenshot che mostra la finestra di dialogo Suffisso D N S e Nome computer NetBIOS in cui è possibile immettere il valore.

  7. Verificare che il Nome completo del computer ora mostri il suffisso DNS, quindi selezionare OK per salvare le modifiche:

    Screenshot che mostra dove visualizzare il nome completo del computer.

  8. Riavviare il server quando richiesto.

  9. Ripetere questi passaggi in tutti gli altri nodi da usare per il gruppo di disponibilità.

Modificare il file host

Poiché non esiste alcuna Active Directory, non è possibile autenticare le connessioni di Windows. Di conseguenza, assegnare l'attendibilità modificando il file host con un editor di testo.

Per modificare il file host, attenersi alla procedura seguente:

  1. RDP nella macchina virtuale.

  2. Usare Esplora file per andare a c:\windows\system32\drivers\etc.

  3. Fare clic con il pulsante destro del mouse sul file host e aprire il file con Blocco note (o qualsiasi altro editor di testo).

  4. Alla fine del file, aggiungere una voce per ogni nodo, il gruppo di disponibilità e il listener nel formato IP Address, DNS Suffix #comment, ad esempio:

    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
    

    Aggiungere voci per l'indirizzo IP, il cluster e il listener nel file host

Impostare le autorizzazioni

Poiché non esistono Active Directory per gestire le autorizzazioni, è necessario consentire manualmente a un account amministratore locale non incorporato di creare il cluster.

A tale scopo, eseguire il cmdlet di PowerShell seguente in una sessione di PowerShell amministrativa in ogni nodo:


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

Creare il cluster di failover

In questo passaggio si creerà il cluster di failover. Se non si ha familiarità con questi passaggi, è possibile seguirli dall'esercitazione sul cluster di failover.

Differenze rilevanti tra l'esercitazione e le operazioni da eseguire per un cluster di gruppi di lavoro:

  • Deselezionare Archiviazione e Spazi di archiviazione diretta quando si esegue la convalida del cluster.
  • Quando si aggiungono i nodi al cluster, aggiungere il nome completo, ad esempio:
    • AGNode1.ag.wgcluster.example.com
    • AGNode2.ag.wgcluster.example.com
  • Deselezionare Aggiungi tutte le risorse di archiviazione idonee al cluster.

Una volta creato il cluster, assegnare un indirizzo IP del cluster statico. A tale scopo, effettuare i passaggi seguenti:

  1. Su uno dei nodi, aprire Gestione cluster di failover, selezionare il cluster, fare clic con il pulsante destro del mouse su Nome: <CLusterNam> in Risorse principali del cluster e quindi selezionare Proprietà.

    Avviare le proprietà per il nome del cluster

  2. Selezionare l'indirizzo IP in Indirizzi IP e selezionare Modifica.

  3. Selezionare Usa statico, specificare l'indirizzo IP del cluster e quindi selezionare OK:

    Fornire un indirizzo IP statico per il cluster

  4. Verificare che le impostazioni siano corrette e quindi selezionare OK per salvarle:

    Verificare le proprietà del cluster

Creare un cloud di controllo

In questo passaggio, configurare un controllo della condivisione cloud. Se non si ha familiarità con i passaggi, vedere Implementare un cloud di controllo per un cluster di failover.

Abilitare la funzionalità gruppo di disponibilità

In questo passaggio, abilitare la funzionalità del gruppo di disponibilità. Se non si ha familiarità con i passaggi, vedere l'esercitazione sul cluster di failover.

Creare le chiavi e i certificati

In questo passaggio, creare i certificati usati da un account di accesso SQL sull'endpoint crittografato. Creare una cartella in ogni nodo per conservare i backup dei certificati, ad esempio c:\certs.

Nota

Se non si specifica una data di scadenza per il certificato, la sua validità sarà di un anno dalla data di creazione. Se il certificato scade, la connessione tra gli endpoint avrà esito negativo.

Per configurare il primo nodo, effettuare le operazioni seguenti:

  1. Aprire SQL Server Management Studio e connettersi al primo nodo, ad esempio AGNode1.

  2. Aprire la finestra Nuova query ed eseguire l'istruzione Transact-SQL (T-SQL) seguente dopo l'aggiornamento a una password complessa e sicura:

    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. Successivamente, creare l'endpoint HADR e usare il certificato per l'autenticazione eseguendo l'istruzione 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. Usare Esplora file per andare al percorso del file in cui si trova il certificato, ad esempio c:\certs.

  5. Eseguire manualmente una copia del certificato, ad esempio AGNode1Cert.crt, dal primo nodo e trasferirlo nello stesso percorso nel secondo nodo.

Per configurare il secondo nodo, effettuare le operazioni seguenti:

  1. Connettersi al secondo nodo con SQL Server Management Studio, ad esempio AGNode2.

  2. In una finestra Nuova query eseguire l'istruzione Transact-SQL (T-SQL) seguente dopo l'aggiornamento a una password complessa e sicura:

    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. Successivamente, creare l'endpoint HADR e usare il certificato per l'autenticazione eseguendo l'istruzione 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. Usare Esplora file per andare al percorso del file in cui si trova il certificato, ad esempio c:\certs.

  5. Eseguire manualmente una copia del certificato, ad esempio AGNode2Cert.crt, dal secondo nodo e trasferirlo nello stesso percorso nel primo nodo.

Se sono presenti altri nodi nel cluster, ripetere questi passaggi anche in questo caso, modificando i rispettivi nomi di certificato.

Creare account di accesso

L'autenticazione del certificato viene usata per sincronizzare i dati tra i nodi. Per consentire questa operazione, creare un account di accesso per l'altro nodo, creare un utente per l'account di accesso, creare un certificato per l'account di accesso per usare il certificato di cui è stato eseguito il backup, quindi concedere la connessione nell'endpoint del mirroring.

A tale scopo, eseguire prima la query Transact-SQL (T-SQL) seguente sul primo nodo, ad esempio 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

Successivamente, eseguire la query Transact-SQL (T-SQL) seguente sul secondo nodo, ad esempio 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 sono presenti altri nodi nel cluster, ripetere questi passaggi anche in questo caso, modificando i rispettivi nomi di certificato e utente.

Configurare un gruppo di disponibilità

In questo passaggio, configurare il gruppo di disponibilità e aggiungervi i database. Non creare un listener in questo momento. Se non si ha familiarità con i passaggi, vedere l'esercitazione sul gruppo di disponibilità. Assicurarsi di avviare un failover e un failback per verificare che tutto funzioni come dovrebbe.

Nota

Se si verifica un errore durante il processo di sincronizzazione, potrebbe essere necessario concedere diritti di amministratore di sistema NT AUTHORITY\SYSTEM per creare risorse cluster sul primo nodo, ad esempio AGNode1 temporaneamente.

Configurare un servizio di bilanciamento del carico

In questo passaggio finale configurare il bilanciamento del carico usando il portale di Azure o PowerShell.

Tuttavia, potrebbero esserci alcune limitazioni quando si usa l'interfaccia utente grafica del cluster Windows e, di conseguenza, è consigliabile usare PowerShell per creare un punto di accesso client o il nome di rete per il listener con lo script di esempio seguente:

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 

Passaggi successivi

Dopo aver distribuito il gruppo di disponibilità, prendere in considerazione l'ottimizzazione delle impostazioni HADR per SQL Server nelle VM di Azure.

Per ulteriori informazioni, vedere: