Configurer un écouteur DNN pour un groupe de disponibilité

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

Conseil

Il existe de nombreuses méthodes pour déployer un groupe de disponibilité. Simplifiez votre déploiement pour éviter d’utiliser un équilibreur de charge Azure ou un nom de réseau distribué (DNN) pour votre groupe de disponibilité Always On, et créez vos machines virtuelles SQL Server dans plusieurs sous-réseaux au sein du même réseau virtuel Azure. Si vous avez déjà créé votre groupe de disponibilité dans un seul sous-réseau, vous pouvez le migrer vers un environnement multi-sous-réseau.

Avec Microsoft SQL Server sur des machines virtuelles Azure dans un seul sous-réseau, le nom de réseau distribué (DNN) achemine le trafic vers la ressource en cluster appropriée. Il permet de se connecter plus facilement à un groupe de disponibilité Always On qu’avec l’écouteur de nom de réseau virtuel (VNN), sans avoir à utiliser Azure Load Balancer.

Cet article vous apprend à configurer un écouteur DNN pour remplacer l’écouteur VNN et à acheminer le trafic vers votre groupe de disponibilité avec Microsoft SQL Server sur des machines virtuelles Azure pour la haute disponibilité et la récupération d’urgence (HADR).

Pour une autre option de connectivité, utilisez plutôt un écouteur VNN et Azure Load Balancer.

Vue d’ensemble

Un écouteur DNN (Distributed Network Name) remplace l’écouteur du groupe de disponibilité VNN (nom de réseau virtuel traditionnel) lorsqu’il est utilisé avec des groupes de disponibilité Always On sur des machines virtuelles SQL Server. Cela annule la nécessité d’un Azure Load Balancer pour acheminer le trafic, ce qui simplifie le déploiement, la maintenance et l’amélioration du basculement.

Utilisez l’écouteur DNN pour remplacer un écouteur VNN existant, ou utilisez-le conjointement avec un écouteur VNN existant afin que votre groupe de disponibilité dispose de deux points de connexion distincts : l’un utilisant le nom de l’écouteur VNN (et le port s’il n’est pas défini par défaut) et l’autre à l’aide du nom et du port de l’écouteur DNN.

Attention

Le comportement du routage en cas d’utilisation d’un écouteur DNN est différent quand vous utilisez un écouteur VNN. N’utilisez pas le port 1433. Pour en savoir plus, consultez la section Considérations relatives au port, plus loin dans cet article.

Prérequis

Avant d’effectuer les étapes décrites dans cet article, vous devez déjà disposer des éléments suivants :

Création du script

Utilisez PowerShell pour créer la ressource de nom de réseau distribué (DNN) et l’associer à votre groupe de disponibilité.

Pour ce faire, procédez comme suit :

  1. Ouvrez un éditeur de texte, tel que le Bloc-notes.

  2. Copiez et collez le script suivant :

    param (
       [Parameter(Mandatory=$true)][string]$Ag,
       [Parameter(Mandatory=$true)][string]$Dns,
       [Parameter(Mandatory=$true)][string]$Port
    )
    
    Write-Host "Add a DNN listener for availability group $Ag with DNS name $Dns and port $Port"
    
    $ErrorActionPreference = "Stop"
    
    # create the DNN resource with the port as the resource name
    Add-ClusterResource -Name $Port -ResourceType "Distributed Network Name" -Group $Ag 
    
    # set the DNS name of the DNN resource
    Get-ClusterResource -Name $Port | Set-ClusterParameter -Name DnsName -Value $Dns 
    
    # start the DNN resource
    Start-ClusterResource -Name $Port
    
    
    $Dep = Get-ClusterResourceDependency -Resource $Ag
    if ( $Dep.DependencyExpression -match '\s*\((.*)\)\s*' )
    {
    $DepStr = "$($Matches.1) or [$Port]"
    }
    else
    {
    $DepStr = "[$Port]"
    }
    
    Write-Host "$DepStr"
    
    # add the Dependency from availability group resource to the DNN resource
    Set-ClusterResourceDependency -Resource $Ag -Dependency "$DepStr"
    
    
    #bounce the AG resource
    Stop-ClusterResource -Name $Ag
    Start-ClusterResource -Name $Ag
    
  3. Enregistrez le script sous la forme d’un fichier de .ps1, tel que add_dnn_listener.ps1.

Exécutez le script

Pour créer l’écouteur DNN, exécutez le script en passant les paramètres pour le nom du groupe de disponibilité, le nom de l’écouteur et le port.

Par exemple, en supposant que le nom du groupe de disponibilité ag1, le nom de l’écouteur dnnlsnret le port de l’écouteur 6789, procédez comme suit :

  1. Ouvrez un outil d’interface de ligne de commande, tel que l’invite de commandes ou PowerShell.

  2. Accédez à l’emplacement où vous avez enregistré le script .ps1 , tel que c:\Documents.

  3. Exécutez le script : add_dnn_listener.ps1 <ag name> <listener-name> <listener port>. Par exemple :

    c:\Documents> .\add_dnn_listener.ps1 ag1 dnnlsnr 6789
    

Vérifiez l’écouteur

Utilisez SQL Server Management Studio ou Transact-SQL pour confirmer que votre écouteur DNN est correctement créé.

SQL Server Management Studio

Développez écouteurs de groupe de disponibilité dans SQL Server Management Studio (SSMS) pour afficher votre écouteur DNN :

View the DNN listener under availability group listeners in SQL Server Management Studio (SSMS)

Transact-SQL

Utilisez Transact-SQL pour afficher l’état de l’écouteur DNN :

SELECT * FROM SYS.AVAILABILITY_GROUP_LISTENERS

La valeur 1 pour is_distributed_network_name indique que l’écouteur est un écouteur DNN (Distributed Network Name) :

Use sys.availability_group_listeners to identify DNN listeners that have a value of 1 in is_distributed_network_name

Mettre à jour une chaîne de connexion

Mettez à jour la chaîne de connexion pour toutes les applications qui doivent se connecter à l’écouteur DNN. La chaîne de connexion à l’écouteur DNN doit fournir le numéro de port DNN et spécifier MultiSubnetFailover=True dans la chaîne de connexion. Si le client SQL ne prend pas en charge le paramètre MultiSubnetFailover=True, il n’est pas compatible avec un écouteur DNN.

Voici un exemple de chaîne de connexion pour le nom d’écouteur DNN_Listener et le port 6789 :

DataSource=DNN_Listener,6789;MultiSubnetFailover=True

Test de basculement

Testez le basculement du groupe de disponibilité pour garantir la fonctionnalité.

Pour tester le basculement, procédez comme suit :

  1. Connectez-vous à l’écouteur DNN ou à l’un des réplicas à l’aide de SQL Server Management Studio (SSMS).
  2. Développez Groupe de disponibilité Always On dans Explorateur d’objets.
  3. Cliquez avec le bouton droit sur le groupe de disponibilité, puis choisissez Type de basculement pour ouvrir l’Assistant basculement.
  4. Suivez les invites pour choisir une cible de basculement et faire basculer le groupe de disponibilité sur un réplica secondaire.
  5. Vérifiez que la base de données est dans un état synchronisé sur le nouveau réplica principal.
  6. (Facultatif) Effectuez une restauration automatique vers le réplica principal d’origine ou un autre réplica secondaire.

Tester la connectivité

Pour tester la connectivité à votre écouteur DNN, procédez comme suit :

  1. Ouvrez SQL Server Management Studio.
  2. Connectez-vous à votre écouteur DNN.
  3. Ouvrez une nouvelle fenêtre de requête et vérifiez le réplica auquel vous êtes connecté en exécutant SELECT @@SERVERNAME.
  4. Faites basculer le groupe de disponibilité sur un autre réplica.
  5. Après un laps de temps raisonnable, exécutez SELECT @@SERVERNAME pour confirmer que votre groupe de disponibilité est maintenant hébergé sur un autre réplica.

Limites

  • Les écouteurs DNN DOIVENT être configurés avec un seul port. Le port ne doit pas être partagé avec une autre connexion sur un réplica.
  • Le client qui se connecte à l’écouteur DNN doit prendre en charge le paramètre MultiSubnetFailover=True dans la chaîne de connexion.
  • Il peut y avoir plus de points à prendre en compte lorsque vous travaillez avec d’autres fonctionnalités de Microsoft SQL Server et un groupe de disponibilité avec un DNN. Pour plus d’informations, consultez AG avec l’interopérabilité de DNN.

Considérations relatives au port

Les écouteurs DNN sont conçus pour écouter toutes les adresses IP, mais sur un seul port spécifique. La résolution de l’entrée DNS du nom de l’écouteur doit correspondre aux adresses de tous les réplicas du groupe de disponibilité. Cela s’effectue automatiquement à l’aide du script PowerShell fourni dans la section Créer un script. Dans la mesure où les écouteurs DNN acceptent les connexions sur toutes les adresses IP, il est essentiel que le port d’écoute soit unique et qu’il ne soit utilisé par aucun autre réplica du groupe de disponibilité. Dans la mesure où SQL Server écoute par défaut sur le port 1433, directement ou via le service SQL Browser, l’utilisation du port 1433 pour l’écouteur DNN est vivement déconseillée.

Si le port d’écoute choisi pour l’écouteur VNN se trouve dans la plage 49 152 à 65 536 (qui est la plage de ports dynamiques par défaut pour TCP/IP, ajoutez une exclusion pour ce port. Vous empêcherez ainsi d’assigner dynamiquement le même port à d’autres systèmes.

Vous pouvez ajouter une exclusion de port avec la commande suivante : netsh int ipv4 add excludedportrange tcp startport=<Listener Port> numberofports=1 store=persistent

Étapes suivantes

Une fois le groupe de disponibilité déployé, envisagez d’optimiser les paramètres HADR pour SQL Server sur les machines virtuelles Azure.

Pour en savoir plus, consultez :