Nota

Configurare Microsoft SQL Server Always On Availability Group su OCI con listener e load balancer

Introduzione

L'implementazione di Microsoft SQL Server in Oracle Cloud Infrastructure (OCI) offre alle aziende una piattaforma potente per raggiungere i loro obiettivi di alta disponibilità e continuità aziendale. Uno degli approcci più efficaci per l'alta disponibilità di Microsoft SQL Server è la funzione del gruppo di disponibilità Always On. I gruppi di disponibilità Always On di Microsoft SQL Server offrono una soluzione di disaster recovery ad alta disponibilità che consente un failover e una replica dei dati senza interruzioni su più istanze di SQL Server.

Esistono vari modi per impostare un gruppo di disponibilità di Microsoft SQL Server. Un approccio consiste nel posizionare le virtual machine SQL Server in subnet separate all'interno della stessa rete virtuale. Per distribuire un gruppo di disponibilità di SQL Server utilizzando un'architettura multi-subnet, vedere Distribuzione di un database Microsoft SQL Server ad alta disponibilità su OCI utilizzando i gruppi di disponibilità Always On e Distribuire i gruppi di disponibilità Always On Microsoft SQL Server per HA e DR su OCI.

Seguendo questa esercitazione, potrai distribuire e configurare un gruppo di disponibilità Always On di SQL Server su OCI utilizzando le virtual machine all'interno di una singola subnet. Questa configurazione include un load balancer OCI privato che funge da listener, consentendo connettività client trasparente e alta disponibilità. Questo approccio è ideale per ambienti in cui semplicità e affidabilità sono fondamentali, fornendo failover automatico, ridondanza dei dati e accesso ininterrotto ai database SQL Server. Grazie a questa configurazione, la tua infrastruttura è ben posizionata per supportare carichi di lavoro mission-critical con una solida business continuity. Per le distribuzioni di produzione, prendere in considerazione l'implementazione di strategie avanzate di monitoraggio, registrazione, protezione avanzata e backup a complemento di questa configurazione ad alta disponibilità.

Se si desidera distribuire un gruppo di disponibilità Sempre attivo all'interno di una singola subnet, questa esercitazione fornisce istruzioni dettagliate per l'impostazione utilizzando le virtual machine OCI e un load balancer OCI. Questa esercitazione descrive come impostare un gruppo di disponibilità Always On a due nodi su OCI utilizzando le virtual machine in una singola subnet, con un load balancer OCI.

Architettura

L'immagine seguente mostra un'architettura di alto livello di esempio della soluzione.

Immagine 1

Esclusioni per questo tutorial

Obiettivi

Prerequisiti

Task 1: Configura SQL Server Always On Availability Group

Task 1.1: abilitare i gruppi di disponibilità su entrambi i nodi SQL Server (DevSQL1 e DevSQL2)

  1. Nel nodo DevSQL1, andare a Start, cercare e aprire SQL Server 2022 Configuration Manager.

  2. Selezionare Servizi SQL Server, fare clic con il pulsante destro del mouse sul servizio SQL Server (MSSQLSERVER) e selezionare Proprietà. Se si utilizza un'istanza denominata, sarà SQL Server (INSTANCENAME).

    Immagine 3

  3. Fare clic su Sempre nei gruppi di disponibilità e selezionare Abilita gruppi di disponibilità Sempre attivo.

    Immagine 4

  4. Selezionare Applica e fare clic su OK.

  5. Riavviare il servizio SQL Server.

  6. Ripetere i passi da 1 a 5 sull'altro nodo (DevSQL2).

Task 1.2: creare un database sul primo nodo SQL Server (DevSQL1) e eseguire un backup completo

  1. Nel nodo DevSQL1, andare a Start, cercare SSMS e aprire SQL Server Management Studio (SSMS).

  2. Connettersi a SQL Server primario. In questa esercitazione si trova DevSQL1.

    Immagine 6

  3. In Explorer oggetti, fare clic con il pulsante destro del mouse su Database e fare clic su Nuovo database.

    Immagine 7

  4. In Generale, immettere Nome database e in Opzioni, selezionare Completo come Modello di recupero.

    Immagine 8

    Immagine 9

  5. Fare clic su OK.

  6. Per eseguire un backup completo, fare clic con il pulsante destro del mouse su database "AdventureWorks2022", Task e fare clic su Backup.

  7. In Generale, assicurarsi che Tipo di backup sia Completo e in Destinazione, selezionare Disco come Backup in, fare clic su Aggiungi e immettere la posizione e il nome file per il backup completo.

  8. Fare clic su OK.

È inoltre possibile eseguire un backup utilizzando Transact-SQL. Ad esempio:

Transact-SQL:

BACKUP DATABASE [AdventureWorks2022] TO  DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\AdventuresWork2022.bak' WITH NOFORMAT, NOINIT,  NAME = N'AdventureWorks2022-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

Task 1.3: Creare un gruppo di disponibilità

  1. Aprire SQL Server Management Studio, connettersi a DevSQL1. In Explorer oggetti, fare clic con il pulsante destro del mouse su Sempre in modalità High Availability e fare clic su Creazione guidata nuovo gruppo di disponibilità.

    Immagine 10

    Verrà aperta una pagina Nuovo gruppo di disponibilità. Fare clic su Avanti.

    Immagine 11

  2. In Specifica opzioni, immettere Nome gruppo di disponibilità come DevAG, Tipo di cluster come Cluster di failover di Windows Server e fare clic su Avanti.

    Immagine 12

  3. In Seleziona database selezionare il database che si desidera aggiungere a questo gruppo di disponibilità. In Stato, dovrebbe essere visualizzato Soddisfa prerequisiti per poter aggiungere il database al gruppo di disponibilità. Se ci sono problemi, ti dirà il motivo e dobbiamo intraprendere le azioni necessarie per soddisfare i prerequisiti. Ad esempio, un backup completo del database potrebbe essere in sospeso.

    Immagine 13

  4. In Specificare le repliche aggiungere le repliche. Fare clic su Repliche per assicurarsi che entrambi i nodi vengano aggiunti in Repliche disponibilità e modificare la modalità di disponibilità in Commit sincrono. Puoi avere una modalità di disponibilità diversa in base alle tue esigenze.

    Immagine 14

  5. Fare clic su Endpoint per assicurarsi che entrambi gli endpoint utilizzino la stessa porta e che tali porte siano aperte nel firewall e nella lista di sicurezza. Per default sarà la porta 5022.

    Immagine 15

    Nota: per questa esercitazione verranno mantenute tutte le altre opzioni come predefinite. Non creare listener al momento.

  6. Successivamente è necessario selezionare la sincronizzazione dei dati. Selezionare Popolamento automatico e fare clic su Avanti.

    Immagine 16

  7. In Convalida, assicurarsi che la convalida sia Operazione riuscita e correggere eventuali errori. È possibile ignorare l'avvertenza Controllo della configurazione del listener poiché verrà creato il listener in un secondo momento. Fare clic su Avanti e, una volta creato il gruppo di disponibilità, selezionare Chiudi per chiudere la procedura guidata.

  8. In Explorer oggetti, espandere Sempre in alta disponibilità, quindi espandere Gruppi di disponibilità. Ora è necessario visualizzare il nuovo gruppo di disponibilità in questo contenitore. Fare clic con il pulsante destro del mouse sul gruppo di disponibilità e selezionare Mostra dashboard.

    Immagine 17

  9. Aprire Failover Cluster Manager, andare a Avvia, cercare e aprire Failover Cluster Manager. Connettersi al cluster e fare clic su Ruoli.

    Il nome del gruppo di disponibilità utilizzato è un ruolo nel cluster e tale gruppo di disponibilità non dispone di un indirizzo IP per le connessioni client perché non è stato configurato un listener. Il listener verrà configurato dopo aver creato un load balancer OCI.

    Immagine 18

In questa fase, il gruppo di disponibilità è stato configurato correttamente con due repliche di SQL Server, consentendo il failover tra le istanze. Tuttavia, la connettività client che utilizza il listener non è ancora possibile poiché non è stato impostato un listener.

Task 2: creare un load balancer OCI e configurare un listener di gruppi di disponibilità

Esistono diversi approcci per configurare un listener del gruppo di disponibilità Always On di SQL Server su OCI, incluso l'utilizzo di un'impostazione multi-subnet o l'assegnazione di un indirizzo IP secondario a ciascuna virtual machine. Sebbene questi metodi siano validi, spesso richiedono ulteriori configurazioni o script personalizzati per gestire lo spostamento degli IP durante gli eventi di failover.

Se desideri distribuire un gruppo di disponibilità Always On in un singolo ambiente di subnet e preferisci evitare la creazione di script personalizzati, l'utilizzo di un load balancer OCI privato offre una soluzione semplificata e affidabile. Questa sezione ti guiderà nella configurazione del load balancer OCI per fungere da listener per il tuo gruppo di disponibilità Always On, consentendo una connettività e una gestione del failover perfette all'interno di una singola subnet.

Task 2.1: riservare un indirizzo IP privato statico per SQL Server Always On Availability Group Listener

Riservare un IP privato statico in OCI che verrà in seguito assegnato all'IP del listener del gruppo di disponibilità Always On di SQL Server nel cluster di failover Windows. Si sta riservando questo indirizzo IP per assicurarsi che a nessun altro servizio o VM venga assegnato questo indirizzo IP nell'infrastruttura OCI. Questo indirizzo IP non verrà utilizzato dai client per la connessione, ma aiuterà il failover del gruppo di disponibilità e assicurerà che il load balancer OCI instrada la connessione al server primario corretto.

  1. Andare alla console OCI, andare a Networking e fare clic su Reti cloud virtuali.

  2. Andare alla VCN utilizzata per i nodi di SQL Server.

  3. Fare clic su Subnet e andare alla subnet utilizzata per i nodi di SQL Server.

  4. In Risorse, fare clic su IPv4 indirizzi.

  5. Fare clic su Aggiungi indirizzo IPv4 riservato.

    Immagine 33

  6. Immettere l'indirizzo IP che si desidera assegnare al listener del gruppo di disponibilità Always On di SQL Server. Questo può essere qualsiasi indirizzo IP inutilizzato, si noti che i client non saranno in grado di connettersi utilizzando questo indirizzo IP in remoto. Questo è un IP fittizio che verrà assegnato al listener del gruppo di disponibilità Always On di SQL Server nel cluster di failover Windows. Per questo tutorial, abbiamo usato 10.0.0.148.

    Immagine 34

Task 2.2: creare un load balancer OCI privato

Nota: i campi non menzionati qui vengono mantenuti come predefiniti.

  1. Andare a OCI Console, andare a Networking e Load Balancer.

    Immagine 19

  2. Fare clic su Load balancer e su Crea load balancer.

    Immagine 20

  3. Immettere il nome del load balancer e selezionare Privato come tipo di visibilità.

    Immagine 21

  4. In Scegli networking, selezionare il nome del compartimento per la VCN e la subnet che verranno utilizzati per questo load balancer. Utilizzare la stessa VCN e la stessa subnet utilizzata per i nodi di SQL Server.

    Immagine 22

  5. In Gestione, selezionare il compartimento in cui verrà creato questo load balancer. Assicurarsi di abilitare Impedire l'eliminazione del load balancer, dei listener e dei backend quando sono ancora attivi per evitare interruzioni impreviste dei servizi e fare clic su Successivo.

    Immagine 23

  6. In Backend, specificare un criterio di bilanciamento del carico come round robin ponderato.

  7. Nel campo Seleziona server backend aggiungere entrambi i nodi SQL Server: DevSQL1 e DevSQL2. Modificare il numero di porta in 1433; se si utilizza una porta diversa per SQL Server, immettere il numero di porta corrispondente.

    Immagine 24

  8. In Specificare il criterio di controllo dello stato, utilizzare il protocollo TCP Protocollo con il numero di porta 59999. È possibile utilizzare qualsiasi porta inutilizzata.

    Immagine 25

  9. Mantenere tutte le altre impostazioni come predefinite e si sta utilizzando la lista di sicurezza per la VCN selezionata. Fare clic su Avanti.

  10. In Configura listener immettere Nome listener, Traffico TCP e Numero Porta come 1433. Mantenere tutte le altre impostazioni come predefinite.

    Immagine 26

  11. Fare clic su Avanti, rivedere la configurazione e fare clic su Sottometti.

  12. Una volta eseguito il provisioning del load balancer OCI, puoi prendere nota dell'indirizzo IP privato del load balancer OCI andando su Networking, Load balancer e fare clic su Load balancer.

    Immagine 35

In questa esercitazione l'indirizzo IP per il load balancer è 10.0.0.149. Indirizzo IP utilizzato dai client per connettersi al listener del gruppo di disponibilità Always On di SQL Server.

Task 2.3: configurare il listener del gruppo di disponibilità Always On SQL Server

  1. RDP (Remote Desktop Protocol) nella VM che ospita la replica primaria. In questa esercitazione si trova DevSQL1. Per confermare questa operazione, è possibile aprire Gestione cluster failover Windows, Ruoli e per il ruolo del gruppo di disponibilità SQL esaminare la colonna Nodo proprietario per confermare quale nodo è la replica primaria.

  2. Passare a Reti e prendere nota del nome di rete come variabile $ClusterNetworkName.

    Immagine 27

  3. Aggiungere il punto di accesso client. Il punto di accesso client è il nome di rete utilizzato dalle applicazioni per connettersi ai database in un gruppo di disponibilità.

    1. In Gestione cluster di salvataggio espandere il nome del cluster e selezionare Ruoli.

    2. Fare clic su Ruoli, fare clic con il pulsante destro del mouse sul nome del gruppo di disponibilità, selezionare Aggiungi risorsa e fare clic su Punto di accesso client.

      Immagine 28

    3. In Nome, creare un nome per questo nuovo listener. Il nome del nuovo listener è il nome di rete utilizzato dalle applicazioni per connettersi ai database nel gruppo di disponibilità di SQL Server.

    4. Fare clic due volte su Avanti e selezionare Fine. A questo punto, non connettere il listener o la risorsa.

  4. Rendere offline il ruolo cluster per il gruppo di disponibilità. In Gestione cluster di salvataggio, fare clic su Ruoli, fare clic con il pulsante destro del mouse sul ruolo e selezionare Interrompi ruolo.

  5. Configurare la risorsa IP per il gruppo di disponibilità.

    1. Fare clic su Risorse ed espandere il punto di accesso client creato. Il punto di accesso client è offline.

    2. Fare clic con il pulsante destro del mouse sulla risorsa IP e selezionare Proprietà. Prendere nota del nome dell'indirizzo IP come variabile $IPResourceName. In questa esercitazione il nome è IP Address 10.0.0.0.

    3. Fare clic su IP Address e selezionare Static IP Address. Imposta l'indirizzo IP come indirizzo IP che abbiamo riservato nel Task 2.1. In questa esercitazione si trova 10.0.0.148.

    Immagine 29

  6. Rendere il gruppo di disponibilità di SQL Server dipendente dal punto di accesso client.

    1. In Gestione cluster di salvataggio, fare clic su Ruoli e selezionare il gruppo di disponibilità.

    2. Fare clic su Risorse, in Altre risorse, fare clic con il pulsante destro del mouse sulla risorsa del gruppo di disponibilità e fare clic su Proprietà.

    3. Fare clic su Dipendenze e aggiungere il nome del punto di accesso client (il listener).

      Immagine 30

    4. Fare clic su OK.

  7. Rendere il punto di accesso del client dipendente dall'indirizzo IP.

    1. In Gestione cluster di salvataggio, fare clic su Ruoli e selezionare il gruppo di disponibilità.

    2. Fare clic su Risorse, fare clic con il pulsante destro del mouse sul punto di accesso client in Nome server e fare clic su Proprietà.

      Immagine 31

    3. Fare clic su Dipendenze e verificare che l'indirizzo IP sia una dipendenza. In caso contrario, impostare una dipendenza dall'indirizzo IP. Se sono elencate più risorse, verificare che gli indirizzi IP abbiano dipendenze OR, non AND, e fare clic su OK.

  8. Impostare i parametri del cluster in Windows PowerShell.

    1. Copiare il seguente script PowerShell in una delle istanze di SQL Server. Aggiornare le variabili per l'ambiente.

      • Per trovare il nome $ClusterNetworkName in Failover Cluster Manager, selezionare Reti, fare clic con il pulsante destro del mouse sulla rete e selezionare Proprietà. Il $ClusterNetworkName si trova in Nome nella scheda Generale.

      • $IPResourceName è il nome assegnato alla risorsa indirizzo IP in Failover Cluster Manager. Si trova in Failover Cluster Manager selezionando Ruoli, selezionare il gruppo di disponibilità di SQL Server o il nome FCI, selezionare Risorse in Nome server, fare clic con il pulsante destro del mouse sulla risorsa indirizzo IP e fare clic su Proprietà. Il valore corretto si trova in Nome nella scheda Generale.

      • $ListenerILBIP è l'indirizzo IP creato nel load balancer di Azure per il listener del gruppo di disponibilità. Trovare il valore $ListenerILBIP in Failover Cluster Manager nella stessa pagina delle proprietà del nome della risorsa listener SQL Server AG/FCI.

      • $ListenerProbePort è la porta configurata nel load balancer di Azure per il listener del gruppo di disponibilità, ad esempio 59999. Qualsiasi porta TCP non utilizzata è valida.

      $ClusterNetworkName = "<MyClusterNetworkName>" # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name.
      $IPResourceName = "<IPResourceName>" # The IP address resource name.
      $ListenerILBIP = "<n.n.n.n>" # The IP address that we reserved in Task 2.1. This is the static IP address for the SQL Server AG Listener that you reserved in OCI Console.
      [int]$ListenerProbePort = <nnnnn>
      
      Import-Module FailoverClusters
      
      Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ListenerILBIP";"ProbePort"=$ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
      

      Per questo tutorial, abbiamo usato quanto segue:

      $ClusterNetworkName = "Cluster Network 1" # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name.
      $IPResourceName = "IP Address 10.0.0.0" # The IP address resource name.
      $ListenerILBIP = "10.0.0.148" # The IP address of the internal load balancer. This is the static IP address for the load balancer that you configured in the Azure portal.
      [int]$ListenerProbePort = 59999
      
      Import-Module FailoverClusters
      
      Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ListenerILBIP";"ProbePort"=$ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
      
    2. Impostare i parametri del cluster eseguendo lo script PowerShell su uno dei nodi del cluster.

  9. L'aggiunta di un'esclusione impedirà l'assegnazione dinamica di altri processi di sistema alla stessa porta. Per questo scenario, configurare le esclusioni riportate di seguito su tutti i nodi del cluster.

    netsh int ipv4 add excludedportrange tcp startport=59999 numberofports=1 store=persistent
    
  10. Connettere il ruolo cluster per il gruppo di disponibilità. In Gestione cluster di salvataggio, fare clic su Ruoli, fare clic con il pulsante destro del mouse sul ruolo e selezionare Avvia ruolo.

  11. In SQL Server Management Studio impostare la porta del listener.

    1. Aprire SQL Server Management Studio e connettersi alla replica primaria.

    2. Andare a Sempre in alta disponibilità, Gruppi di disponibilità e fare clic su L listener dei gruppi di disponibilità.

    3. Fare clic con il pulsante destro del mouse sul nome del listener creato nel task 2.2 e fare clic su Proprietà.

    4. In Porta, specificare il numero di porta per il listener del gruppo di disponibilità e fare clic su OK. Il valore predefinito è 1433.

    Immagine 32

  12. Nel server DNS, assicurarsi che esista un record Host A per l'indirizzo IP privato del load balancer OCI che punti al nome del listener del gruppo di disponibilità SQL. Assicurarsi che l'oggetto computer del listener SQL non sia in grado di aggiornare i record DNS. Ciò garantisce che dopo il failover la voce DNS non venga aggiornata all'indirizzo IP utilizzato nel cluster di failover di Windows.

    In questa esercitazione è stato aggiornato il record Host A del listener del gruppo di disponibilità SQL con l'indirizzo IP 10.0.0.149 anziché 10.0.0.148 e l'Sicurezza è stata aggiornata per garantire che l'oggetto computer SQLAGL$ non sia in grado di aggiornare questo record e di leggerlo solo.

    Immagine 36

    Immagine 37

Ci possono essere più metodi per raggiungere questo obiettivo, è possibile implementare la propria soluzione. L'obiettivo è avere un record DNS per il listener del gruppo di disponibilità SQL Server con l'indirizzo IP del load balancer OCI.

Ora puoi testare la connessione al listener del gruppo di disponibilità di SQL Server da SSMS o da qualsiasi altro strumento client.

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione del prodotto, visita l'Oracle Help Center.