Haute Disponibilité Microsoft SQL Server (Always On) sans domaine Active Directory
Intro
J'ai eu à mettre en place la haute disponibilité pour Microsoft SQL Server dans un groupe de travail WORKGROUP donc hors domaine. Depuis Microsoft SQL Server 2017 la fonctionnalité Always On est disponible pour les versions standard (le licencing MSSQL Standard l'autorise mais pour seulement une seule base de données). Également, depuis Windows 2016 Server Standard le cluster de Haute Disponibilité est compatible dans un groupe de travail WORKGROUP.
- Mise à jour le 29 novembre 2020
Configuration
- OS : Windows 2019 Server Standard
- Microsoft SQL Server : 2019 Standard
Schéma de l'architecture
Créer les comptes de service Microsoft SQL (MSSQL01 et MSSQL02)
- ⚠️ : le paramètre /expires:never ne semble pas fonctionner il faudra donc préciser que le mot de passe n'expire jamais depuis la console de gestion des comptes utilisateurs :
net user mssqlservice MyPassw0rdMSSQL! /add /expires:never
net localgroup administrators mssqlservice /add
Installation de Microsoft SQL Server (MSSQL01 et MSSQL02)
- Il faut installer MSSQL sur les deux serveurs :
- Choisir l'édition. Comme je suis pauvre et en environnement de test, je peux utiliser la version d'Évaluation :
- Accepter les termes du contrat de licence :
- Il est fortement conseillé (mais pas obligatoire) de faire les mises à jour :
- Vérifier qu'il n'y a pas d'erreurs bloquantes et cliquer sur Suivant :
- Nous n'avons besoin que du Service Moteur de base de données :
- Paramétrer l'id de l'instance, qui est MSSQLSERVER par défaut :
- Utiliser les comptes de service par défaut :
- Sélectionner le mode d'authentification Windows et cliquer sur Ajouter l'utilisateur actuel pour ajouter le compte administrateur. Nous n'utiliserons pas l'authentification SQL Server :
- A la fin de l'installation redémarrer le serveur :
- L'installation est terminée, avant de redémarrer, vérifier qu'il n'y ait pas d'étapes en erreur :
Configuration réseau et DNS (MSSQL01 et MSSQL02)
- Ajouter les enregistrements DNS suivant dans le fichier C:\Windows\System32\drivers\etc\hosts :
192.168.1.196 mssql01
192.168.1.196 mssql01.priv
192.168.1.197 mssql02
192.168.1.197 mssql02.priv
192.168.1.198 wfc_mssql
192.168.1.198 wfc_mssql.priv
192.168.1.199 ha_mssql
192.168.1.199 ha_mssql.priv
- Ouvrir les Propriétés systèmes :
- Cliquer sur Modifier les paramètres :
- Ajouter un suffixe DNS principal :
- Dans le menu connexions réseau, aller dans les propriétés de sa carte réseau :
- Sélectionner Internet Protocol Version 4 (TCP/IPv4) et cliquer sur Propriétés :
- Désactiver l'enregistrement DNS :
- Décocher le paramètre «Enregistrer les adresses de cette connexion dans le système DNS» :
Failover Clustering (MSSQL01 et MSSQL02)
Afin d'activer la haute disponibilité nous allons installer le rôle Windows Failover Clustering.
Installation
Depuis l'interface graphique
- Depuis le Gestionnaire de serveur cliquer sur Ajouter des rôles et fonctionnalités :
- Choisir Installation basée sur un rôle ou une fonctionnalité :
- Sélectionner le serveur :
- Sélectionner Failover Clustering dans la liste :
- Cocher Redémarrer automatiquement puis cliquer sur suivant Installer :
- Enfin cliquer sur Fermer :
Installation depuis PowerShell
- Ou avec la commande PowerShell suivante :
PS C:\Windows\system32> Install-WindowsFeature -Name Failover-Clustering –IncludeManagementTools -Restart
Configuration du Failover Clustering (MSSQL01)
Configuration depuis l'interface graphique
- Ouvrir le gestionnaire du cluster de basculement :
- Ajouter les serveurs mssql :
- ⚠️ Afin d'accéder au partage administratif et ne pas avoir le message “vous n'avez pas de privilèges d'administration sur le serveur”, entrer la commande suivante sur les deux serveurs :
C:\Windows\system32>REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /f /D 1
- Lorsque les deux serveurs mssql ont été correctement ajoutés, cliquer sur Suivant :
- Ne pas exécuter les tests de validation et cliquer sur Suivant :
- Donner un Nom au cluster et paramétrer l'adresse ip :
- Cliquer sur Suivant pour démarrer la création du cluster :
- Le cluster est à présent créé, cliquer sur Terminer pour fermer l'assistant :
Configuration depuis PowerShell
- Entrer la commande PowerShell suivante :
PS C:\Windows\system32> New-Cluster -Name WFC_MSSQL -Node mssql01.priv, mssql02.priv -AdministrativeAccessPoint DNS -StaticAddress 192.168.1.198
Activer la fonctionnalité AlwaysOn Availability (MSSQL01 et MSSQL02)
Le cluster étant opérationnel, nous pouvons maintenant activer la fonctionnalité AlwaysOn Availability.
- Ouvrir le SQL Server Configuration Manager :
- Dans Services SQL Server aller dans les propriétés de SQL Server :
- Activer les groupes de disponibilité Always On :
- Changer le compte d'Ouverture de session :
- Utiliser le compte mssqlservice précédemment créé :
- Entrer le mot de passe pour notre compte de service mssqlservice :
- Redémmarer le service SQL Server :
Microsoft SQL Server Management Studio
- Télécharger et Installer Microsoft SQL Server Management Studio.
- A la fin de l'installation Redémarrer l'ordinateur :
Configuration du compte mssqlservice (MSSQL01 et MSSQL02)
Note : Il nous faudra ouvrir les ports TCP 1433 et 5022 sur chaque serveur.
- Par exemple en exécutant la commande suivante :
PS C:\Windows\system32> netsh advfirewall firewall add rule name="MSSQL" dir=in localport=1433,5022 remoteport=0-65535 protocol=TCP action=allow remoteip=any localip=any
- Ouvrir Microsoft SQL Server Management Studio et se conecter sur le serveur MSSQL01 :
- Dans l'Explorateur d'objet dans Sécurité faire un clic droit sur Connexions > Nouvelle connexion… :
- Ajouter le compte mssqlservice et cliquer sur OK :
- Configurer le compte mssqlservice :
- Dans Éléments sécurisables, accorder les droits Connecter SQL :
- Dans Rôles du serveur, ajouter le rôle sysadmin :
- Rejouer la même procédure pour le serveur MSSQL02.
Paramétrer SQL Server AlwaysOn
- Tout d'abord il faut procéder à une sauvegarde de base de données :
- Si besoin, changer l'emplacement de destination par défaut et cliquer sur OK pour sauvegader :
- Puis faire un clic droit sur Haute disponibilité Always ON et cliquer sur Assistant Nouveau groupe de disponibilité…
- L'assistant de création de groupe de disponibilité s'ouvre, cliquer sur Suivant :
- Donner un nom au groupe de disponibilité et cliquer sur Suivant :
- Choisir la base de données et cliquer sur Suivant :
- Ajouter le serveur MSSQL02 :
- Paramétrer les informations concernant l'écouteur :
- Sélectionner Seed automatique :
- Vérifier les résultats de la validation du groupe de disponibilité :
- Cliquer sur Terminer pour procéder à la création du groupe de disponibilité :
- Le message l'Assistant s'est terminée correctement devrait apparaitre, cliquer sur Fermer pour fermer l'assistant :
- Se connecter sur l'interface du cluster et vérifier que tout est OK :
Sources