Configurer un écouteur ILB pour des groupes de disponibilité sur des machines virtuelles Azure SQL Server
Vue d’ensemble
Important
Azure dispose de deux modèles de déploiement différents pour créer et utiliser des ressources : Azure Resource Manager et classique. Cet article traite de l’utilisation du modèle de déploiement classique. Pour la plupart des nouveaux déploiements, nous recommandons d’utiliser le modèle Resource Manager.
Afin de configurer un écouteur pour un groupe de disponibilité Always On dans le modèle Resource Manager, voir Configurer un équilibreur de charge pour un groupe de disponibilité Always On dans Azure.
Votre groupe de disponibilité peut contenir des réplicas locaux uniquement, Azure uniquement, ou locaux et Azure pour les configurations hybrides. Les réplicas Azure peuvent se trouver dans une même région ou dans plusieurs régions qui utilisent plusieurs réseaux virtuels. Les procédures suivantes de cet article supposent que vous avez déjà configuré un groupe de disponibilité, mais pas un écouteur.
Instructions et limitations pour les écouteurs internes
L’utilisation d’un équilibreur de charge interne (ILB) avec un écouteur de groupe de disponibilité dans Azure doit respecter les conditions suivantes :
- L'écouteur du groupe de disponibilité est pris en charge sur Windows Server 2008 R2, Windows Server 2012 et Windows Server 2012 R2.
- Un seul écouteur du groupe de disponibilité interne est pris en charge pour chaque service cloud, car l'écouteur est configuré sur l'équilibreur de charge interne, et il n’y a qu’un seul équilibreur de charge interne pour chaque service cloud. Toutefois, il est possible de créer plusieurs écouteurs externes. Pour plus d’informations, voir Configurer un écouteur externe pour les groupes de disponibilité Always On dans Azure.
Déterminer l'accessibilité de l'écouteur
Il est important de savoir qu’il existe deux manières de configurer un écouteur de groupe de disponibilité dans Azure. Ces méthodes diffèrent dans le type d’équilibrage de charge Azure que vous utilisez lorsque vous créez l’écouteur. Le tableau suivant décrit ces différences :
Type d’équilibrage de charge | Implémentation | Contexte d'utilisation : |
---|---|---|
Externe | Utilise l’adresse IP virtuelle publique du service cloud qui héberge les machines virtuelles. | Vous devez accéder à l’écouteur en dehors du réseau virtuel, notamment depuis Internet. |
Interne | Utilise un équilibrage de charge interne avec une adresse privée pour l’écouteur. | Vous ne pouvez accéder à l’écouteur qu’à partir du même réseau virtuel. Cet accès inclut un réseau privé virtuel de site à site dans des scénarios hybrides. |
Important
Pour un écouteur qui utilise l’adresse IP virtuelle publique du service cloud (équilibrage de charge externe), tant que le client, l’écouteur et les bases de données se trouvent dans la même région Azure, aucuns frais de sortie ne vous seront facturés. Sinon, les données retournées par l’écouteur sont considérées comme une sortie et facturées au taux de transfert de données normal.
Un équilibrage de charge interne ne peut être configuré que dans des réseaux virtuels à portée régionale. Les réseaux virtuels existants qui ont été configurés pour un groupe d’affinités ne peuvent pas utiliser un équilibrage de charge interne. Pour plus d’informations, voir Présentation de l’équilibrage de charge interne.
Cet article se concentre sur la création d’un écouteur qui utilise un équilibreur de charge interne. Si vous avez besoin d’un écouteur public ou externe, consultez la version de cet article qui explique comment configurer un écouteur externe.
Créer des points de terminaison de machine virtuelle à charge équilibrée avec retour direct du serveur
Vous créez tout d’abord un équilibreur de charge interne en exécutant le script ultérieurement dans cette section.
Créez un point de terminaison avec équilibrage de charge pour chaque machine virtuelle qui héberge un réplica Azure. Si vous avez des réplicas dans plusieurs régions, chaque réplica de cette région doit se trouver dans le même service cloud sur le même réseau virtuel Azure. La création de réplicas de groupe de disponibilité couvrant plusieurs régions Azure nécessite de configurer plusieurs réseaux virtuels. Pour plus d’informations sur la configuration d’une connexion entre des réseaux virtuels, voir Configurer une connexion de réseau virtuel à réseau virtuel.
Dans le portail Azure, accédez à chaque machine virtuelle qui héberge un réplica pour afficher les détails.
Cliquez sur l'onglet Points de terminaison de chacune machine virtuelle.
Vérifiez que le Nom et le Port public du point de terminaison de l’écouteur ne sont pas déjà utilisés. Dans l'exemple de cette section, le nom est MyEndpoint et le port est 1433.
Sur votre client local, téléchargez et installez le dernier module PowerShell.
Lancez Azure PowerShell.
Une nouvelle session PowerShell s'ouvre avec les modules d'administration Azure chargés.Exécutez
Get-AzurePublishSettingsFile
. Cette applet de commande vous dirige vers un navigateur de façon à télécharger un fichier de paramètres de publication dans un répertoire local. Vous serez peut-être invité à entrer les informations d'identification de connexion de votre abonnement Azure.Exécutez la commande
Import-AzurePublishSettingsFile
suivante avec le chemin d'accès du fichier de paramètres de publication que vous avez téléchargé :Import-AzurePublishSettingsFile -PublishSettingsFile <PublishSettingsFilePath>
Une fois le fichier de paramètres de publication importé, vous pouvez gérer votre abonnement Azure dans la session PowerShell.
Affectez une adresse IP statique pour l’équilibrage de charge interne. Examinez la configuration actuelle du réseau virtuel en exécutant la commande suivante :
(Get-AzureVNetConfig).XMLConfiguration
Notez le nom Subnet du sous-réseau qui contient les machines virtuelles qui hébergent les réplicas. Ce nom sera utilisé dans le paramètre $SubnetName du script.
Notez le nom VirtualNetworkSite et la valeur AddressPrefix de début pour le sous-réseau qui contient les machines virtuelles qui hébergent les réplicas. Recherchez ensuite une adresse IP disponible en transférant les deux valeurs à la commande
Test-AzureStaticVNetIP
et en examinant la valeur AvailableAddresses. Par exemple, si le réseau virtuel est nommé MyVNet et a une plage d’adresses de sous-réseau démarrant avec 172.16.0.128, la commande suivante répertorie les adresses disponibles :(Test-AzureStaticVNetIP -VNetName "MyVNet"-IPAddress 172.16.0.128).AvailableAddresses
Sélectionnez l’une des adresses disponibles et utilisez-la dans le paramètre $ILBStaticIP du script à l’étape suivante.
Copiez le script PowerShell suivant dans un éditeur de texte puis définissez les valeurs des variables en fonction de votre environnement. Les valeurs par défaut ont été fournies pour certains paramètres.
Les déploiements existants qui utilisent des groupes d'affinités ne peuvent pas ajouter un équilibrage de charge interne. Pour plus d’informations sur les exigences liées à l’équilibreur de charge interne, consultez la rubrique Présentation de l’équilibrage de charge interne.
Notez que, si votre groupe de disponibilité s'étend sur plusieurs régions Azure, vous devez exécuter le script une fois dans chaque centre de données pour le service cloud et les nœuds qui se trouvent dans ce centre de données.
# Define variables $ServiceName = "<MyCloudService>" # the name of the cloud service that contains the availability group nodes $AGNodes = "<VM1>","<VM2>","<VM3>" # all availability group nodes containing replicas in the same cloud service, separated by commas $SubnetName = "<MySubnetName>" # subnet name that the replicas use in the virtual network $ILBStaticIP = "<MyILBStaticIPAddress>" # static IP address for the ILB in the subnet $ILBName = "AGListenerLB" # customize the ILB name or use this default value # Create the ILB Add-AzureInternalLoadBalancer -InternalLoadBalancerName $ILBName -SubnetName $SubnetName -ServiceName $ServiceName -StaticVNetIPAddress $ILBStaticIP # Configure a load-balanced endpoint for each node in $AGNodes by using ILB ForEach ($node in $AGNodes) { Get-AzureVM -ServiceName $ServiceName -Name $node | Add-AzureEndpoint -Name "ListenerEndpoint" -LBSetName "ListenerEndpointLB" -Protocol tcp -LocalPort 1433 -PublicPort 1433 -ProbePort 59999 -ProbeProtocol tcp -ProbeIntervalInSeconds 10 -InternalLoadBalancerName $ILBName -DirectServerReturn $true | Update-AzureVM }
Après avoir défini les variables, copiez le script de l'éditeur de texte dans votre session PowerShell pour l'exécuter. Si l'invite affiche >>, appuyez de nouveau sur Entrée pour vous assurer que le script s'exécute.
Vérifiez que KB2854082 est installé le cas échéant
Ensuite, si des serveurs du cluster exécutent Windows Server 2008 R2 ou Windows Server 2012, vous devez vérifier que le correctif logiciel KB2854082 est installé sur chacun des serveurs locaux ou des machines virtuelles Azure qui font partie du cluster. Ce correctif logiciel doit également être installé sur tout serveur ou une machine virtuelle faisant partie du cluster, mais pas du groupe de disponibilité.
Dans la session Bureau à distance, téléchargez KB2854082 dans un répertoire local pour chacun des nœuds du cluster. Ensuite, installez le correctif logiciel sur chaque nœud du cluster séquentiellement. Si le service de cluster est en cours d'exécution sur le nœud de cluster, le serveur est redémarré à la fin de l'installation du correctif.
Avertissement
L’arrêt du service de cluster ou le redémarrage du serveur affecte l’intégrité du quorum de votre cluster et le groupe de disponibilité et peut entraîner la mise hors connexion du cluster. Pour assurer la haute disponibilité de votre cluster lors de l'installation, vérifiez que :
- L’intégrité du quorum du cluster est optimale.
- Avant d’installer le correctif logiciel sur un nœud, tous les nœuds du cluster sont en ligne.
- Avant d’installer le correctif logiciel sur un autre nœud du cluster, autorisez l’installation complète du correctif logiciel sur un nœud, redémarrage complet du serveur inclus.
Ouvrez les ports de pare-feu dans des nœuds de groupe de disponibilité
Au cours de cette étape, vous allez créer une règle de pare-feu pour ouvrir le port de la sonde du point de terminaison à charge équilibrée (59999, comme indiqué précédemment) et une autre règle pour ouvrir le port de l’écouteur de groupe de disponibilité. Comme vous avez créé le point de terminaison à charge équilibrée sur les machines virtuelles qui contiennent des réplicas du groupe de disponibilité, vous devez ouvrir le port de la sonde et le port de l’écouteur sur les machines virtuelles respectives.
Sur les machines virtuelles hébergeant les réplicas, démarrez le Pare-feu Windows avec fonctions avancées de sécurité.
Cliquez avec le bouton droit sur Règles de trafic entrant, puis cliquez sur Nouvelle règle.
Dans la page Type de règle, sélectionnez Port, puis cliquez sur Suivant.
Dans la page Protocole et ports, sélectionnez TCP, tapez 59999 dans la zone Ports locaux spécifiques, puis cliquez sur Suivant.
Dans la page Action, sélectionnez Autoriser la connexion, puis cliquez sur Suivant.
Dans la page Profil, acceptez les paramètres par défaut puis cliquez sur Suivant.
Dans la zone de texte Nom de la page Nom, spécifiez un nom pour la règle, comme Port de la sonde d’écouteur toujours actif, puis cliquez sur Terminer.
Répétez les étapes précédentes pour le port de l’écouteur de groupe de disponibilité (comme spécifié précédemment à l’aide du paramètre $EndpointPort du script), puis indiquez un nom de règle approprié, tel que Port de l’écouteur toujours actif.
Créer l'écouteur de groupe de disponibilité
Créez l’écouteur de groupe de disponibilité en deux étapes. Tout d’abord, créez la ressource de cluster de point d’accès client et configurez les dépendances. Configurez ensuite les ressources de cluster dans PowerShell.
Créez le point d’accès client et configurez les dépendances de cluster
Dans cette étape, vous créez manuellement l’écouteur du groupe de disponibilité dans le Gestionnaire du cluster de basculement et dans SQL Server Management Studio.
Ouvrez le Gestionnaire du cluster de basculement à partir du nœud qui héberge le réplica principal.
Sélectionnez le nœud Réseaux, puis notez le nom de réseau du cluster. Ce nom est utilisé dans la variable $ClusterNetworkName dans le script PowerShell.
Développez le nom du cluster, puis cliquez sur Rôles.
Dans le volet Rôles, cliquez avec le bouton droit sur le nom du groupe de disponibilité, puis sélectionnez Ajouter une ressource>Point d’accès client.
Dans la zone Nom, créez un nom pour ce nouvel écouteur, cliquez à deux reprises sur Suivant, puis cliquez sur Terminer.
Ne mettez pas l'écouteur ou la ressource en ligne à ce stade.Cliquez sur l’onglet Ressources, puis développez le point d’accès client vous venez de créer. La ressource d’adresse IP de chaque réseau de cluster dans votre cluster est affichée. S’il s’agit d’une solution basée uniquement sur Azure, une seule ressource d’adresse IP est affichée.
Effectuez l'une des opérations suivantes :
Pour configurer une solution hybride :
a. Cliquez avec le bouton droit sur la ressource d’adresse IP qui correspond à votre sous-réseau local, puis sélectionnez Propriétés. Notez le nom de l’adresse IP et le nom du réseau.
b. Sélectionnez Adresse IP statique, affectez une adresse IP inutilisée, puis cliquez sur OK.
Pour configurer une solution basée uniquement sur Azure :
a. Cliquez avec le bouton droit sur la ressource d’adresse IP qui correspond à votre sous-réseau Azure, puis sélectionnez Propriétés.
Notes
Si la mise en ligne de l’écouteur échoue par la suite en raison d’un conflit avec l’adresse IP sélectionnée par DHCP, vous pouvez configurer une adresse IP statique valide dans cette fenêtre de propriétés.
b. Dans la même fenêtre de propriétés Adresse IP, modifiez le Nom de l'adresse IP.
Ce nom est utilisé dans la variable $IPResourceName du script PowerShell. Si votre solution couvre plusieurs réseaux virtuels Azure, répétez cette étape pour chaque ressource IP.
Configurez les ressources de cluster dans PowerShell
Pour l'équilibreur de charge interne, vous devez utiliser son adresse IP créée précédemment. Pour obtenir cette adresse IP dans PowerShell, utilisez le script suivant :
# Define variables $ServiceName="<MyServiceName>" # the name of the cloud service that contains the AG nodes (Get-AzureInternalLoadBalancer -ServiceName $ServiceName).IPAddress
Sur l’une des machines virtuelles, copiez le script PowerShell pour votre système d’exploitation dans un éditeur de texte, puis définissez les variables sur les valeurs notées précédemment.
Pour Windows Server 2012 ou version ultérieure, utilisez le script suivant :
# Define variables $ClusterNetworkName = "<MyClusterNetworkName>" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name) $IPResourceName = "<IPResourceName>" # the IP address resource name $ILBIP = "<X.X.X.X>" # the IP address of the ILB Import-Module FailoverClusters Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"="59999";"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
Pour Windows Server 2008 R2, utilisez le script suivant :
# Define variables $ClusterNetworkName = "<MyClusterNetworkName>" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name) $IPResourceName = "<IPResourceName>" # the IP address resource name $ILBIP = "<X.X.X.X>" # the IP address of the ILB Import-Module FailoverClusters cluster res $IPResourceName /priv enabledhcp=0 address=$ILBIP probeport=59999 subnetmask=255.255.255.255
Une fois les variables définies, ouvrez une fenêtre Windows PowerShell avec élévation de privilèges, puis collez le script de l'éditeur de texte dans votre session Azure PowerShell pour l'exécuter. Si l'invite affiche >>, appuyez de nouveau sur Entrée pour vous assurer que le script s'exécute.
Répétez les étapes précédentes pour chaque machine virtuelle.
Ce script configure la ressource Adresse IP avec l'adresse IP du service cloud et définit d'autres paramètres, tels que le port de la sonde. Lorsque la ressource d'adresse IP est mise en ligne, elle peut ensuite répondre à l'interrogation sur le port de la sonde du point de terminaison à équilibrage de charge créé précédemment.
Mettre l'écouteur en ligne
Dans le Gestionnaire du cluster de basculement, développez les Rôles, puis mettez votre groupe de disponibilité en surbrillance.
Dans l’onglet Ressources, cliquez avec le bouton droit sur le nom de l’écouteur, puis cliquez sur Propriétés.
Cliquez sur l'onglet Dépendances . Si plusieurs ressources sont répertoriées, vérifiez que les adresses IP ont des dépendances OR (et non des dépendances AND).
Cliquez sur OK.
Cliquez avec le bouton droit sur le nom de l’écouteur, puis cliquez sur Mettre en ligne.
Lorsque l’écouteur est en ligne, dans l’onglet Ressources, cliquez avec le bouton droit sur le groupe de disponibilité, puis cliquez sur Propriétés.
Créez une dépendance sur la ressource de nom de l’écouteur (pas le nom de ressources d’adresse IP), puis cliquez sur OK.
Démarrez SQL Server Management Studio, puis connectez-vous au réplica principal.
Accédez auxécouteurs de><groupe de disponibilité AlwaysOn haute disponibilité AvailabilityGroupName>>.>
Le nom de l’écouteur que vous avez créé dans le Gestionnaire du cluster de basculement doit être affiché.Cliquez avec le bouton droit sur le nom de l’écouteur puis cliquez sur Propriétés.
Dans la zone Port, spécifiez le numéro de port pour l’écouteur du groupe de disponibilité à l’aide de l’élément $EndpointPort utilisé précédemment (dans ce didacticiel, la valeur par défaut était 1433), puis cliquez sur OK.
Éléments de suivi
Une fois que vous avez créé l’écouteur de groupe de disponibilité, il peut être nécessaire d’ajuster les paramètres de cluster RegisterAllProvidersIP et HostRecordTTL pour la ressource de l’écouteur. Ces paramètres peuvent réduire le délai de reconnexion après un basculement, ce qui peut empêcher des délais d’expiration de la connexion. Pour plus d’informations sur ces paramètres et voir des exemples de code, consultez la rubrique Créer ou configurer un écouteur de groupe de disponibilité.
Tester l'écouteur du groupe de disponibilité (au sein du même réseau virtuel)
Au cours de cette étape, vous allez tester l’écouteur de groupe de disponibilité à l’aide d’une application cliente s’exécutant sur le même réseau.
La connectivité client présente les exigences suivantes :
- Les connexions client à l’écouteur doivent provenir de machines résidant dans un service cloud autre que celui qui héberge les réplicas de disponibilité AlwaysOn.
- Si les réplicas Always On figurent dans des sous-réseaux distincts, les clients doivent spécifier MultisubnetFailover=True dans la chaîne de connexion. Cette condition entraîne des tentatives parallèles de connexion aux réplicas dans les différents sous-réseaux. Ce scénario inclut un déploiement de groupe de disponibilité AlwaysOn dans plusieurs régions.
Par exemple, vous pouvez vous connecter à l’écouteur à partir de l’une des machines virtuelles du même réseau virtuel Azure (mais n’hébergeant pas de réplica). Un moyen simple d’effectuer ce test consiste à connecter SQL Server Management Studio à l’écouteur de groupe de disponibilité. Une autre méthode simple consiste à exécuter SQLCMD.exe, comme suit :
sqlcmd -S "<ListenerName>,<EndpointPort>" -d "<DatabaseName>" -Q "select @@servername, db_name()" -l 15
Notes
Si la valeur EndpointPort est définie sur 1433, vous n’êtes pas tenu de la spécifier dans l’appel. L’appel précédent suppose également que la machine cliente est associée au même domaine et que l’appelant a reçu des autorisations pour la base de données à l’aide de l’authentification Windows.
Lorsque vous testez l’écouteur, procédez au basculement du groupe de disponibilité pour vérifier que les clients peuvent se connecter à l’écouteur d’un basculement à un autre.
Étapes suivantes
Outre la connexion automatique des clients au réplica principal, un écouteur peut servir à rediriger des charges de travail en lecture seule vers des réplicas secondaires. Cette utilisation peut améliorer les performances et l’évolutivité de votre solution globale. Pour plus d’informations, voir Use ReadIntent Routing with Azure Always On availability group listener (Utiliser le routage ReadIntent avec l’écouteur de groupe de disponibilité Azure AlwaysOn).
Notes
Pour obtenir des conseils de dépannage sur les écouteurs Azure, voir Troubleshooting availability group listener in Azure (Dépannage de l’écouteur de groupe de disponibilité dans Azure) dans le blog de l’équipe de support AlwaysOn.
Pour en savoir plus sur l’utilisation de SQL Server dans Azure, voir SQL Server sur les machines virtuelles.