Configurazione di un'istanza del cluster di failover SQL Server che utilizza dischi Hyperdisk bilanciato ad alta affidabilità in modalità multi-writer


Un'istanza del cluster di failover (FCI) di Microsoft SQL Server è una singola istanza SQL Server di cui viene eseguito il deployment su più nodi del cluster di failover di Windows Server (WSFC). In qualsiasi momento, uno dei nodi del cluster ospita attivamente l'istanza SQL. In caso di errore, WSFC trasferisce automaticamente la proprietà delle risorse dell'istanza a un altro nodo.

La FCI di SQL Server richiede che i dati si trovino in uno spazio di archiviazione condiviso in modo che sia possibile accedervi da tutti i nodi WSFC. Questa guida descrive come eseguire il deployment di un'istanza di cluster di failover di SQL Server 2022 e utilizzare Hyperdisk bilanciato ad alta affidabilità in modalità multi-writer come spazio di archiviazione condiviso regionale (multi-zona).

Architettura

Architettura

L'articolo presuppone che tu abbia già eseguito il deployment di Active Directory su Google Cloud e che tu abbia conoscenze di base di SQL Server, Active Directory e Compute Engine.

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.
  • Eseguire il deployment di un FCI di SQL Server sul WSFC.
  • Configurare un bilanciatore del carico o un nome di rete distribuito (DNN) per instradare il traffico al gruppo di disponibilità con SQL Server.
  • Verificare il funzionamento del cluster 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 questa guida, devi disporre di quanto segue:

Assicurati di aver esaminato i limiti dei volumi Hyperdisk in modalità multi-writer e di aver scelto una regione in cui è disponibile Hyperdisk bilanciato ad alta affidabilità

Per completare la guida, hai bisogno anche di un progetto Google Cloud :

  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.

Al termine di questo tutorial, puoi evitare l'addebito di ulteriori costi eliminando le risorse create.

Preparazione del progetto e della rete

Per preparare il progetto Google Cloud e il VPC per il deployment della FCI di SQL Server, segui questi passaggi:

  1. Nella console Google Cloud , apri Cloud Shell facendo clic sul pulsante Attiva Cloud Shell Attiva Cloud Shell..

    Vai alla console Google Cloud

  2. Inizializza le seguenti variabili:

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    

    Dove:

    • VPC_NAME: il nome del tuo VPC
    • SUBNET_NAME: il nome della tua subnet
  3. Imposta l'ID progetto predefinito:

    gcloud config set project PROJECT_ID
    

    Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud .

  4. 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, ai nodi di comunicare tra loro e al bilanciatore del carico di eseguire controlli di integrità, devi creare diverse regole firewall. Per semplificare la creazione di queste regole firewall, utilizza i tag di rete:

  • I due nodi WSFC sono annotati con il tag wsfc-node.
  • Tutti i server (incluso il server di controllo) sono annotati con il tag wsfc.

Crea regole firewall che utilizzano questi tag di rete:

  1. Torna alla sessione di Cloud Shell esistente.
  2. Crea regole firewall per i nodi 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. Crea una regola firewall che consenta i controlli di integrità dagli intervalli IP dei prober Google Cloud : (non necessario con una configurazione 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
    

Crea istanze VM

Ora esegui il deployment di due istanze VM per il cluster di failover. In qualsiasi momento, solo una di queste VM funge da nodo FCI attivo, mentre l'altro nodo funge da nodo di failover. Le due istanze VM devono avere:

Utilizzi un'immagine premium SQL Server con SQL Server 2022 preinstallato.

Per fornire un voto decisivo e raggiungere il quorum per lo scenario di failover, esegui il deployment di una terza VM che funge da Domain Controller e da controllo di condivisione file.

  1. Torna alla sessione di Cloud Shell esistente.

  2. Crea uno script di specializzazione per i nodi WSFC. Lo script installa la funzionalità Windows necessaria e crea le 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 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. Crea le istanze VM e attiva l'agente di clustering di failover di Windows Server sui nodi WSFC impostando la chiave dei metadati enable-wsfc su 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. Per unire le tre istanze VM ad Active Directory, segui questi passaggi per ciascuna delle tre istanze VM:

    1. 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 circa 3 minuti finché non viene visualizzato l'output Instance setup finished, quindi premi Ctrl+C. A questo punto, l'istanza VM è pronta per essere utilizzata.

    2. Crea un nome utente e una password per l'istanza VM.

    3. Connettiti alla VM utilizzando Remote Desktop e accedi con il nome utente e la password creati nel passaggio precedente.

    4. Fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e poi su Windows PowerShell (Amministratore).

    5. Conferma la richiesta di elevazione facendo clic su .

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

      Attendi circa 1 minuto per il completamento del riavvio.

Crea dischi Hyperdisk bilanciato ad alta affidabilità in modalità multi-writer

Ora devi creare un disco Hyperdisk bilanciato ad alta affidabilità in modalità multi-writer e collegarlo a entrambi i nodi WSFC. Uno dei vantaggi di Hyperdisk è la possibilità di impostare le IOPS e il throughput in modo che corrispondano alle esigenze dell'applicazione. Per saperne di più, consulta Informazioni su Hyperdisk bilanciato ad alta affidabilità.

  1. Torna alla sessione di Cloud Shell esistente.
  2. Crea un disco Hyperdisk bilanciato ad alta affidabilità:

    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. Collega il disco a node-1:

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

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

Prenota gli indirizzi IP del cluster

Ora devi prenotare due indirizzi IP statici nel tuo VPC. Un indirizzo IP viene utilizzato come indirizzo IP del cluster WSFC, l'altro viene utilizzato dal bilanciatore del carico interno.

  1. Prenota un IP statico per il bilanciatore del carico interno e acquisisci l'indirizzo in una nuova variabile di ambiente denominata 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"
    

    Prendi nota dell'indirizzo IP, ti servirà più avanti.

  2. Prenota un altro indirizzo IP statico da utilizzare come IP del cluster: (non necessario con una configurazione 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"
    

    Prendi nota dell'indirizzo IP, ti servirà più avanti.

Il progetto e il VPC sono ora pronti per il deployment di WSFC e SQL Server.

Crea un controllo di condivisione file

Per preparare witness a fungere da controllo di condivisione file, crea una condivisione file e concedi a te e ai due nodi WSFC l'accesso alla condivisione file:

  1. Connettiti a witness utilizzando Remote Desktop. Accedi con il tuo account utente di dominio.
  2. Fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e poi su Windows PowerShell (Amministratore).
  3. Conferma la richiesta di elevazione facendo clic su .
  4. Crea la cartella di controllo e condividila:

    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
    

Deployment del cluster di failover

Ora puoi utilizzare le istanze VM per eseguire il deployment di un WSFC e di SQL Server.

Esegui il deployment di WSFC

Ora puoi creare il cluster di failover:

  1. Connettiti a node-1 utilizzando Remote Desktop. Accedi con il tuo account utente di dominio.
  2. Fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e poi su Windows PowerShell (Amministratore).
  3. Conferma la richiesta di elevazione facendo clic su .
  4. Crea un nuovo cluster:

    • Per la configurazione del bilanciatore del carico
    New-Cluster `
      -Name sql-cluster `
      -Node node-1,node-2 `
      -NoStorage `
      -StaticAddress CLUSTER_ADDRESS
    

    Sostituisci CLUSTER_ADDRESS con l'indirizzo IP del cluster che hai creato in precedenza.

    • Per la configurazione DNN
    New-Cluster `
      -Name sql-cluster `
      -Node node-1,node-2 `
      -NoStorage `
      -ManagementPointNetworkType Distributed
    
  5. 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
    
  6. Torna alla sessione PowerShell su node-1 e configura il cluster per utilizzare la condivisione file su witness come quorum del cluster:

    Set-ClusterQuorum -FileShareWitness \\witness\QWitness
    
  7. Verifica che il cluster sia stato creato correttamente:

    Test-Cluster
    

    Potresti visualizzare alcuni avvisi che possono essere ignorati:

    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.

  8. Se utilizzi Active Directory gestito, aggiungi l'account del computer utilizzato da WSFC 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$
    

Aggiungi il disco del cluster

Ora devi inizializzare il disco Hyperdisk bilanciato ad alta affidabilità condiviso che hai creato in precedenza e aggiungerlo al cluster:

  1. Torna alla sessione PowerShell su node-1.
  2. Inizializza il disco Hyperdisk bilanciato ad alta affidabilità:

    $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. Sul disco, crea una nuova partizione che utilizza il file system NTFS e formatta il disco con una dimensione del blocco di 64 KB:

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

    Get-ClusterAvailableDisk | Add-ClusterDisk
    

    Il disco viene visualizzato automaticamente su node-2 poiché il disco Hyperdisk bilanciato ad alta affidabilità sottostante è collegato a entrambe le istanze VM.

  5. Apri lo snap-in Gestione cluster di failover di MMC:

    cluadmin.msc
    

Test del failover del disco

Facoltativamente, ora puoi verificare se il failover del disco funziona correttamente:

  1. Connettiti a node-2 utilizzando Remote Desktop. Accedi con il tuo account utente di dominio.
  2. Fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e seleziona Esegui.
  3. Inserisci cluadmin.msc e seleziona Ok.
  4. Nel riquadro della finestra a sinistra, vai a Gestione cluster di failover > sql-cluster > Archiviazione > Dischi.

    Dovresti vedere un disco denominato Cluster Disk 1 con nodo Proprietario impostato su node-1.

  5. Torna a Cloud Shell e reimposta la VM node-1 per simulare un failover:

    gcloud compute instances reset node-1
    
  6. Torna a Gestione cluster di failover su node-2.

  7. Controlla lo stato del disco premendo ripetutamente F5 per aggiornare la visualizzazione.

    Dopo circa 30 secondi, il nodo proprietario dovrebbe passare automaticamente a node-2.

Rimuovi l'installazione predefinita di SQL Server

Ora rimuovi l'installazione predefinita di SQL Server dai due nodi e sostituiscila con una nuova configurazione FCI.

Per ciascuno dei due nodi WSFC, node-1 e node-2, esegui questi passaggi:

  1. Fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e poi su Windows PowerShell (Amministratore).
  2. Conferma la richiesta di elevazione facendo clic su .
  3. Rimuovi l'istanza SQL Server predefinita:

    C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
    
  4. Rimuovi il driver Microsoft OLE:

    Get-Package -Name "Microsoft OLE*" | Uninstall-Package -Force
    
  5. Rimuovi il driver Microsoft ODBC:

    Get-Package -Name "Microsoft ODBC*" | Uninstall-Package -Force
    
  6. Riavvia il computer:

    Restart-Computer
    
  7. Attendi circa 1 minuto per il completamento del riavvio.

Installa la FCI di SQL Server

Prima di installare la nuova configurazione FCI, verifica che node-1 sia il nodo attivo nel cluster:

  1. Riconnettiti a node-1 utilizzando Remote Desktop e accedi con il tuo utente di dominio.
  2. Fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e seleziona Esegui.
  3. Inserisci cluadmin.msc e seleziona Ok.
  4. Nel riquadro della finestra a sinistra, vai a Gestione cluster di failover > sql-cluster.

    Verifica che il server host attuale sia impostato su node-1.

    Se il server host attuale è impostato su node-2, fai clic con il tasto destro del mouse su sql-cluster nel riquadro della finestra a sinistra e seleziona Altre azioni > Sposta risorse principali cluster > Seleziona nodo… > node-1 e fai clic su Ok.

  5. Nel riquadro della finestra a sinistra, vai a Gestione cluster di failover > sql-cluster > Archiviazione > Dischi.

    Verifica che il nodo proprietario di Cluster Disk 1 sia impostato su node-1.

    Se il nodo proprietario è impostato su node-2, fai clic su Sposta spazio di archiviazione disponibile > Seleziona nodo… > node-1 dal menu Azioni a destra e seleziona Ok.

Ora crea una nuova installazione del cluster di failover SQL Server su node-1:

  1. Fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e poi su Windows PowerShell (Amministratore).
  2. Conferma la richiesta di elevazione facendo clic su .
  3. Crea un account utente di 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 Agent and SQL Admin account." `
      -AccountPassword $Credential.Password `
      -Enabled $true -PasswordNeverExpires $true
    
  4. Avvia la configurazione di SQL Server:

    & c:\sql_server_install\setup.exe
    
  5. Nel menu a sinistra, seleziona Installazione.

  6. Seleziona Installazione nuovo cluster di failover di SQL Server.

  7. Nella pagina Edizione, seleziona Ho solo una licenza SQL Server e poi Avanti.

  8. Nella pagina Condizioni di licenza rivedi i termini e, se li accetti, seleziona Avanti.

  9. Nella pagina Microsoft Update seleziona Avanti per avviare l'installazione.

  10. Nella pagina Installa regole del cluster di failover, viene visualizzato un avviso Avvisi di verifica del cluster MSCS e Windows Firewall. Puoi ignorare questi avvisi e selezionare Avanti.

  11. Nella pagina Selezione delle funzionalità, seleziona Servizi del motore di database e quindi Avanti.

  12. Nella pagina Configurazione istanza, inserisci sql come nome di rete e seleziona Avanti.

  13. Nella pagina Gruppo di risorse cluster, mantieni le impostazioni predefinite e seleziona Avanti.

  14. Nella pagina Selezione disco del cluster, seleziona Cluster Disk 1 e quindi Avanti.

  15. Nella pagina Configurazione rete cluster, configura le seguenti impostazioni, quindi seleziona Avanti:

    • DHCP: vuoto
    • Indirizzo IP: inserisci l'indirizzo IP del bilanciatore del carico interno.
  16. Nella pagina Configurazione server, configura le seguenti impostazioni sia per SQL Server Agent che per Motore di database di SQL Server:

    • Nome account: DOMAIN\sql_server, dove DOMAIN è il nome NetBIOS del tuo dominio Active Directory
    • Password: inserisci la password che hai creato in precedenza
  17. Seleziona la scheda Regole di confronto scegli e le regole di confronto che vuoi utilizzare. Quindi, fai clic su Avanti.

  18. Nella pagina Configurazione motore di database, seleziona Aggiungi utente corrente per designare l'utente corrente come amministratore di SQL Server. Poi seleziona Avanti.

  19. Nella pagina Inizio installazione, rivedi le impostazioni e poi seleziona Installa.

  20. Al termine dell'installazione, seleziona Chiudi.

Ora aggiungi node-2 al cluster di failover SQL Server:

  1. Connettiti a node-2 utilizzando Remote Desktop e accedi con il tuo utente di dominio.
  2. Fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e poi su Windows PowerShell (Amministratore).
  3. Conferma la richiesta di elevazione facendo clic su .
  4. Avvia la configurazione di SQL Server:

    & c:\sql_server_install\setup.exe
    
  5. Nel menu a sinistra, seleziona Installazione.

  6. Seleziona Aggiungi nodo a cluster di failover di SQL Server.

  7. Segui le istruzioni dell'installazione guidata e accetta le impostazioni predefinite fino a raggiungere la pagina Account di servizio.

  8. Nella pagina Account di servizio, inserisci la password creata in precedenza sia per SQL Server Agent sia per Motore di database di SQL Server. Poi seleziona Avanti.

  9. Nella pagina Inizio installazione, rivedi le impostazioni e poi seleziona Installa.

  10. Al termine dell'installazione, seleziona Chiudi.

Configura i controlli di integrità

Come passaggio finale, configura il cluster in modo da esporre un endpoint di controllo di integrità che possa essere utilizzato da un bilanciatore del carico interno:

  1. Torna alla sessione PowerShell su node-2
  2. Inizializza una variabile con l'indirizzo IP del bilanciatore del carico.

    $LoadBalancerIP = 'IP_ADDRESS'
    

    Sostituisci IP_ADDRESS con l'indirizzo IP dell'indirizzo wsfc che hai prenotato in precedenza.

  3. Configura il cluster di failover in modo che risponda al servizio di controllo di integrità:

    $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. Riavvia la risorsa del cluster:

    $SqlIpAddress | Stop-ClusterResource
    $SqlIpAddress | Start-ClusterResource
    
  5. Riavvia il gruppo del cluster:

    $SqlGroup | Stop-ClusterGroup
    $SqlGroup | Start-ClusterGroup
    

Crea un bilanciatore del carico interno

Per fornire un singolo endpoint per i client SQL Server, ora devi eseguire il deployment di un bilanciatore del carico interno. Il bilanciatore del carico utilizza un controllo di integrità che garantisce che il traffico venga indirizzato al nodo attivo del WSFC.

  1. Torna alla sessione di Cloud Shell esistente.
  2. Crea un gruppo di istanze non gestite e aggiungi i due nodi al gruppo:

    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. Crea un controllo di integrità utilizzabile dal bilanciatore del carico per determinare quale sia il nodo attivo.

    gcloud compute health-checks create tcp wsfc-healthcheck \
      --check-interval="2s" \
      --healthy-threshold=1 \
      --unhealthy-threshold=2 \
      --port=59997 \
      --timeout="1s"
    

    Il controllo di integrità utilizza la porta 59997, ovvero la porta configurata in precedenza come ProbePort per l'indirizzo IP del cluster WSFC.

  4. Crea un servizio di backend e aggiungi il gruppo di istanze:

    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. Crea il bilanciatore del carico 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
    

Configura una risorsa DNN e un nome DNS DNN

Come il bilanciatore del carico interno, la risorsa DNN funge da singolo gateway per i client SQL Server. Durante i failover, il cluster instrada automaticamente il traffico al nodo FCI SQL Server attivo. I client si connettono alla FCI SQL Server con il nome DNS.

  1. Torna alla sessione PowerShell su node-1.
  2. Esegui lo script per creare la risorsa DNN

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

Test del cluster di failover

Hai completato l'installazione del cluster di failover, ma devi ancora testare se il cluster funziona correttamente.

Prepara un client

Crea una nuova istanza VM che puoi utilizzare per connetterti al cluster di failover:

  1. Torna alla sessione di Cloud Shell esistente.
  2. Crea una nuova istanza 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. Monitora il processo di inizializzazione della VM visualizzando l'output della porta seriale:

    gcloud compute instances tail-serial-port-output sqlclient
    

    Attendi circa 3 minuti finché non viene visualizzato il messaggio di completamento della configurazione dell'istanza, quindi premi Ctrl+C. A questo punto, l'istanza VM è pronta per essere utilizzata.

  4. Crea un nome utente e una password per l'istanza VM.

  5. Connettiti alla VM utilizzando Remote Desktop e accedi con il nome utente e la password creati nel passaggio precedente.

  6. Fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e poi su Windows PowerShell (Amministratore).

  7. Conferma la richiesta di elevazione facendo clic su .

  8. Unisci il computer al dominio Active Directory:

    Add-Computer -Domain DOMAIN
    

    Sostituisci DOMAIN con il nome DNS del tuo dominio Active Directory.

  9. Riavvia il computer:

    Restart-Computer
    

    Attendi circa 1 minuto per il completamento del riavvio.

Esegui il test

Utilizza la VM sqlclient per verificare la connessione al cluster di failover e per testare che il failover funzioni correttamente:

  1. Connettiti a sqlclient utilizzando Remote Desktop e accedi con il tuo utente di dominio.
  2. Fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e poi su Windows PowerShell.
  3. Connettiti al cluster SQL Server utilizzando il nome di rete sql ed esegui una query sulla tabella 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"
    

    Sostituisci SQL_SERVER_NAME con sql per la configurazione del bilanciatore del carico o con fcidnn per la configurazione DNN.

    L'output dovrebbe essere simile al seguente:

    NodeName                       status      status_description is_current_owner
    ------------------------------ ----------- ------------------ ----------------
    NODE-1                                   0 up                                1
    NODE-2                                   0 up                                0
    
    (2 rows affected)
    

    Nota che node-1 è il proprietario attuale della risorsa del cluster di failover SQL Server.

  4. Torna a Cloud Shell e arresta la VM node-1 per testare lo scenario di failover.

    gcloud compute instances stop node-1
    
  5. Ripeti la query:

    & "$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"
    

    Sostituisci SQL_SERVER_NAME con sql per la configurazione del bilanciatore del carico o con fcidnn per la configurazione DNN.

    L'output ora dovrebbe essere simile al seguente:

    NodeName                       status      status_description is_current_owner
    ------------------------------ ----------- ------------------ ----------------
    NODE-1                                   1 down                              0
    NODE-2                                   0 up                                1
    
    (2 rows affected)
    

    Nota come, nonostante la perdita di node-1, la query va a buon fine e mostra che node-2 è ora il proprietario attuale del cluster di failover.

Esegui la pulizia

Al termine del tutorial, puoi eliminare le risorse che hai creato in modo che smettano di utilizzare la quota e di generare addebiti. Le seguenti sezioni descrivono come eliminare o disattivare queste risorse.

Eliminazione del progetto

Il modo più semplice per eliminare la fatturazione è quello di eliminare il progetto creato per il tutorial.

Per eliminare il progetto:

  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.

Passaggi successivi