Note :

Configurer Microsoft SQL Server toujours activé sur le groupe de disponibilité sur OCI avec le module d'écoute et l'équilibreur de charge

Présentation

Le déploiement de Microsoft SQL Server dans Oracle Cloud Infrastructure (OCI) offre aux entreprises une plate-forme puissante pour atteindre leurs objectifs de haute disponibilité et de continuité des activités. L'une des approches les plus efficaces pour la haute disponibilité de Microsoft SQL Server est la fonctionnalité de groupe de disponibilité Always On. Les groupes de disponibilité Microsoft SQL Server Always On fournissent une solution de haute disponibilité et de reprise après sinistre qui permet un basculement en cas de panne et une réplication des données en toute transparence sur plusieurs instances SQL Server.

Il existe différentes façons de configurer un groupe de disponibilité Microsoft SQL Server. Une approche consiste à placer vos machines virtuelles SQL Server dans des sous-réseaux distincts au sein du même réseau virtuel. Pour déployer un groupe de disponibilité SQL Server à l'aide d'une architecture multi-sous-réseau, voir Déploiement d'une base de données Microsoft SQL Server hautement disponible sur OCI à l'aide des groupes de disponibilité Toujours activé et Déployer Microsoft SQL Server Toujours activé sur les groupes de disponibilité pour haute disponibilité et reprise après sinistre sur OCI.

En suivant ce tutoriel, vous allez déployer et configurer un groupe de disponibilité SQL Server Always On sur OCI à l'aide de machines virtuelles dans un seul sous-réseau. Cette configuration comprend un équilibreur de charge OCI privé agissant en tant que module d'écoute, ce qui permet une connectivité client transparente et une haute disponibilité. Cette approche est idéale pour les environnements où la simplicité et la fiabilité sont essentielles, offrant un basculement automatique, une redondance des données et un accès ininterrompu à vos bases de données SQL Server. Avec cette configuration, votre infrastructure est bien positionnée pour prendre en charge les charges de travail critiques avec une solide continuité d'activité. Pour les déploiements en production, envisagez de mettre en œuvre des stratégies améliorées de surveillance, de journalisation, de renforcement de la sécurité et de sauvegarde pour compléter cette configuration à haute disponibilité.

Si vous souhaitez déployer un groupe de disponibilité Always On dans un seul sous-réseau, ce tutoriel fournit une assistance étape par étape pour le configurer à l'aide de machines virtuelles OCI et d'un équilibreur de charge OCI. Ce tutoriel explique comment configurer un groupe de disponibilité Always On à deux noeuds sur OCI à l'aide de machines virtuelles dans un seul sous-réseau, avec un équilibreur de charge OCI.

Architecture

L'image suivante présente un exemple d'architecture de haut niveau de la solution.

Image 1

Exclusions pour ce tutoriel

Objectifs

Préalables

Tâche 1 : Configurer SQL Server Always On Availability Group

Tâche 1.1 : Activer les groupes de disponibilité sur les noeuds SQL Server (DevSQL1 et DevSQL2)

  1. Dans le noeud DevSQL1, allez à Démarrer, recherchez et ouvrez le gestionnaire de configuration SQL Server 2022.

  2. Sélectionnez Services SQL Server, cliquez avec le bouton droit de la souris sur le service SQL Server (MSSQLSERVER) et sélectionnez Propriétés. Si vous utilisez une instance nommée, il s'agira de SQL Server (INSTANCENAME).

    Image 3

  3. Cliquez sur Toujours activé pour les groupes de disponibilité et sélectionnez Activer les groupes de disponibilité toujours activé.

    Image 4

  4. Sélectionnez Appliquer et cliquez sur OK.

  5. Redémarrez le service SQL Server.

  6. Répétez les étapes 1 à 5 sur l'autre noeud (DevSQL2).

Tâche 1.2 : Créer une base de données sur le premier noeud SQL Server (DevSQL1) et effectuer une sauvegarde complète

  1. Dans le noeud DevSQL1, allez à Démarrer, recherchez SSMS et ouvrez SQL Server Management Studio (SSMS).

  2. Connectez-vous au serveur SQL principal. Dans ce tutoriel, il s'agit de DevSQL1.

    Image 6

  3. Sous Explorateur d'objets, cliquez avec le bouton droit de la souris sur Bases de données et cliquez sur Nouvelle base de données.

    Image 7

  4. Sous Général, entrez Nom de la base de données et, sous Options, sélectionnez Complet comme Modèle de récupération.

    Image 8

    Image 9

  5. Cliquez sur OK.

  6. Pour effectuer une sauvegarde complète, cliquez avec le bouton droit de la souris sur base de données "AdventureWorks2022", Tâches et cliquez sur Sauvegarde.

  7. Sous Général, assurez-vous que le type de sauvegarde est Complet et sous Destination, sélectionnez Disque comme Sauvegarde vers, cliquez sur Ajouter et entrez l'emplacement et le nom du fichier pour la sauvegarde complète.

  8. Cliquez sur OK.

Vous pouvez également effectuer une sauvegarde à l'aide de Transact-SQL. Par exemple :

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

Tâche 1.3 : Créer un groupe de disponibilité

  1. Ouvrez SQL Server Management Studio, connectez-vous à DevSQL1. Sous Explorateur d'objets, cliquez avec le bouton droit de la souris sur Toujours en haute disponibilité et cliquez sur Assistant Nouveau groupe de disponibilité.

    Image 10

    Une page Nouveau groupe de disponibilité s'ouvrira. Cliquez sur Suivant.

    Image 11

  2. Sous Spécifier les options, entrez Nom du groupe de disponibilité comme DevAG, Type de grappe comme Grappe de basculement Windows Server et cliquez sur Suivant.

    Image 12

  3. Dans Sélectionner des bases de données, sélectionnez la base de données à ajouter à ce groupe de disponibilité. Sous statut, vous devriez voir des préalables de réunion pour pouvoir ajouter la base de données au groupe de disponibilité. S'il y a des problèmes, il vous en dira la raison et nous devons prendre les mesures nécessaires pour remplir les conditions préalables. Par exemple, une sauvegarde complète de la base de données peut être en attente.

    Image 13

  4. Dans Spécifier les répliques, ajoutez les répliques. Cliquez sur Répliques pour vous assurer que les deux noeuds sont ajoutés sous Répliques de disponibilité et remplacez le mode de disponibilité par Validation synchrone. Vous pouvez avoir un mode de disponibilité différent selon vos besoins.

    Image 14

  5. Cliquez sur Points d'extrémité pour vous assurer que les deux points d'extrémité utilisent le même port et que ces ports sont ouverts dans le pare-feu et la liste de sécurité. Par défaut, il s'agit du port 5022.

    Image 15

    Note : Pour ce tutoriel, nous conserverons toutes les autres options par défaut. Ne créez pas de module d'écoute pour le moment.

  6. Ensuite, nous devons sélectionner la synchronisation des données. Sélectionnez Indéfinition automatique et cliquez sur Suivant.

    Image 16

  7. Dans Validation, assurez-vous que la validation est Réussite et corrigez les échecs éventuels. Vous pouvez ignorer l'avertissement Vérification de la configuration du module d'écoute, car nous créerons le module d'écoute plus tard. Cliquez sur Suivant et, une fois le groupe de disponibilité créé, sélectionnez Fermer pour fermer l'assistant.

  8. Dans l'explorateur d'objets, développez Toujours en haute disponibilité, puis Groupes de disponibilité. Vous devriez maintenant voir le nouveau groupe de disponibilité dans ce conteneur. Cliquez avec le bouton droit de la souris sur le groupe de disponibilité et sélectionnez Afficher le tableau de bord.

    Image 17

  9. Ouvrez Gestionnaire de grappes de basculement, allez à Démarrer, recherchez et ouvrez Gestionnaire de grappes de basculement. Connectez-vous à votre grappe et cliquez sur Rôles.

    Le nom du groupe de disponibilité que nous avons utilisé est un rôle dans la grappe et ce groupe de disponibilité n'a pas d'adresse IP pour les connexions client, car nous n'avons pas configuré de module d'écoute. Nous configurerons le module d'écoute après la création d'un équilibreur de charge OCI.

    Image 18

À ce stade, le groupe de disponibilité a été configuré avec deux répliques SQL Server, ce qui permet le basculement entre les instances. Toutefois, la connectivité client à l'aide du module d'écoute n'est pas encore possible car aucun module d'écoute n'a été configuré.

Tâche 2 : Créer un équilibreur de charge OCI et configurer un module d'écoute de groupe de disponibilité

Il existe plusieurs approches pour configurer un module d'écoute de groupe de disponibilité SQL Server Always On sur OCI, notamment l'utilisation d'une configuration multi-sous-réseau ou l'affectation d'une adresse IP secondaire à chaque machine virtuelle. Bien que ces méthodes soient valides, elles nécessitent souvent une configuration ou des scripts personnalisés supplémentaires pour gérer le déplacement des adresses IP lors des événements de basculement.

Si vous souhaitez déployer un groupe de disponibilité Always On dans un environnement de sous-réseau unique et que vous préférez éviter les scripts personnalisés, l'utilisation d'un équilibreur de charge OCI privé offre une solution simplifiée et fiable. Cette section vous guide tout au long de la configuration de l'équilibreur de charge OCI pour qu'il agisse en tant que module d'écoute pour votre groupe de disponibilité Always On, ce qui permet une connectivité transparente et un traitement de basculement dans un seul sous-réseau.

Tâche 2.1 : Réserver une adresse IP privée statique pour le module d'écoute de groupe SQL Server toujours disponible

Réservez une adresse IP privée statique dans OCI qui sera ensuite affectée à SQL Server Always On Availability Group Listener IP dans Windows Failover Cluster. Nous réservons cette adresse IP pour nous assurer qu'aucun autre service ou machine virtuelle n'est affecté à cette adresse IP sur OCI. Cette adresse IP ne sera pas utilisée par les clients pour se connecter, mais elle facilitera le basculement du groupe de disponibilité et garantira que l'équilibreur de charge OCI achemine la connexion vers le serveur principal approprié.

  1. Allez à la console OCI, naviguez jusqu'à Réseau et cliquez sur Réseaux en nuage virtuels.

  2. Accédez au VCN que vous utilisez pour les noeuds SQL Server.

  3. Cliquez sur Sous-réseaux, allez au sous-réseau utilisé pour les noeuds SQL Server.

  4. Sous Ressources, cliquez sur Adresses IPv4.

  5. Cliquez sur Ajouter une adresse IPv4 réservée.

    Image 33

  6. Entrez l'adresse IP à affecter au module d'écoute de groupe de disponibilité SQL Server Always On. Il peut s'agir de toute adresse IP inutilisée. Notez que les clients ne pourront pas se connecter à distance à l'aide de cette adresse IP. Il s'agit d'une adresse IP fictive que nous affecterons au module d'écoute de groupe de disponibilité de SQL Server Always On dans Windows Failover Cluster. Pour ce tutoriel, nous avons utilisé 10.0.0.148.

    Image 34

Tâche 2.2 : Créer un équilibreur de charge OCI privé

Note : Les champs qui ne sont pas mentionnés ici sont conservés par défaut.

  1. Allez à la console OCI, naviguez jusqu'à Réseau et Équilibreurs de charge.

    Image 19

  2. Cliquez sur Équilibreur de charge et sur Créer un équilibreur de charge.

    Image 20

  3. Entrez le nom de l'équilibreur de charge et sélectionnez Privé comme type de visibilité.

    Image 21

  4. Dans Sélectionner un réseau, sélectionnez le nom du compartiment pour le VCN et le sous-réseau qui seront utilisés pour cet équilibreur de charge. Utilisez le VCN et le sous-réseau que vous avez utilisés pour les noeuds SQL Server.

    Image 22

  5. Dans Gestion, sélectionnez le compartiment dans lequel cet équilibreur de charge sera créé. Assurez-vous d'activer l'option Empêcher la suppression de l'équilibreur de charge, des modules d'écoute et des serveurs dorsaux lorsqu'ils sont encore actifs pour éviter une interruption involontaire des services et cliquez sur Suivant.

    Image 23

  6. Dans le champ Serveurs dorsaux, spécifiez une politique d'équilibrage de charge en tant que version cyclique pondérée.

  7. Dans Sélectionner des serveurs dorsaux, ajoutez les noeuds SQL Server : DevSQL1 et DevSQL2. Remplacez le numéro de port par 1433; si vous utilisez un port différent pour SQL Server, entrez le numéro de port correspondant.

    Image 24

  8. Dans Spécifier la politique de vérification de l'état, utilisez le protocole TCP avec le numéro de port 59999. Vous pouvez utiliser n'importe quel port inutilisé.

    Image 25

  9. Conservez tous les autres paramètres comme Par défaut et nous utilisons la liste de sécurité pour le VCN sélectionné. Cliquez sur Suivant.

  10. Dans Configurer le module d'écoute, entrez le nom du module d'écoute, le trafic TCP et le numéro de port 1433. Conservation de tous les autres paramètres par défaut.

    Image 26

  11. Cliquez sur Suivant, vérifiez la configuration et cliquez sur Soumettre.

  12. Une fois l'équilibreur de charge OCI provisionné, vous pouvez noter l'adresse IP privée de l'équilibreur de charge OCI en allant à Réseau, Équilibreurs de charge et en cliquant sur Équilibreur de charge.

    Image 35

Dans ce tutoriel, l'adresse IP de l'équilibreur de charge est 10.0.0.149. Il s'agit de l'adresse IP que les clients utiliseront pour se connecter au module d'écoute de groupe de disponibilité SQL Server Always On.

Tâche 2.3 : Configurer le module d'écoute SQL Server Always On Availability Group

  1. Remote Desktop Protocol (RDP) dans la machine virtuelle qui héberge la réplique principale. Dans ce tutoriel, il s'agit de DevSQL1. Pour confirmer cela, vous pouvez ouvrir le gestionnaire de grappes de basculement Windows, les rôles et, pour le rôle de groupe de disponibilité SQL, consulter la colonne Noeud de responsable pour confirmer quel noeud est la réplique principale.

  2. Allez à Réseaux et notez le nom du réseau en tant que variable $ClusterNetworkName.

    Image 27

  3. Ajoutez le point d'accès client. Le point d'accès client est le nom de réseau utilisé par les applications pour se connecter aux bases de données d'un groupe de disponibilité.

    1. Dans Gestionnaire de grappes de basculement, développez le nom de la grappe et sélectionnez Rôles.

    2. Cliquez sur Rôles, cliquez avec le bouton droit de la souris sur le nom du groupe de disponibilité, sélectionnez Ajouter une ressource et cliquez sur Point d'accès client.

      Image 28

    3. Dans Nom, créez un nom pour ce nouveau module d'écoute. Le nom du nouveau processus d'écoute est le nom réseau utilisé par les applications pour se connecter aux bases de données du groupe de disponibilité SQL Server.

    4. Cliquez deux fois sur Suivant, puis sélectionnez Terminer. Ne mettez pas le module d'écoute ou la ressource en ligne à ce stade.

  4. Mettez le rôle de grappe hors ligne pour le groupe de disponibilité. Dans Gestionnaire de grappes de basculement, cliquez sur Rôles, cliquez avec le bouton droit de la souris sur le rôle et sélectionnez Arrêter le rôle.

  5. Configurez la ressource IP pour le groupe de disponibilité.

    1. Cliquez sur Ressources et développez le point d'accès client que vous avez créé. Le point d'accès client est hors ligne.

    2. Cliquez avec le bouton droit de la souris sur la ressource IP et sélectionnez Propriétés. Notez le nom de l'adresse IP en tant que variable $IPResourceName. Dans ce tutoriel, le nom est IP Address 10.0.0.0.

    3. Cliquez sur Adresse IP et sélectionnez Adresse IP statique. Définissez l'adresse IP en tant qu'adresse IP réservée dans la tâche 2.1. Dans ce tutoriel, il s'agit de 10.0.0.148.

    Image 29

  6. Faites en sorte que le groupe de disponibilité SQL Server dépende du point d'accès client.

    1. Dans Gestionnaire de grappes de basculement, cliquez sur Rôles et sélectionnez votre groupe de disponibilité.

    2. Cliquez sur Ressources, sous Autres ressources, cliquez avec le bouton droit de la souris sur la ressource du groupe de disponibilité, puis cliquez sur Propriétés.

    3. Cliquez sur Dépendances et ajoutez le nom du point d'accès client (le module d'écoute).

      Image 30

    4. Cliquez sur OK.

  7. Faites en sorte que le point d'accès client dépende de l'adresse IP.

    1. Dans Gestionnaire de grappes de basculement, cliquez sur Rôles et sélectionnez votre groupe de disponibilité.

    2. Cliquez sur Ressources, cliquez avec le bouton droit de la souris sur le point d'accès du client sous Nom du serveur, puis cliquez sur Propriétés.

      Image 31

    3. Cliquez sur Dépendances et vérifiez que l'adresse IP est une dépendance. Si ce n'est pas le cas, définissez une dépendance à l'adresse IP. Si plusieurs ressources sont listées, vérifiez que les adresses IP comportent des dépendances OU, et non ET, et cliquez sur OK.

  8. Définissez les paramètres de grappe dans Windows PowerShell.

    1. Copiez le script PowerShell suivant dans l'une de vos instances SQL Server. Mettez à jour les variables de votre environnement.

      • Recherchez le nom $ClusterNetworkName dans le gestionnaire de grappes de basculement en sélectionnant Réseaux, cliquez avec le bouton droit de la souris sur le réseau et sélectionnez Propriétés. $ClusterNetworkName se trouve sous Nom dans l'onglet Général.

      • $IPResourceName est le nom donné à la ressource d'adresse IP dans le gestionnaire de grappes de basculement. Cela se trouve dans le gestionnaire de grappes de basculement en sélectionnant Rôles, sélectionnez le groupe de disponibilité SQL Server ou le nom FCI, sélectionnez Ressources sous Nom du serveur, cliquez avec le bouton droit de la souris sur la ressource d'adresse IP et cliquez sur Propriétés. La valeur correcte est sous Nom dans l'onglet Général.

      • $ListenerILBIP est l'adresse IP que vous avez créée dans l'équilibreur de charge Azure pour le module d'écoute du groupe de disponibilité. Recherchez $ListenerILBIP dans le gestionnaire de grappes de basculement dans la même page de propriétés que le nom de la ressource du module d'écoute SQL Server AG/FCI.

      • $ListenerProbePort est le port que vous avez configuré sur l'équilibreur de charge Azure pour le module d'écoute du groupe de disponibilité, par exemple 59999. Tout port TCP non utilisé est valide.

      $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}
      

      Pour ce tutoriel, nous avons utilisé les éléments suivants :

      $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. Définissez les paramètres de grappe en exécutant le script PowerShell sur l'un des noeuds de grappe.

  9. L'ajout d'une exclusion empêchera l'affectation dynamique d'autres processus système au même port. Pour ce scénario, configurez les exclusions suivantes sur tous les noeuds du cluster.

    netsh int ipv4 add excludedportrange tcp startport=59999 numberofports=1 store=persistent
    
  10. Mettez le rôle de grappe en ligne pour le groupe de disponibilité. Dans Gestionnaire de grappes de basculement, cliquez sur Rôles, cliquez avec le bouton droit de la souris sur le rôle et sélectionnez Démarrer le rôle.

  11. Dans SQL Server Management Studio, définissez le port du module d'écoute.

    1. Ouvrez SQL Server Management Studio et connectez-vous à la réplique principale.

    2. Allez à Toujours en haute disponibilité, Groupes de disponibilité et cliquez sur Modules d'écoute de groupe de disponibilité.

    3. Cliquez avec le bouton droit de la souris sur le nom du module d'écoute que vous avez créé dans la tâche 2.2, puis cliquez sur Propriétés.

    4. Dans Port, spécifiez le numéro de port du module d'écoute du groupe de disponibilité et cliquez sur OK. La valeur par défaut est 1433.

    Image 32

  12. Dans votre serveur DNS, assurez-vous qu'il existe un enregistrement d'hôte A pour l'adresse IP de l'équilibreur de charge OCI privé pointant vers le nom du module d'écoute du groupe de disponibilité SQL. Assurez-vous que l'objet d'ordinateur du module d'écoute SQL ne peut pas mettre à jour les enregistrements DNS. Cela permet de s'assurer qu'après le basculement, l'entrée DNS n'est pas mise à jour vers l'adresse IP utilisée dans Windows Failover Cluster.

    Dans ce tutoriel, nous avons mis à jour l'enregistrement de l'hôte A du module d'écoute du groupe de disponibilité SQL avec l'adresse IP 10.0.0.149 au lieu de 10.0.0.148 et mis à jour la sécurité pour nous assurer que l'objet d'ordinateur SQLAGL$ ne peut pas mettre à jour cet enregistrement et ne peut le lire que.

    Image 36

    Image 37

Il peut y avoir plus de méthodes pour y parvenir, vous pouvez implémenter votre propre solution. L'objectif est d'avoir un enregistrement DNS pour le module d'écoute de groupe de disponibilité SQL Server avec l'adresse IP de l'équilibreur de charge OCI.

Vous pouvez maintenant tester la connexion au module d'écoute du groupe de disponibilité SQL Server à partir de SSMS ou de tout autre outil client.

Remerciements

Autres ressources d'apprentissage

Explorez d'autres laboratoires sur le site docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal Oracle Learning YouTube. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir la documentation sur le produit, visitez Oracle Help Center.