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 :
- SQL Server à partir de SQL Server 2019 CU8 et versions ultérieures, SQL Server 2017 CU25 et versions ultérieures, ou SQL Server 2016 SP3 et versions ultérieures sur Windows Server 2016 et versions ultérieures.
- Avoir décidé que le nom du réseau distribué est l’option de connectivité appropriée pour votre solution HADR.
- Avoir configuré votre groupe de disponibilité Always On.
- Avoir installé la version la plus récente de PowerShell.
- Avoir identifié le seul port à utiliser pour l’écouteur DNN. Le port utilisé pour un écouteur DNN doit être unique parmi tous les réplicas du groupe de disponibilité ou de l’instance de cluster de basculement. Aucune autre connexion ne peut partager le même port.
Remarque
Si vous avez plusieurs groupes de disponibilité ou instances FCI sur le même cluster et que vous utilisez un écouteur DNN ou VNN, chaque groupe de disponibilité ou instance FCI a besoin de son propre point de connexion indépendant.
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 :
Ouvrez un éditeur de texte, tel que le Bloc-notes.
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
Enregistrez le script sous la forme d’un fichier de
.ps1
, tel queadd_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 dnnlsnr
et le port de l’écouteur 6789
, procédez comme suit :
Ouvrez un outil d’interface de ligne de commande, tel que l’invite de commandes ou PowerShell.
Accédez à l’emplacement où vous avez enregistré le script
.ps1
, tel que c:\Documents.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 :
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) :
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 :
- Connectez-vous à l’écouteur DNN ou à l’un des réplicas à l’aide de SQL Server Management Studio (SSMS).
- Développez Groupe de disponibilité Always On dans Explorateur d’objets.
- Cliquez avec le bouton droit sur le groupe de disponibilité, puis choisissez Type de basculement pour ouvrir l’Assistant basculement.
- Suivez les invites pour choisir une cible de basculement et faire basculer le groupe de disponibilité sur un réplica secondaire.
- Vérifiez que la base de données est dans un état synchronisé sur le nouveau réplica principal.
- (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 :
- Ouvrez SQL Server Management Studio.
- Connectez-vous à votre écouteur DNN.
- Ouvrez une nouvelle fenêtre de requête et vérifiez le réplica auquel vous êtes connecté en exécutant
SELECT @@SERVERNAME
. - Faites basculer le groupe de disponibilité sur un autre réplica.
- 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 :