Configurer l’instance de cluster de basculement - SQL Server sur Linux (RHEL)
S’applique à : SQL Server - Linux
Une instance de cluster de basculement de disque partagé à deux nœuds SQL Server fournit une redondance au niveau du serveur pour la haute disponibilité. Dans ce didacticiel, vous allez apprendre à créer une instance de cluster de basculement à deux nœuds de SQL Server sur Linux. Les étapes spécifiques que vous allez effectuer sont les suivantes :
- Installer et configurer Linux
- Installer et configurer SQL Server
- Configurer le fichier hosts
- Configurer le stockage partagé et déplacer les fichiers de base de données
- Installer et configurer Pacemaker sur chaque nœud de cluster
- Configurer l’instance de cluster de basculement
Cet article explique comment créer une instance de cluster de basculement de disque partagé à deux nœuds (FCI) pour SQL Server. Cet article contient des instructions et des exemples de scripts pour Red Hat Enterprise Linux (RHEL). Les distributions Ubuntu sont similaires à RHEL afin que les exemples de script fonctionnent également sur Ubuntu.
Pour plus d’informations, consultez Instance de cluster de basculement (FCI) SQL Server sur Linux.
Prérequis
Pour effectuer le scénario de bout en bout suivant, vous avez besoin de deux machines pour déployer le cluster à deux nœuds et d’un autre serveur pour le stockage. Les étapes ci-dessous décrivent comment ces serveurs seront configurés.
Installer et configurer Linux
La première étape consiste à configurer le système d'exploitation sur les nœuds de cluster. Sur chaque nœud du cluster, configurez une distribution Linux. Utilisez la même distribution et la même version sur les deux nœuds. Utilisez l’une ou l’autre des distributions suivantes :
- RHEL avec un abonnement valide pour le module complémentaire HA
Installer et configurer SQL Server
Installez et configurez des SQL Server sur les deux nœuds. Pour obtenir des instructions détaillées, consultez Installer SQL Server sur Linux.
Désignez un nœud comme principal et l’autre comme secondaire, à des fins de configuration. Utilisez ces termes pour le présent guide.
Sur le nœud secondaire, arrêtez et désactivez SQL Server. L’exemple suivant arrête et désactive SQL Server :
sudo systemctl stop mssql-server sudo systemctl disable mssql-server
Notes
Au moment de la configuration, une clé principale de serveur est générée pour l’instance SQL Server et placée à l’adresse
var/opt/mssql/secrets/machine-key
. Sur Linux, SQL Server s’exécute toujours en tant que compte local appelémssql
. Étant donné qu’il s’agit d’un compte local, son identité n’est pas partagée entre les nœuds. Par conséquent, vous devez copier la clé de chiffrement du nœud principal sur chaque nœud secondaire pour que chaque compte localmssql
puisse y accéder pour déchiffrer la clé principale du serveur.Sur le nœud principal, créez un compte de connexion SQL Server pour Pacemaker et octroyez l’autorisation de connexion pour exécuter
sp_server_diagnostics
. Pacemaker utilise ce compte pour vérifier le nœud en cours d’exécution SQL Server.sudo systemctl start mssql-server
Connectez-vous à la base de données
master
SQL Server avec le compte sa et exécutez la commande suivante :USE [master] GO CREATE LOGIN [<loginName>] with PASSWORD = N'<loginPassword>' ALTER SERVER ROLE [sysadmin] ADD MEMBER [<loginName>]
Vous pouvez aussi définir les autorisations à un niveau plus granulaire. La connexion à Pacemaker requiert
VIEW SERVER STATE
pour demander l’état d’intégrité avecsp_server_diagnostics
, setupadmin et ALTER ANY LINKED SERVER pour mettre à jour le nom de l’instance FCI avec le nom de la ressource en exécutantsp_dropserver
etsp_addserver
.Sur le nœud principal, arrêtez et désactivez SQL Server.
Configurer le fichier hosts
Sur chaque nœud de cluster, configurez le fichier hôtes. Le fichier hôtes doit inclure l’adresse IP et le nom de chaque nœud de cluster.
Vérifiez l’adresse IP de chaque nœud. Le script suivant affiche l’adresse IP de votre nœud actuel.
sudo ip addr show
Définissez le nom de l’ordinateur sur chaque nœud. Donnez à chaque nœud un nom unique de 15 caractères ou moins. Définissez le nom de l’ordinateur en l'ajoutant à
/etc/hosts
. Le script suivant vous permet de modifier/etc/hosts
avecvi
.sudo vi /etc/hosts
L’exemple suivant présente
/etc/hosts
avec des ajouts pour deux nœuds nomméssqlfcivm1
etsqlfcivm2
.127.0.0.1 localhost localhost4 localhost4.localdomain4 ::1 localhost localhost6 localhost6.localdomain6 10.128.18.128 sqlfcivm1 10.128.16.77 sqlfcivm2
Configurez le stockage et déplacer des fichiers de base de données
Vous devez fournir un stockage auquel les deux nœuds peuvent accéder. Vous pouvez utiliser iSCSI, NFS ou SMB. Configurez le stockage, présentez le stockage aux nœuds de cluster, puis déplacez les fichiers de base de données vers le nouveau stockage. Les articles suivants expliquent les étapes pour chaque type de stockage :
- Configurer l’instance de cluster de basculement - iSCSI - SQL Server sur Linux
- Configurer l’instance de cluster de basculement - NFS - SQL Server sur Linux
- Configurer l’instance de cluster de basculement - SMB - SQL Server sur Linux
Installer et configurer Pacemaker sur chaque nœud de cluster
Sur les deux nœuds du cluster, créez un fichier pour stocker le nom d’utilisateur et le mot de passe SQL Server du compte de connexion Pacemaker.
La commande suivante a pour effet de créer et remplir ce fichier :
sudo touch /var/opt/mssql/secrets/passwd sudo echo '<loginName>' >> /var/opt/mssql/secrets/passwd sudo echo '<loginPassword>' >> /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwd
Sur les deux nœuds de cluster, ouvrez les ports de pare-feu Pacemaker. Pour ouvrir ces ports avec
firewalld
, exécutez la commande suivante :sudo firewall-cmd --permanent --add-service=high-availability sudo firewall-cmd --reload
Si vous utilisez un autre pare-feu qui n’intègre pas de configuration à haute disponibilité intégrée, les ports suivants doivent être ouverts pour permettre à Pacemaker de communiquer avec les autres nœuds du cluster :
- TCP : Ports 2224, 3121, 21064
- UDP : Port 5405
Installez les packages Pacemaker sur chaque nœud.
sudo yum install pacemaker pcs fence-agents-all resource-agents
Définissez le mot de passe pour l’utilisateur par défaut qui est créé pendant l’installation des packages Pacemaker et Corosync. Utilisez le même mot de passe sur les deux nœuds.
sudo passwd hacluster
Activez et démarrez le service
pcsd
et Pacemaker. Cela permettra aux nœuds de rejoindre le cluster après le redémarrage. Exécutez la commande suivante sur les deux nœuds.sudo systemctl enable pcsd sudo systemctl start pcsd sudo systemctl enable pacemaker
Installez l’agent de ressources FCI pour SQL Server. Exécutez les commandes suivantes sur les deux nœuds.
sudo yum install mssql-server-ha
Configurer l’instance de cluster de basculement
Le FCI sera créé dans un groupe de ressources. C’est un peu plus facile puisque le groupe de ressources atténue le besoin de contraintes. Toutefois, ajoutez les ressources dans le groupe de ressources dans l’ordre dans lequel elles doivent démarrer. L’ordre dans lequel elles doivent démarrer est le suivant :
- Ressource de stockage
- Ressource de réseau
- Ressource d'application
Cet exemple crée un FCI dans le groupe NewLinFCIGrp. Le nom du groupe de ressources doit être unique à partir de n’importe quelle ressource créée dans Pacemaker.
Créez la ressource disque. Vous n’obtiendrez aucune réponse s’il n’y a pas de problème. La méthode de création de la ressource disque dépend du type de stockage. La section suivante présente des exemples pour chaque type de stockage (iSCSI, NFS et SMB). Utilisez l’exemple qui s’applique au type de stockage de votre stockage en cluster.
sudo pcs resource create <iSCSIDiskResourceName> Filesystem device="/dev/<VolumeGroupName>/<LogicalVolumeName>" directory="<FolderToMountiSCSIDisk>" fstype="<FileSystemType>" --group RGName
<iSCSIDIskResourceName>
est le nom de la ressource associée au disque iSCSI<VolumeGroupName>
est le nom du groupe de volumes<LogicalVolumeName>
est le nom du volume logique qui a été créé<FolderToMountiSCSIDIsk>
est le dossier de montage du disque (pour les bases de données système et la localisation par défaut, il s’agit de/var/opt/mssql/data
)<FileSystemType>
serait EXT4 ou XFS en fonction de la façon dont les éléments ont été mis en forme et de ce que la distribution prend en charge.
Créez l’adresse IP qui sera utilisée par le FCI. Vous n’obtiendrez aucune réponse s’il n’y a pas de problème.
sudo pcs resource create <IPResourceName> ocf:heartbeat:IPaddr2 ip=<IPAddress> nic=<NetworkCard> cidr_netmask=<NetMask> --group <RGName>
<IPResourceName>
est le nom de la ressource associée à l’adresse IP<IPAddress>
est l’adresse IP du FCI<NetworkCard>
est la carte réseau associée au sous-réseau (c.-à-d. eth0)<NetMask>
est le masque réseau du sous-réseau (c.-à-d. 24)<RGName>
est le nom du groupe de ressources
Créer la ressource FCI. Vous n’obtiendrez aucune réponse s’il n’y a pas de problème.
sudo pcs resource create FCIResourceName ocf:mssql:fci op defaults timeout=60s --group RGName
<FCIResourceName>
n’est pas seulement le nom de la ressource, mais aussi le nom convivial associé au FCI. Il s’agit de ce que les utilisateurs et les applications utilisent pour se connecter.<RGName>
est le nom du groupe de ressources.
Exécutez la commande
sudo pcs resource
. FCI doit être en ligne.Connectez-vous à FCI avec SSMS ou sqlcmd en utilisant le nom DNS/ressource du FCI.
Émettez l'instruction
SELECT @@SERVERNAME
. Elle doit retourner le nom du FCI.Émettez l'instruction
SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS')
. Elle doit retourner le nom du nœud sur lequel le FCI s’exécute.Faites échouer manuellement le FCI aux autres nœuds. Consultez les instructions sous Opérer l’instance de cluster de basculement - SQL Server sur Linux.
Enfin, rebasculez le FCI vers le nœud d’origine et supprimez la contrainte de colocalisation.
Résumé
Dans ce tutoriel, vous avez effectué les tâches suivantes.
- Installer et configurer Linux
- Installer et configurer SQL Server
- Configurer le fichier hosts
- Configurer le stockage partagé et déplacer les fichiers de base de données
- Installer et configurer Pacemaker sur chaque nœud de cluster
- Configurer l’instance de cluster de basculement