I gruppi di disponibilità Always On di Microsoft SQL Server consentono di replicare i database in più istanze SQL Server Enterprise.
Analogamente alle istanze del cluster di failover di SQL Server, i gruppi di disponibilità Always On utilizzano il clustering di failover di Windows Server (WSFC) per implementare l'alta affidabilità. Tuttavia, le due funzionalità differiscono come segue:
Gruppi di disponibilità Always On | Istanze del cluster di failover | |
---|---|---|
Ambito del failover | Gruppo di database | Istanza |
Archiviazione | Non condiviso | Condiviso |
Per un confronto più dettagliato, vedi Confronto tra le istanze del cluster di failover e i gruppi di disponibilità.
I gruppi di disponibilità Always On supportano più modalità di disponibilità. Questo tutorial mostra come eseguire il deployment di gruppi di disponibilità Always On in modalità commit sincrono per implementare l'alta affidabilità per uno o più database.
Durante la configurazione, creerai tre istanze VM. Due istanze VM, node-1
e node-2
, fungono da nodi di cluster ed eseguono SQL Server.
Una terza istanza VM, witness
, viene utilizzata per raggiungere un quorum in uno scenario di failover.
Le tre istanze VM sono distribuite su tre zone e condividono una subnet comune.
Utilizzando un gruppo di disponibilità Always On di SQL Server, un database di esempio, bookshelf
, viene replicato in modalità sincrona sulle due istanze SQL Server.
In un ambiente cluster Windows on-premise, gli annunci del protocollo di risoluzione degli indirizzi (ARP, Address Resolution Protocol) attivano il failover dell'indirizzo IP. Google Cloud, tuttavia, ignora gli annunci ARP. Di conseguenza, devi implementare una delle due opzioni seguenti: utilizzare un bilanciatore del carico interno e un nome di rete distribuito (DNN).
L'articolo presuppone che tu abbia già eseguito il deployment di Active Directory su Google Cloude che tu abbia conoscenze di base di SQL Server, Active Directory e Compute Engine. Per saperne di più su Active Directory su Google Cloud, consulta la sezione Prima di iniziare.
Utilizzando un gruppo di disponibilità Always On di SQL Server, un database di esempio, bookshelf
, viene replicato in modalità sincrona sulle due istanze SQL Server. Un listener del nome di rete distribuito (DNN) davanti al cluster fornisce un singolo endpoint per i client SQL Server.
Per ulteriori informazioni sul DNN, vedi Configurare un listener DNN per un gruppo di disponibilità.
Questo diagramma include quanto segue:
- Due istanze VM nella stessa regione e in zone diverse per il cluster di failover, chiamate
node-1
enode-2
. Una VM ospita la replica principale del database SQL Server, mentre l'altro nodo ospita la replica secondaria. - Una terza VM denominata
witness
funge da controllo di condivisione file per fornire un voto decisivo e raggiungere il quorum per il failover. - Un listener DNN davanti al cluster fornisce un singolo endpoint per i client SQL Server.
Obiettivi
- Eseguire il deployment di un WSFC composto da due istanze VM SQL Server e una terza istanza VM che funge da controllo di condivisione file.
- Creare un gruppo di disponibilità con commit sincrono.
- Configurare un nome di rete distribuito (DNN) per instradare il traffico al gruppo di disponibilità con SQL Server.
- Verificare il funzionamento della configurazione simulando un failover.
Costi
Questo tutorial utilizza componenti fatturabili di Google Cloud, tra cui:
Utilizza il calcolatore prezzi per generare una stima dei costi in base all'utilizzo previsto.
Prima di iniziare
Per completare le attività di questo tutorial, verifica quanto segue:
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
- Hai un dominio Active Directory con almeno un domain controller. Puoi creare un dominio Active Directory utilizzando Microsoft Active Directory gestito. In alternativa, puoi eseguire il deployment di un ambiente Active Directory personalizzato su Compute Engine e configurare una zona di inoltro con DNS privato che inoltra le query DNS ai tuoi domain controller.
-
Hai un utente Active Directory che dispone dell'autorizzazione per unire computer al dominio e può accedere utilizzando il protocollo RDP. Se usi Microsoft Active Directory gestito, puoi utilizzare l'utente
setupadmin
. Per ulteriori informazioni sul provisioning degli account utente di Active Directory, vedi Provisioning degli account utente di Active Directory. - Un progetto Google Cloud e un virtual private cloud (VPC) con connettività ai tuoi controller di dominio Active Directory.
- Una subnet da utilizzare per le istanze VM del cluster di failover di Windows Server.
Prepara il progetto e la rete
Per eseguire il deployment dei gruppi di disponibilità Always On di SQL Server, devi preparare la VPC e il progettoGoogle Cloud per il deployment. Le sezioni seguenti descrivono in dettaglio come eseguire questa operazione.
Configura il progetto e la regione
Per preparare il progetto Google Cloud per il deployment dei gruppi di disponibilità Always On di SQL Server, procedi nel seguente modo:
Nella console Google Cloud , apri Cloud Shell facendo clic sul pulsante Attiva Cloud Shell
.
Inizializza le seguenti variabili.
VPC_NAME=
VPC_NAME
SUBNET_NAME=SUBNET_NAME
Sostituisci quanto segue:
VPC_NAME
: il nome della tua VPCSUBNET_NAME
: il nome della tua subnet
Imposta l'ID progetto predefinito.
gcloud config set project
PROJECT_ID
Sostituisci
PROJECT_ID
con l'ID del tuo progetto Google Cloud .Imposta la regione predefinita.
gcloud config set compute/region
REGION
Sostituisci
REGION
con l'ID della regione in cui vuoi eseguire il deployment.
Crea regole firewall
Per consentire ai client di connettersi a SQL Server e permettere la comunicazione tra i nodi del cluster, devi creare diverse regole firewall. Puoi utilizzare i tag di rete per semplificare la creazione delle regole firewall come segue:
- I due nodi del cluster sono annotati con il tag
wsfc-node
. - Tutti i server (incluso il
witness
) sono annotati con il tagwsfc
.
Per creare regole firewall che utilizzano questi tag di rete, segui questi passaggi:
- Torna alla sessione di Cloud Shell esistente.
Crea regole firewall per consentire il traffico tra i nodi del 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
Crea istanze VM
Crea ed esegui il deployment di due istanze VM per il cluster di failover. In qualsiasi momento, una di queste VM ospita la replica principale del database SQL Server, mentre l'altro nodo ospita la replica secondaria. È necessario che nelle due istanze VM:
- Siano installati il clustering di failover e SQL Server.
- Sia abilitato il supporto di WSFC per Compute Engine.
Utilizzi un'immagine premium SQL Server in cui è preinstallato SQL Server 2022.
Per fornire un voto decisivo e raggiungere il quorum per lo scenario di failover, esegui il deployment di una terza VM che funge da controllo di condivisione file utilizzando i seguenti passaggi:
- Torna alla sessione di Cloud Shell esistente.
Crea uno script specializzato per i nodi WSFC. Questo script installa le funzionalità di Windows necessarie e crea regole firewall per WSFC e 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
Crea le istanze VM. Sulle due VM che fungono da nodi del cluster, collega un disco dati aggiuntivo e attiva il clustering di failover di Windows Server impostando la chiave dei metadati
enable-wsfc
sutrue
: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"Sostituisci ZONE1, ZONE2 e ZONE3 in base alle zone che utilizzi.
Per unire le tre istanze VM ad Active Directory, segui questi passaggi per ciascuna delle tre istanze VM:
Monitora il processo di inizializzazione della VM visualizzando l'output della porta seriale:
gcloud compute instances tail-serial-port-output
NAME
Sostituisci
NAME
con il nome dell'istanza VM.Attendi qualche minuto finché non vedi l'output
Instance setup finished
, poi premi Ctrl+C. A questo punto, l'istanza VM è pronta per essere utilizzata.Crea un nome utente e una password per l'istanza VM.
Connettiti alla VM utilizzando Remote Desktop e accedi con il nome utente e la password creati nel passaggio precedente.
Fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e poi su Windows PowerShell (Amministratore).
Conferma la richiesta di elevazione facendo clic su Sì.
Unisci il computer al dominio Active Directory ed esegui il riavvio.
Add-Computer -Domain
DOMAIN -Restart
Sostituisci
DOMAIN
con il nome DNS del tuo dominio Active Directory.Inserisci le credenziali di un account che dispone delle autorizzazioni per unire una VM al dominio.
Attendi il riavvio della VM. Ora hai unito l'istanza VM ad Active Directory.
Esegui il deployment del cluster di failover
Ora puoi utilizzare le istanze VM per eseguire il deployment di un cluster di failover di Windows Server e SQL Server. Le sezioni seguenti descrivono in dettaglio come eseguire questa operazione.
Prepara SQL Server
Crea un nuovo account utente in Active Directory per SQL Server utilizzando i seguenti i passaggi.
- Connettiti a
node-1
utilizzando Remote Desktop. Accedi con il tuo account utente del dominio. - Fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e poi su Windows PowerShell (Amministratore).
- Conferma la richiesta di elevazione facendo clic su Sì.
Crea un account utente del dominio per SQL Server e l'agente SQL e assegna una password:
$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
Per configurare SQL Server, segui questi passaggi sia su node-1
che su node-2
:
- Apri SQL Server Configuration Manager.
- Nel riquadro di navigazione, seleziona Servizi SQL Server.
- Nell'elenco dei servizi, fai clic con il tasto destro del mouse su SQL Server (MSSQLSERVER) e seleziona Proprietà.
In Accedi come, modifica l'account come segue:
- Nome account:
DOMAIN\sql_server
, doveDOMAIN
è il nome NetBIOS del tuo dominio Active Directory. - Password: inserisci la password che hai scelto in precedenza.
- Nome account:
Fai clic su Ok.
Quando ti viene chiesto di riavviare SQL Server, seleziona Sì.
Ora SQL Server viene eseguito con un account utente del dominio.
Crea condivisioni file
Crea due condivisioni file sull'istanza VM witness
in modo che possa archiviare i backup di SQL Server e fungere da controllo di condivisione file:
- Connettiti a
witness
utilizzando Remote Desktop. Accedi con il tuo account utente del dominio. - Fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e poi su Windows PowerShell (Amministratore).
- Conferma la richiesta di elevazione facendo clic su Sì.
Crea una condivisione file di controllo e concedi a te e ai due nodi del cluster l'accesso alla condivisione file:
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$
Crea un'altra condivisione file per archiviare i backup e concedi a SQL Server l'accesso completo:
New-Item "C:\Backup" –type directory New-SmbShare ` -Name Backup ` -Path "C:\Backup" ` -Description "SQL Backup" ` -FullAccess $env:USERDOMAIN\sql_server
Crea il cluster di failover
Per creare il cluster di failover, segui questi passaggi:
- Torna alla sessione di Remote Desktop su
node-1
. - Fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e poi su Windows PowerShell (Amministratore).
- Conferma la richiesta di elevazione facendo clic su Sì.
Crea un nuovo cluster.
New-Cluster ` -Name sql-cluster ` -Node node-1,node-2 ` -NoStorage ` -ManagementPointNetworkType Distributed
Torna alla sessione PowerShell su
witness
e concedi all'oggetto computer virtuale del cluster l'autorizzazione per accedere alla condivisione file.icacls C:\QWitness\ /grant 'sql-cluster$:(OI)(CI)(M)' Grant-SmbShareAccess ` -Name QWitness ` -AccountName 'sql-cluster$' ` -AccessRight Full ` -Force
Torna alla sessione PowerShell su
node-1
e configura il cluster per utilizzare la condivisione file suwitness
come quorum del cluster.Set-ClusterQuorum -FileShareWitness \\witness\QWitness
Verifica che la creazione del cluster sia riuscita.
Test-Cluster
Potrebbero essere visualizzati alcuni avvisi che puoi ignorare tranquillamente:
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).
Puoi anche avviare lo snap-in Gestione cluster di failover di MMC per esaminare l'integrità del cluster eseguendo
cluadmin.msc
.Se utilizzi Active Directory gestito, aggiungi l'account del computer utilizzato dal cluster Windows al gruppo Cloud Service Domain Join Accounts in modo che possa unire i computer al dominio:
Add-ADGroupMember ` -Identity "Cloud Service Domain Join Accounts" ` -Members sql-cluster$
Attiva i gruppi di disponibilità Always On su entrambi i nodi.
Enable-SqlAlwaysOn -ServerInstance node-1 -Force Enable-SqlAlwaysOn -ServerInstance node-2 -Force
Crea un gruppo di disponibilità
Ora crea un database di esempio bookshelf
, includilo in un nuovo gruppo di disponibilità denominato bookshelf-ag
e configura l'alta affidabilità.
Crea un database
Crea un nuovo database. Ai fini di questo tutorial, non è necessario che il database contenga dati.
- Torna alla sessione di Remote Desktop su
node-1
. - Apri SQL Server Management Studio.
- Nella finestra di dialogo Connettiti al server, verifica che il nome del server sia impostato su
node-1
e seleziona Connetti. - Nel menu, seleziona File > Nuovo > Query con connessione attuale.
Incolla il seguente script SQL nell'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
Lo script crea un nuovo database con una singola tabella ed esegue un backup iniziale in
witness
.Seleziona Esegui per eseguire lo script SQL.
Configura l'alta affidabilità
Ora puoi configurare l'alta affidabilità per il gruppo di disponibilità utilizzando T-SQL o Server Management Studio.
Utilizza T-SQL
Per configurare l'alta affidabilità per il gruppo di disponibilità utilizzando T-SQL, segui questi passaggi:
Connettiti a
node-1
ed esegui lo script seguente per creare il gruppo di disponibilità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] GOConnettiti a
node-2
ed esegui il seguente script.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] GOSu
node-1
, esegui lo script seguente per creare il gruppo di disponibilità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
Connettiti a
node-2
ed esegui lo script seguente per unire la replica secondaria al gruppo di disponibilità e abilitare il seeding automatico.USE master; GO ALTER AVAILABILITY GROUP [bookshelf-ag] JOIN; ALTER AVAILABILITY GROUP [bookshelf-ag] GRANT CREATE ANY DATABASE;
Controlla lo stato del gruppo di disponibilità.
SELECT * FROM sys.dm_hadr_availability_group_states; GO
Il valore di
synchronization_health_desc
dovrebbe essereHEALTHY
.
Utilizza SQL Server Management Studio
Per configurare l'alta affidabilità per il gruppo di disponibilità utilizzando SQL Server Management Studio, segui questi passaggi:
- Nella finestra Esplora oggetti, fai clic con il tasto destro del mouse su Disponibilità elevata Always On e seleziona Creazione guidata nuovo gruppo di disponibilità.
- Nella pagina Specifica opzioni, imposta il nome del gruppo di disponibilità su
bookshelf-ag
e seleziona Avanti. - Nella pagina Seleziona database, seleziona il database
bookshelf
e seleziona Avanti. Nella pagina Specifica repliche, seleziona la scheda Repliche.
- Seleziona Aggiungi replica.
Nella finestra di dialogo Connetti al server, inserisci il nome del server
node-2
e seleziona Connetti.Ora l'elenco delle repliche di disponibilità contiene le istanze SQL Server
node-1
enode-2
.Imposta Modalità di disponibilità su Commit sincrono per entrambe le istanze.
Imposta Failover automatico su Abilitato per entrambe le istanze.
Seleziona Avanti.
Nella pagina Seleziona la sincronizzazione dei dati, seleziona Seeding automatico.
Nella pagina Convalida, verifica che tutti i controlli abbiano esito positivo. Puoi ignorare il controllo relativo al listener del gruppo di disponibilità.
Nella pagina Riepilogo, seleziona Fine.
Nella pagina Risultati, seleziona Chiudi.
Configura un listener DNN per il gruppo di disponibilità
Un listener DNN funge da singolo endpoint per i client SQL Server. Per configurare un listener DNN, segui questi passaggi:
- Torna alla sessione PowerShell su
node-1
. Esegui il seguente script per creare un listener 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 $AgSostituisci
DNN_PORT
con la porta del listener DNN. La porta del listener DNN deve essere configurata con una porta univoca. Per ulteriori informazioni, vedi Considerazioni per la porta.Sostituisci
DNN_NAME
con il nome del listener DNN.Crea regole firewall per la porta del listener DNN sia su
node-1
che sunode-2
.netsh advfirewall firewall add rule name="Allow DNN listener" dir=in action=allow protocol=TCP localport=
DNN_PORT
Testa il failover
Ora sei in grado di verificare se il failover funziona come previsto:
- Torna alla sessione PowerShell su
witness
. Esegui il seguente script.
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 }Sostituisci
DNN_NAME
con il nome del listener DNN eDNN_PORT
con la porta del listener DNN.Ogni 2 secondi, lo script si connette a SQL Server utilizzando il listener del gruppo di disponibilità ed esegue una query sul nome del server.
Lascia in esecuzione lo script.
Torna alla sessione di Remote Desktop su
node-1
per attivare un failover.- In SQL Server Management Studio, vai a Disponibilità elevata Always On > Gruppi di disponibilità > bookshelf-ag (Primary) e fai clic con il tasto destro del mouse sul nodo.
- Seleziona Failover.
- Nella pagina Seleziona nuova replica primaria, verifica che
node-2
sia selezionato come nuova replica primaria e che nella colonna Preparazione al failover sia indicatoNo data loss
. Quindi, seleziona Avanti. - Nella pagina Connetti alla replica, seleziona Connetti.
- Nella finestra di dialogo Connetti al server, verifica che il nome del server sia
node-2
e fai clic su Connetti. - Seleziona Avanti e poi Fine.
- Nella pagina Risultati, verifica che il failover sia andato a buon fine.
Torna alla sessione PowerShell su
witness
.Osserva l'output dello script in esecuzione e nota che il nome del server cambia da
node-1
anode-2
a seguito del failover.Per interrompere lo script, premi
Ctrl+C
.
Esegui la pulizia
Al termine del tutorial, puoi liberare spazio eliminando le risorse che hai creato in modo che non utilizzino più la quota e non generino addebiti. Le seguenti sezioni descrivono come eliminare o disattivare queste risorse.
Elimina il progetto
Il modo più semplice per eliminare la fatturazione è eliminare il progetto creato per il tutorial.
Per eliminare il progetto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.