Configurazione di un'istanza di un cluster di failover SQL Server che utilizza dischi permanenti in modalità multi-writer


Istanze cluster di failover sempre attivo di Microsoft SQL Server (FCI) consente di eseguire una singola istanza SQL Server su più cluster di failover di Windows Server (WSFC). In qualsiasi momento, uno dei nodi del cluster ospita attivamente SQL. In caso di errore, WSFC trasferisce automaticamente la proprietà delle risorse dell'istanza su un altro nodo.

SQL Server FCI richiede che i dati si trovino nello spazio di archiviazione condiviso a cui si accede in tutti i nodi WSFC. Questa guida descrive come eseguire il deployment dell'istanza del cluster di failover SQL Server 2022 e usare i dischi permanenti modalità multi-writer come spazio di archiviazione condiviso.

In un ambiente on-premise, puoi consentire a WSFC di eseguire annunci ARP in caso di failover per notificare all'apparecchiatura di rete la modifica dell'indirizzo IP. Google Cloud, tuttavia, ignora gli annunci ARP. Di conseguenza, devi implementare una delle due opzioni seguenti:

Architettura

Architettura

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

Obiettivi

  • Esegui il deployment di una WSFC che comprende due istanze VM SQL Server e una terza istanza VM che funge da testimone della condivisione dei file.
  • Esegui il deployment di un FCI di SQL Server in WSFC.
  • Configura un bilanciatore del carico o un nome di rete distribuita (DNN) per instradare il traffico al gruppo di disponibilità con SQL Server.
  • Verifica che il cluster stia funzionando 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, ti occorrono:

Assicurati di aver esaminato le limitazioni relative ai dischi permanenti in modalità multi-writer e seleziona una zona in cui sono disponibili dischi permanenti in modalità multi-writer.

Per completare la guida, devi anche avere 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.

    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.

Al termine di questo tutorial, puoi evitare la fatturazione continua eliminando il le risorse che hai creato. Per ulteriori informazioni, consulta la sezione Pulizia.

Preparazione del progetto e della rete

Per preparare il progetto Google Cloud e il VPC per il deployment di SQL Server FCI: procedi nel seguente modo:

  1. Nella console Google Cloud, apri Cloud Shell facendo clic 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: nome del tuo VPC
    • SUBNET_NAME: nome della 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 zona predefinita:

    gcloud config set compute/zone ZONE
    

    Sostituisci ZONE con l'ID della zona in cui vuoi eseguire il deployment.

Crea regole firewall

Per consentire ai client di connettersi a SQL Server, consenti la comunicazione tra WSFC nodi e per abilitare il bilanciatore del carico eseguire controlli di integrità, devi creare varie regole firewall. Per semplificare la creazione di questi regole firewall, utilizza i tag di rete:

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

Crea regole firewall che utilizzino questi tag di rete:

  1. Torna alla sessione di Cloud Shell esistente.
  2. Crea le 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à dal Intervalli IP dei probe di 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
    
di Gemini Advanced.

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 pubblica come nodo di failover. Le due istanze VM devono:

  • trovarsi nella stessa zona in modo che possano accedere agli stessi dischi permanenti.
  • avere il clustering di failover di Windows Server e SQL Server installati.
  • disporre del supporto per WSFC di Compute Engine in un bucket in cui è abilitato il controllo delle versioni.

Utilizzi un'immagine premium di SQL Server su cui è preinstallato SQL Server 2022.

Per offrire un voto alla pari e raggiungere il quorum per lo scenario di failover, esegui il deployment di una terza VM che funge da testimone della condivisione file.

  1. Torna alla sessione di Cloud Shell esistente.
  2. Crea un criterio di posizionamento distribuito che distribuisce i nodi WSFC nell'infrastruttura di data center sottostante. in modo da non condividere lo stesso host o lo stesso sistema di alimentazione:

    ZONE=$(gcloud config get-value compute/zone)
    gcloud compute resource-policies create group-placement spread-placement \
      --availability-domain-count 2 \
      --region ${ZONE::-2}
    
  3. Crea uno script specializzato per i nodi WSFC. Lo script installa la funzionalità di Windows necessaria 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 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
    
  4. crea le istanze VM e abilita il clustering di failover di Windows Server agente sui nodi WSFC impostando la chiave di metadati enable-wsfc su true:

    MACHINE_TYPE=n2-standard-8
    
    gcloud compute instances create node-1 \
      --resource-policies spread-placement \
      --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" \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create node-2 \
      --resource-policies spread-placement \
      --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" \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create "witness" \
      --machine-type n2-standard-2 \
      --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"
    
  5. Per unire le 3 istanze VM ad Active Directory, segui questi passaggi per ciascuna le 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. Creare un nome utente e una password per l'istanza VM

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

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

    5. Conferma la richiesta di elevazione facendo clic su .

    6. Unisci il computer al tuo dominio Active Directory e riavvia:

      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.

Creazione di dischi permanenti in modalità multi-writer

Ora crei tre dischi permanenti in modalità multi-writer e li colleghi ciascuno a su entrambi i nodi WSFC.

  1. Torna alla sessione di Cloud Shell esistente.
  2. Crea tre dischi permanenti condivisi:

    PD_SIZE=50
    
    gcloud beta compute disks create datadisk-1 \
      --size $PD_SIZE \
      --type pd-ssd \
      --multi-writer \
      --zone $(gcloud config get-value compute/zone)
    gcloud beta compute disks create datadisk-2 \
      --size $PD_SIZE \
      --type pd-ssd \
      --multi-writer \
      --zone $(gcloud config get-value compute/zone)
    gcloud beta compute disks create datadisk-3 \
      --size $PD_SIZE \
      --type pd-ssd \
      --multi-writer \
      --zone $(gcloud config get-value compute/zone)
    
  3. Collega i dischi a node-1:

    gcloud compute instances attach-disk node-1 --disk datadisk-1
    gcloud compute instances attach-disk node-1 --disk datadisk-2
    gcloud compute instances attach-disk node-1 --disk datadisk-3
    
  4. Collega i dischi a node-2:

    gcloud compute instances attach-disk node-2 --disk datadisk-1
    gcloud compute instances attach-disk node-2 --disk datadisk-2
    gcloud compute instances attach-disk node-2 --disk datadisk-3
    

Prenota indirizzi IP del cluster

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

  1. Prenota un IP statico per il bilanciatore del carico interno e acquisisci l'indirizzo una nuova variabile di ambiente denominata LOADBALANCER_ADDRESS:

    gcloud compute addresses create wsfc \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --subnet $SUBNET_NAME
    
    LOADBALANCER_ADDRESS=$(gcloud compute addresses describe wsfc \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --format=value\(address\)) && \
    echo "Load Balancer IP: $LOADBALANCER_ADDRESS"
    

    Prendi nota dell'indirizzo IP, che ti servirà in un secondo momento.

  2. Prenota un altro indirizzo IP statico che utilizzi come IP del cluster: (non necessario con una configurazione DNN)

    gcloud compute addresses create wsfc-cluster \
      --subnet $SUBNET_NAME \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) && \
    CLUSTER_ADDRESS=$(gcloud compute addresses describe wsfc-cluster \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --format=value\(address\)) && \
    echo "Cluster IP: $CLUSTER_ADDRESS"
    

    Prendi nota dell'indirizzo IP, che ti servirà in un secondo momento.

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

Crea una condivisione file di test

Per preparare witness a fungere da testimone della condivisione file, crea una condivisione file e concedi e ai due nodi WSFC accedono alla condivisione file:

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

    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$
    

Deployment del cluster di failover

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

Esegui il deployment di WSFC

Ora è tutto pronto per creare il cluster di failover:

  1. Connettiti a node-1 utilizzando Remote Desktop. Accedi con l'account utente del tuo dominio.
  2. Fai clic con il pulsante destro del mouse sul pulsante Start (o premi Win+X) e fai clic 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 il giorno witness e concedi la oggetto informatico dell'autorizzazione del cluster 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 di cluster:

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

    Test-Cluster
    

    Potresti visualizzare alcuni avvisi che puoi tranquillamente ignorare:

    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 snapshot MMC del gestore cluster di failover per esaminare l'integrità del cluster eseguendo cluadmin.msc.

  8. Se utilizzi Managed AD, aggiungi l'account computer utilizzato da WSFC alla Account di join agli account del dominio Cloud Service in modo che possa unirsi ai computer al dominio:

    Add-ADGroupMember `
      -Identity "Cloud Service Domain Join Accounts" `
      -Members sql-cluster$
    

Crea un pool di archiviazione

Ora creerai un pool di archiviazione che combina i tre dischi permanenti che hai creato e utilizzare il pool di archiviazione per creare un volume condiviso del cluster:

  1. Torna alla sessione PowerShell il giorno node-1.
  2. Crea un nuovo pool di archiviazione che utilizza i tre dischi permanenti:

    $NodeName = [System.Net.Dns]::GetHostName()
    
    $ClusterDisks = Get-PhysicalDisk -CanPool $True |
      Where-Object { ($_ |
        Get-PhysicalDiskStorageNodeView |
        Select-Object -Property StorageNodeObjectId) -like ('*' + $NodeName + '*') }
    
    $Pool = New-StoragePool `
      -StorageSubsystemFriendlyName 'Clustered*' `
      -FriendlyName FciPool `
      -PhysicalDisks $ClusterDisks `
      -ResiliencySettingNameDefault Simple `
      -Verbose
    
  3. Nel pool di archiviazione, crea un nuovo volume che utilizzi il cluster condiviso con volumi di ReFS e con dimensioni del cluster da 64 kB:

    $Pool | New-Volume `
      -FriendlyName FciVolume `
      -FileSystem CSVFS_ReFS `
      -Size 100GB `
      -AllocationUnitSize 65536
    

    Il volume viene visualizzato automaticamente su node-2 poiché l'elemento permanente sottostante e i dischi permanenti sono collegati a entrambe le istanze VM.

  4. Apri lo snapshot MMC Gestione cluster di failover:

    cluadmin.msc
    
  5. Nel riquadro a sinistra, vai a Gestione cluster di failover > SQL-cluster > Spazio di archiviazione > Dischi.

  6. Fai clic con il pulsante destro del mouse su Disco virtuale del cluster (FciVolume) e seleziona Rimuovi dai volumi condivisi del cluster.

  7. Seleziona Disco virtuale cluster (FciVolume).

  8. Nella scheda Volumi in basso, fai clic con il pulsante destro del mouse sul volume e seleziona Cambia lettera unità.

  9. Seleziona la lettera dell'unità D e fai clic su OK.

Test del failover del pool di archiviazione

Facoltativamente, puoi verificare se il failover del pool di archiviazione funziona correttamente:

  1. Connettiti a node-2 utilizzando Remote Desktop. Accedi con l'account utente del tuo 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 a sinistra della finestra, vai a Gestore di cluster di failover > SQL-cluster > Spazio di archiviazione > Piscine.

    Dovresti vedere un pool denominato Pool di cluster 1 con Nodo proprietario impostato su node-1.

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

    gcloud compute instances reset node-1
    
  6. Torna al Gestione cluster di failover in data node-2.

  7. Osserva lo stato del pool di archiviazione premendo ripetutamente F5 per aggiornare la visualizzazione.

    Dopo circa 30 secondi, il nodo del 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 sostituisci con una nuova configurazione FCI.

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

  1. Fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e fai clic 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 driver ODBC Microsoft:

    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 SQL Server FCI

Prima di installare la nuova configurazione FCI, verifica che node-1 sia 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 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 a sinistra della finestra e seleziona Altre azioni > Sposta le risorse principali del cluster > Seleziona nodo... > node-1 e fai clic su OK.

  5. Nel riquadro a sinistra, vai a Gestione cluster di failover > SQL-cluster > Spazio di archiviazione > Piscine.

    Verifica che il nodo del proprietario del Pool di cluster 1 sia impostato su node-1.

    Se il nodo del proprietario è impostato su node-2, fai clic con il tasto destro del mouse sul pool, seleziona Sposta > Seleziona nodo > node-1 e fai clic su OK.

Ora crei 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 fai clic Windows PowerShell (amministratore).
  2. Conferma la richiesta di elevazione facendo clic su .
  3. Creare un account utente di dominio per SQL Server e l'agente SQL e assegnare 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 Nuova installazione del cluster di failover SQL Server

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

  8. Nella pagina Termini di licenza, leggi i termini e, se li accetti, seleziona Avanti.

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

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

  11. Nella pagina Feature Selection (Selezione caratteristiche), seleziona Database Engine Services (Servizi del motore del database) e seleziona Next (Avanti).

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

  13. Nella pagina Gruppo di risorse del cluster, mantieni i valori predefiniti e seleziona Avanti.

  14. Nella pagina Selezione disco cluster, seleziona Disco virtuale cluster (FciVolume) e seleziona Avanti.

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

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

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

  18. Nella pagina Configurazione del motore del database, seleziona Aggiungi utente corrente a designa l'utente corrente come amministratore SQL Server. Quindi, seleziona Avanti.

  19. Nella pagina Pronto per l'installazione, rivedi le impostazioni e 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 pulsante destro del mouse sul pulsante Start (o premi Win+X) e fai clic 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 un cluster di failover 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 il Motore di database SQL Server. Quindi, seleziona Avanti.

  9. Nella pagina Pronto per l'installazione, rivedi le impostazioni e seleziona Installa.

  10. Al termine dell'installazione, seleziona Chiudi.

Configura i controlli di integrità

Come ultimo passaggio, configura il cluster per esporre un endpoint del controllo di integrità può essere utilizzato da un bilanciatore del carico interno:

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

    $LoadBalancerIP = 'IP_ADDRESS'
    

    Sostituisci IP_ADDRESS con l'indirizzo IP di 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 di cluster:

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

Crea un bilanciatore del carico interno

Per fornire un singolo endpoint per i client SQL Server, ora esegui il deployment di un bilanciatore del carico interno. Il bilanciatore del carico utilizza un controllo di integrità per garantire che il traffico venga indirizzato il nodo attivo della 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
    gcloud compute instance-groups unmanaged add-instances wsfc-group --instances node-1,node-2
    
  3. Crea un controllo di integrità utilizzabile dal bilanciatore del carico per determinare quale 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à verifica la porta 59997, ovvero quella che hai usato in precedenza configurato 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 $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --health-checks wsfc-healthcheck \
      --protocol tcp
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group \
      --instance-group-zone $(gcloud config get-value compute/zone) \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev)
    
  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 $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --backend-service wsfc-backend
    

Configurare una risorsa DNN e un nome DNS DNN

Analogamente al bilanciatore del carico interno, la risorsa DNN funge da singolo gateway per i client SQL Server. Durante i failover, il cluster instrada il traffico al nodo FCI attivo di SQL Server senza soluzione di continuità. I client si connettono al FCI di SQL Server con il nome DNS.

  1. Torna alla sessione PowerShell il giorno 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 per assicurarti che il cluster funzioni correttamente.

Prepara un cliente

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 tre minuti finché non viene visualizzata la configurazione dell'istanza di output completata, quindi premi Ctrl+C. A questo punto, l'istanza VM è pronta per essere utilizzata.

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

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

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

  7. Conferma la richiesta di elevazione facendo clic su .

  8. Unisci il computer al tuo 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 possibilità di connetterti al cluster di failover per verificare 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 pulsante destro del mouse sul pulsante Start (o premi Win+X) e fai clic su Windows PowerShell.
  3. Connettiti al cluster SQL Server utilizzando il nome di rete sql ed esegui una query 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 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)
    

    Tieni presente che node-1 è l'attuale proprietario della risorsa del cluster di failover SQL Server.

  4. Torna a Cloud Shell e disattiva la VM del nodo 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 fcidnn per la configurazione DNN.

    L'output dovrebbe avere ora il seguente aspetto:

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

    Nota che, nonostante la perdita di node-1, la query riesce e mostra che node-2 è ora l'attuale proprietario del cluster di failover.

Esegui la pulizia

Al termine del tutorial, puoi eseguire la pulizia delle risorse che hai creato in modo che smettono di usare la quota e comportano addebiti. Le seguenti sezioni descrivono come eliminare o disattivare queste risorse.

Elimina il progetto

Il modo più semplice per eliminare la fatturazione 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