Share via


Tutoriel : Configurer un écouteur de groupe de disponibilité sur les machines virtuelles Linux

S’applique à :SQL Server sur la machine virtuelle Azure

Ce tutoriel explique comment créer un écouteur de groupe de disponibilité pour vos serveurs SQL sur des machines virtuelles Linux dans Azure, pour Red Hat Enterprise Linux (RHEL), SUSE Linux Enterprise Server (SLES) et Ubuntu.

Vous découvrirez comment effectuer les actions suivantes :

  • Créer un équilibreur de charge sur le portail Azure
  • Configurer le pool back-end pour l’équilibreur de charge
  • Créer une sonde pour l’équilibreur de charge
  • Configurer les règles d’équilibrage de charge
  • Créer la ressource d’équilibreur de charge dans le cluster
  • Créer l'écouteur de groupe de disponibilité
  • Tester la connexion à l’écouteur
  • Tester un basculement

Remarque

Communication sans stéréotype

Cet article contient des références au terme esclave, un terme que Microsoft considère comme choquant lorsqu’il est utilisé dans ce contexte. Le terme apparaît dans cet article, car il apparaît actuellement dans le logiciel. Lorsque le terme sera supprimé du logiciel, nous le supprimerons de l’article.

Prérequis

Créer l’équilibrage de charge dans le portail Azure

Les instructions suivantes vous indiquent les étapes 1 à 4 de la section Créer et configurer l'équilibrage de charge dans le portail Azure de l'article Configurer un écouteur de groupe de disponibilité et d'équilibrage de charge (SQL Server sur des machines virtuelles Azure).

Créer l’équilibreur de charge

  1. Dans le portail Azure, ouvrez le groupe de ressources contenant les machines virtuelles SQL Server.

  2. Dans le groupe de ressources, sélectionnez Ajouter.

  3. Recherchez équilibreur de charge puis, dans les résultats de la recherche, sélectionnez Équilibreur de charge, publié par Microsoft.

  4. Dans le volet Équilibreur de charge, sélectionnez Créer.

  5. Dans la boîte de dialogue Créer l’équilibreur de charge, configurez l’équilibreur de charge comme suit :

    Paramètre Valeur
    Nom Nom de l’équilibrage de charge. Par exemple : sqlLB.
    Type Interne
    Réseau virtuel Le réseau virtuel par défaut qui a été créé doit être nommé VM1VNET.
    Sous-réseau Sélectionnez le sous-réseau contenant les instances de SQL Server. Le sous-réseau par défaut doit être VM1Subnet.
    Affectation d’adresses IP Statique
    Adresse IP privée Utilisez l’adresse IP virtualip qui a été créée dans le cluster.
    Abonnement Utilisez l’abonnement qui a été utilisé pour votre groupe de ressources.
    Groupe de ressources Sélectionnez le groupe de ressources contenant les instances de SQL Server.
    Lieu Sélectionnez l’emplacement Azure contenant les instances de SQL Server.

Configurez le pool principal

Azure appelle pool principal ce pool d’adresses principal. En l'occurrence, le groupe back-end est constitué des adresses des trois instances de SQL Server de votre groupe de disponibilité.

  1. Dans votre groupe de ressources, cliquez sur l’équilibreur de charge que vous avez créé.

  2. Sous Paramètres, sélectionnez Pools principaux.

  3. Dans Pools principaux, sélectionnez Ajouter pour créer un pool d’adresses principal.

  4. Dans Ajouter un pool principal sous Nom, entrez un nom pour le pool principal.

  5. Sous Associé à, sélectionnez Machine virtuelle.

  6. Sélectionnez chaque machine virtuelle de l’environnement, puis associez l’adresse IP appropriée à chaque sélection.

    Screenshot showing how to add a backend pool.

  7. Sélectionnez Ajouter.

Créer une sonde

La sonde définit la façon dont Azure identifie l'instance de SQL Server actuelement propriétaotre de l'écouteur du groupe de disponibilité. Azure sonde le service avec l’adresse IP sur un port que vous définissez lors de la création de la sonde.

  1. Dans le volet Paramètres de l'équilibreur de charge, sélectionnez Sondes d'intégrité.

  2. Dans le volet Sondes d’intégrité, sélectionnez Ajouter.

  3. Configurez la sonde dans le volet Ajouter une sonde. Utilisez les valeurs suivantes pour configurer la sonde :

    Paramètre Valeur
    Nom Nom de la sonde. Par exemple : SQLAlwaysOnEndPointProbe.
    Protocole TCP
    Port Vous pouvez utiliser n’importe quel port disponible. Par exemple : 59999.
    Intervalle 5
    Seuil de défaillance sur le plan de l’intégrité 2
  4. Cliquez sur OK.

  5. Connectez-vous à toutes vos machines virtuelles, puis ouvrez le port de la sonde à l’aide des commandes suivantes :

    sudo firewall-cmd --zone=public --add-port=59999/tcp --permanent
    sudo firewall-cmd --reload
    

Azure crée la sonde puis l'utilise pour identifier l'instance de SQL Server qui a l'écouteur pour le groupe de disponibilité.

Définir les règles d’équilibrage de charge

Les règles d’équilibrage de charge déterminent comment l’équilibreur de charge route le trafic vers les instances de SQL Server. Pour cet équilibreur de charge, vous activez le retour direct du serveur, car une seule des trois instances de SQL Server est propriétaire de la ressource d'écouteur de groupe de disponibilité à un moment donné.

  1. Dans le volet Paramètres de l'équilibreur de charge, sélectionnez Règles d'équilibrage de charge.

  2. Dans le volet Règles d’équilibrage de charge, sélectionnez Ajouter.

  3. Dans le volet Ajouter une règle d'équilibrage de charge, configurez la règle d'équilibrage de charge. Utilisez les paramètres suivants :

    Paramètre Valeur
    Nom Nom représentant la règle d’équilibrage de charge. Par exemple : SQLAlwaysOnEndPointListener.
    Protocole TCP
    Port 1433
    Port principal 1433. Cette valeur est ignorée, car cette règle utilise Adresse IP flottante (retour direct du serveur).
    Sonde Utilisez le nom de la sonde que vous avez créée pour cet équilibrage de charge.
    Persistance de session Aucun
    Délai d’inactivité (minutes). 4
    Adresse IP flottante (retour direct du serveur) Activé

    Screenshot showing how to add a load balancing rule.

  4. Cliquez sur OK.

  5. Azure configure la règle d’équilibrage de charge. L'équilibreur de charge est maintenant configuré pour acheminer le trafic vers l'instance de SQL Server qui héberge l'écouteur pour le groupe de disponibilité.

À ce stade, le groupe de ressources a un équilibreur de charge qui se connecte à tous les ordinateurs SQL Server. L'équilibreur de charge contient aussi une adresse IP pour l'écouteur de groupe de disponibilité Always On SQL Server, de sorte que n'importe quel ordinateur peut répondre aux demandes pour les groupes de disponibilité.

Créer la ressource de l'écouteur de groupe de disponibilité

Avant de créer une ressource d'équilibreur de charge dans Pacemaker, commencez par créer la ressource d'écouteur :

sudo crm configure primitive virtualip \
ocf:heartbeat:IPaddr2 \
params ip=x.y.z.a

Dans l'exemple précédent, x.y.z.a fait référence à l'adresse IP front-end de l'équilibreur de charge.

Créer la ressource d’équilibreur de charge dans le cluster

Suivez les instructions relatives à la distribution que vous configurez.

  1. Connectez-vous à l'ordinateur virtuel principal. Nous devons créer la ressource pour activer le port de la sonde de l’équilibreur de charge Azure (59999 est utilisé dans notre exemple). Exécutez la commande suivante :

    sudo pcs resource create azure_load_balancer azure-lb port=59999
    
  2. Créez un groupe qui contient virtualip et la ressource azure_load_balancer :

    sudo pcs resource group add virtualip_group azure_load_balancer virtualip
    

Ajouter des contraintes

  1. Une contrainte de colocalisation doit être configurée pour faire en sorte que l’adresse IP de l’équilibreur de charge Azure et la ressource de groupe de disponibilité s’exécutent sur le même nœud. Exécutez la commande suivante :

    sudo pcs constraint colocation add azure_load_balancer ag_cluster-master INFINITY with-rsc-role=Master
    
  2. Créez une contrainte de classement pour faire en sorte que la ressource de groupe de disponibilité soit active et en cours d’exécution avant l’adresse IP de l’équilibreur de charge Azure. Alors que la contrainte de colocalisation implique une contrainte de classement, elle l’applique.

    sudo pcs constraint order promote ag_cluster-master then start azure_load_balancer
    
  3. Pour vérifier les contraintes, exécutez la commande suivante :

    sudo pcs constraint list --full
    

    Vous devez normalement voir la sortie suivante.

    Location Constraints:
    Ordering Constraints:
      promote ag_cluster-master then start virtualip (kind:Mandatory) (id:order-ag_cluster-master-virtualip-mandatory)
      promote ag_cluster-master then start azure_load_balancer (kind:Mandatory) (id:order-ag_cluster-master-azure_load_balancer-mandatory)
    Colocation Constraints:
      virtualip with ag_cluster-master (score:INFINITY) (with-rsc-role:Master) (id:colocation-virtualip-ag_cluster-master-INFINITY)
      azure_load_balancer with ag_cluster-master (score:INFINITY) (with-rsc-role:Master) (id:colocation-azure_load_balancer-ag_cluster-master-INFINITY)
    Ticket Constraints:
    

Créer l'écouteur de groupe de disponibilité

  1. Sur le nœud principal, exécutez la commande suivante dans sqlcmd ou SSMS : Remplacez l’adresse IP utilisée ci-dessous par l’adresse IP virtualip.

    • SQL Server 2022 et versions ultérieures :

      ALTER AVAILABILITY GROUP [ag1]
      ADD LISTENER 'ag1-listener' (
          WITH IP((
              '10.0.0.7',
              '0.0.0.0'
          )),
          PORT = 1433
      );
      GO
      
    • SQL Server 2017 et SQL Server 2019 :

      ALTER AVAILABILITY GROUP [ag1]
      ADD LISTENER 'ag1-listener' (
          WITH IP((
              '10.0.0.7',
              '255.255.255.255'
          )),
          PORT = 1433
      );
      GO
      
  2. Connectez-vous à chaque nœud de machine virtuelle. Utilisez la commande suivante pour ouvrir le fichier HOSTS et configurer la résolution de noms d’hôtes pour ag1-listener sur chaque machine.

    sudo vi /etc/hosts
    

    Dans l’éditeur vi, entrez i pour insérer du texte puis, sur une ligne vide, ajoutez l’adresse IP de ag1-listener. Ajoutez ensuite ag1-listener après un espace en regard de l’adresse IP.

    <IP of ag1-listener> ag1-listener
    

    Pour quitter l’éditeur vi, appuyez d’abord sur la touche Echap, puis entrez la commande :wq pour écrire le fichier et quitter. Procédez de la sorte sur chaque nœud.

Tester l’écouteur et un basculement

Cette section traite de la connexion à un écouteur de groupe de disponibilité SQL Server et du test d'un basculement.

Tester la journalisation dans SQL Server à l’aide de l’écouteur de groupe de disponibilité

  1. Utilisez sqlcmd pour vous connecter au nœud principal de SQL Server en utilisant le nom de l'écouteur de groupe de disponibilité :

    • Utilisez un compte de connexion qui a été créé précédemment et remplacez <YourPassword> par le mot de passe correct. L'exemple suivant utilise le compte de connexion sa qui a été créé avec SQL Server.
    sqlcmd -S ag1-listener -U sa -P <YourPassword>
    
  2. Vérifiez le nom du serveur auquel vous êtes connecté. Exécutez la commande suivante dans sqlcmd :

    SELECT @@SERVERNAME;
    

    Votre sortie doit présenter le nœud principal actif. Si vous n’avez jamais testé un basculement, il s’agit de VM1.

    Quittez la session SQL Server en tapant la commande exit.

Tester un basculement

  1. Exécutez la commande suivante pour faire basculer manuellement le réplica principal vers <VM2> ou vers un autre réplica. Remplacez <VM2> par le nom du serveur.

    sudo pcs resource move ag_cluster-master <VM2> --master
    
  2. Si vous vérifiez vos contraintes, vous verrez qu’une autre contrainte a été ajoutée en raison du basculement manuel :

    sudo pcs constraint list --full
    

    Vous constatez qu'une contrainte associée à l'ID cli-prefer-ag_cluster-master a été ajoutée.

  3. Supprimez la contrainte avec l’ID cli-prefer-ag_cluster-master à l’aide de la commande suivante :

    sudo pcs constraint remove cli-prefer-ag_cluster-master
    
  4. Vérifiez vos ressources de cluster à l’aide de la commande sudo pcs resource. Vous devriez voir que l’instance principale est désormais <VM2>.

    Notes

    Cet article contient des références au terme esclave, un terme que Microsoft n’utilise plus. Lorsque le terme sera supprimé du logiciel, nous le supprimerons de cet article.

    [<username>@<VM1> ~]$ sudo pcs resource
    Master/Slave Set: ag_cluster-master [ag_cluster]
        Masters: [ <VM2> ]
        Slaves: [ <VM1> <VM3> ]
    Resource Group: virtualip_group
        azure_load_balancer        (ocf::heartbeat:azure-lb):      Started <VM2>
        virtualip  (ocf::heartbeat:IPaddr2):       Started <VM2>
    
  5. Utilisez sqlcmd pour vous connecter à votre réplica principal en utilisant le nom de l'écouteur :

    • Utilisez un compte de connexion qui a été créé précédemment et remplacez <YourPassword> par le mot de passe correct. L'exemple suivant utilise le compte de connexion sa qui a été créé avec SQL Server.
    sqlcmd -S ag1-listener -U sa -P <YourPassword>
    
  6. Vérifiez le serveur auquel vous êtes connecté. Exécutez la commande suivante dans sqlcmd :

    SELECT @@SERVERNAME;
    

    Vous constatez que vous êtes maintenant connecté à la machine virtuelle vers laquelle vous avez basculé.

Étape suivante

Pour utiliser un écouteur de groupe de disponibilité pour vos instances SQL Server, vous devez créer et configurer un équilibreur de charge.