Configurer un groupe de disponibilité pour un groupe de travail
S’applique à : SQL Server sur la machine virtuelle Azure
Cet article décrit les étapes nécessaires à la création d'un cluster indépendant du domaine Active Directory avec un groupe de disponibilité Always On ; c'est ce que l'on appelle également un cluster de groupe de travail. Cet article se concentre sur les étapes de préparation et de configuration du groupe de travail et du groupe de disponibilité, sans s'attarder sur les étapes décrites dans d'autres articles, comme la création du cluster ou le déploiement du groupe de disponibilité.
Prérequis
Afin de configurer un groupe de disponibilité pour un groupe de travail, vous devez disposer de ce qui suit :
- Au moins deux machines virtuelles Windows Server 2016 (ou version ultérieure) exécutant SQL Server 2016 (ou version ultérieure), déployées sur le même groupe à haute disponibilité, ou dans des zones de disponibilité différentes, et utilisant des adresses IP statiques
- Un réseau local avec un minimum de 4 adresses IP gratuites sur le sous-réseau
- Un compte sur chaque ordinateur du groupe d'administrateurs qui dispose également de droits d'administrateur système dans SQL Server
- Ports ouverts : TCP 1433, TCP 5022, TCP 59999
Pour référence, cet article utilise les paramètres suivants, mais ceux-ci peuvent être modifiés si nécessaire :
Nom | Paramètre |
---|---|
Nœud 1 | AGNode1 (10.0.0.4) |
Nœud 2 | AGNode2 (10.0.0.5) |
Nom du cluster | AGWGAG (10.0.0.6) |
Port d'écoute | AGListener (10.0.0.7) |
Suffixe DNS | ag.wgcluster.example.com |
Nom du groupe de travail | AGWorkgroup |
Définir un suffixe DNS
Au cours de cette étape, vous allez configurer le suffixe DNS des deux serveurs. Par exemple : ag.wgcluster.example.com
. Cela vous permettra d'utiliser le nom de l'objet auquel vous souhaitez vous connecter en tant qu'adresse complète sur votre réseau, par exemple AGNode1.ag.wgcluster.example.com
.
Pour configurer le suffixe DNS, procédez comme suit :
Connectez-vous à distance (via RDP) à votre premier nœud et ouvrez Gestionnaire de serveur.
Sélectionnez Serveur local, puis sélectionnez le nom de votre machine virtuelle sous Nom de l'ordinateur.
Sélectionnez Modifier... sous Pour renommer cet ordinateur... .
Renommez le groupe de travail afin de lui donner un nom significatif, par exemple
AGWORKGROUP
:Sélectionnez Autres... pour ouvrir la boîte de dialogue Nom d'ordinateur NetBIOS et suffixe DNS.
Entrez le nom de votre suffixe DNS sous Suffixe DNS principal de cet ordinateur, par exemple
ag.wgcluster.example.com
, puis sélectionnez OK :Vérifiez que le nom complet de l'ordinateur contient maintenant le suffixe DNS, puis sélectionnez OK pour enregistrer vos modifications :
Lorsque vous y êtes invité, redémarrez le serveur.
Répétez ces étapes sur tous les autres nœuds à utiliser pour le groupe de disponibilité.
Modifier un fichier hôte
En l’absence de répertoire actif, il n’y a aucun moyen d’authentifier les connexions Windows. Par conséquent, vous devez attribuer un niveau de confiance en modifiant le fichier hosts à l'aide d'un éditeur de texte.
Pour modifier le fichier hosts, procédez comme suit :
Connectez-vous à distance (via RDP) à votre machine virtuelle.
Utilisez l'Explorateur de fichiers pour accéder à
c:\windows\system32\drivers\etc
.Cliquez avec le bouton droit sur le fichier hosts et ouvrez-le dans le Bloc-notes (ou dans un autre éditeur de texte).
À la fin du fichier, ajoutez une entrée pour chaque nœud, ainsi que le groupe de disponibilité et l'écouteur sous la forme
IP Address, DNS Suffix #comment
, par exemple :10.0.0.4 AGNode1.ag.wgcluster.example.com #Availability group node 10.0.0.5 AGNode2.ag.wgcluster.example.com #Availability group node 10.0.0.6 AGWGAG.ag.wgcluster.example.com #Cluster IP 10.0.0.7 AGListener.ag.wgcluster.example.com #Listener IP
Définir des autorisations
En l'absence d'Active Directory pour gérer les autorisations, vous devez autoriser manuellement un compte Administrateur local non intégré à créer le cluster.
Pour ce faire, sur chaque nœud, exécutez la cmdlet PowerShell suivante dans une session PowerShell administrative :
new-itemproperty -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name LocalAccountTokenFilterPolicy -Value 1
Créer le cluster de basculement
Au cours de cette étape, vous allez créer le cluster de basculement. Pour en savoir plus sur ces étapes, suivez le tutoriel consacré au cluster de basculement.
Différences notables entre le tutoriel et ce qui doit être fait pour un cluster de groupes de travail :
- Désactivez Stockage et Espaces de stockage direct lors de l'exécution de la validation du cluster.
- Lors de l’ajout des nœuds au cluster, ajoutez le nom complet, par exemple :
AGNode1.ag.wgcluster.example.com
AGNode2.ag.wgcluster.example.com
- Décochez Ajouter la totalité du stockage disponible au cluster.
Une fois le cluster créé, attribuez une adresse IP de cluster statique. Pour ce faire, procédez comme suit :
Sur un des nœuds, ouvrez Gestionnaire du cluster de basculement, sélectionnez le cluster, cliquez avec le bouton droit sur Nom : <ClusterNam> sous Principales ressources du cluster, puis sélectionnez Propriétés.
Sélectionnez l'adresse IP sous Adresses IP, puis choisissez Modifier.
Sélectionnez Utiliser une adresse statique, fournissez l'adresse IP du cluster, puis sélectionnez OK :
Vérifiez que vos paramètres sont corrects, puis sélectionnez OK pour les enregistrer :
Créer un témoin cloud
Au cours de cette étape, vous allez configurer un témoin de partage cloud. Pour en savoir plus sur ces étapes, consultez Déployer un témoin cloud pour un cluster de basculement.
Activer la fonctionnalité de groupes de disponibilité
Au cours de cette étape, vous allez activer la fonctionnalité Groupes de disponibilité. Pour en savoir plus sur ces étapes, suivez le tutoriel consacré aux groupes de disponibilité.
Créer des clés et des certificats
Au cours de cette étape, vous allez créer les certificats utilisés par la connexion SQL sur le point de terminaison chiffré. Créez un dossier sur chaque nœud pour y conserver les sauvegardes des certificats, par exemple c:\certs
.
Remarque
Si vous ne spécifiez pas de date d'expiration pour le certificat, sa validité sera d'un an à partir de la date de création. Si le certificat expire, le contact entre les points de terminaison échoue.
Pour configurer le premier nœud, procédez comme suit :
Ouvrez SQL Server Management Studio, puis connectez-vous à votre premier nœud, par exemple
AGNode1
.Ouvrez une fenêtre Nouvelle requête et exécutez l'instruction Transact-SQL (T-SQL) suivante après la mise à jour vers un mot de passe complexe et sécurisé :
USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'PassWOrd123!'; GO --create a cert from the master key USE master; CREATE CERTIFICATE AGNode1Cert WITH SUBJECT = 'AGNode1 Certificate'; GO --Backup the cert and transfer it to AGNode2 BACKUP CERTIFICATE AGNode1Cert TO FILE = 'C:\certs\AGNode1Cert.crt'; GO
Créez ensuite le point de terminaison HADR et utilisez le certificat d'authentification en exécutant l'instruction Transact-SQL (T-SQL) suivante :
--CREATE or ALTER the mirroring endpoint CREATE ENDPOINT hadr_endpoint STATE = STARTED AS TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE AGNode1Cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL ); GO
Utilisez l'Explorateur de fichiers pour accéder à l'emplacement de votre certificat, par exemple
c:\certs
.Procédez manuellement à une copie du certificat, par exemple
AGNode1Cert.crt
, à partir du premier nœud, puis transférez-la au même emplacement sur le deuxième nœud.
Pour configurer le deuxième nœud, procédez comme suit :
Connectez-vous au deuxième nœud avec SQL Server Management Studio (SSMS), par exemple
AGNode2
.Dans une fenêtre Nouvelle requête, exécutez l'instruction Transact-SQL (T-SQL) suivante après la mise à jour vers un mot de passe complexe et sécurisé :
USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'PassWOrd123!'; GO --create a cert from the master key USE master; CREATE CERTIFICATE AGNode2Cert WITH SUBJECT = 'AGNode2 Certificate'; GO --Backup the cert and transfer it to AGNode1 BACKUP CERTIFICATE AGNode2Cert TO FILE = 'C:\certs\AGNode2Cert.crt'; GO
Créez ensuite le point de terminaison HADR et utilisez le certificat d'authentification en exécutant l'instruction Transact-SQL (T-SQL) suivante :
--CREATE or ALTER the mirroring endpoint CREATE ENDPOINT hadr_endpoint STATE = STARTED AS TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE AGNode2Cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL ); GO
Utilisez l'Explorateur de fichiers pour accéder à l'emplacement de votre certificat, par exemple
c:\certs
.Procédez manuellement à une copie du certificat, par exemple
AGNode2Cert.crt
, à partir du deuxième nœud, puis transférez-la au même emplacement sur le premier nœud.
Si le cluster comprend d'autres nœuds, répétez-y ces étapes, en modifiant les noms des certificats correspondants.
Créer des connexions
L'authentification par certificat est utilisée pour synchroniser les données entre les nœuds. Créez une connexion pour l'autre nœud, créez un utilisateur pour la connexion, créez un certificat pour la connexion afin d'utiliser le certificat sauvegardé, puis accordez la connexion sur le point de terminaison en miroir.
Pour ce faire, commencez par exécuter la requête Transact-SQL (T-SQL) suivante sur le premier nœud, par exemple AGNode1
:
--create a login for the AGNode2
USE master;
CREATE LOGIN AGNode2_Login WITH PASSWORD = 'PassWord123!';
GO
--create a user from the login
CREATE USER AGNode2_User FOR LOGIN AGNode2_Login;
GO
--create a certificate that the login uses for authentication
CREATE CERTIFICATE AGNode2Cert
AUTHORIZATION AGNode2_User
FROM FILE = 'C:\certs\AGNode2Cert.crt'
GO
--grant connect for login
GRANT CONNECT ON ENDPOINT::hadr_endpoint TO [AGNode2_login];
GO
Exécutez ensuite la requête Transact-SQL (T-SQL) suivante sur le deuxième nœud, par exemple AGNode2
:
--create a login for the AGNode1
USE master;
CREATE LOGIN AGNode1_Login WITH PASSWORD = 'PassWord123!';
GO
--create a user from the login
CREATE USER AGNode1_User FOR LOGIN AGNode1_Login;
GO
--create a certificate that the login uses for authentication
CREATE CERTIFICATE AGNode1Cert
AUTHORIZATION AGNode1_User
FROM FILE = 'C:\certs\AGNode1Cert.crt'
GO
--grant connect for login
GRANT CONNECT ON ENDPOINT::hadr_endpoint TO [AGNode1_login];
GO
Si le cluster comprend d'autres nœuds, répétez-y ces étapes, en modifiant les noms des certificats et des utilisateurs correspondants.
Configurer un groupe de disponibilité
Au cours de cette étape, vous allez configurer votre groupe de disponibilité et y ajouter vos bases de données. Ne créez pas d'écouteur pour le moment. Pour en savoir plus sur ces étapes, suivez le tutoriel consacré aux groupes de disponibilité. Lancez une procédure de basculement et de restauration automatique pour vérifier que tout fonctionne bien.
Notes
En cas d'échec du processus de synchronisation, vous devrez peut-être accorder temporairement à l'administrateur système NT AUTHORITY\SYSTEM
les droits nécessaires à la création des ressources de cluster sur le premier nœud, par exemple AGNode1
.
Configurer un équilibreur de charge
Dans cette dernière étape, vous allez configurer l’équilibreur de charge à l’aide du portail Azure ou de PowerShell.
Toutefois, il peut exister certaines limitations avec la GUI du cluster Windows. Par conséquent, vous devez utiliser PowerShell pour créer un point d’accès client ou le nom réseau de votre écouteur avec l’exemple de script suivant :
Add-ClusterResource -Name "IPAddress1" -ResourceType "IP Address" -Group "WGAG"
Get-ClusterResource -Name IPAddress1 | Set-ClusterParameter -Multiple @{"Network" = "Cluster Network 1";"Address" = "10.0.0.4";"SubnetMask" = "255.0.0.0";"EnableDHCP" = 0}
Add-ClusterResource -Name "IPAddress2" -ResourceType "IP Address" -Group "WGAG"
Get-ClusterResource -Name IPAddress2 | Set-ClusterParameter -Multiple @{"Network" = "Cluster Network 2";"Address" = "10.0.0.5";"SubnetMask" = "255.0.0.0";"EnableDHCP" = 0}
Add-ClusterResource -Name "TestName" -Group "WGAG" -ResourceType "Network Name"
Get-ClusterResource -Name "TestName" | Set-ClusterParameter -Multiple @{"DnsName" = "TestName";"RegisterAllProvidersIP" = 1}
Set-ClusterResourceDependency -Resource TestName -Dependency "[IPAddress1] or [IPAddress2]"
Start-ClusterResource -Name TestName -Verbose
É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 :