Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server sur Linux
Cet article explique comment gérer une instance de cluster de basculement (FCI) SQL Server sous Linux. Pour créer une FCI SQL Server sous Linux, voir Configurer l’instance de cluster de basculement sur Linux (RHEL).
Description de l’architecture
La couche de clustering est basée sur l’extension Red Hat Enterprise Linux (RHEL) HA construite sur Pacemaker. Corosync et Pacemaker coordonnent les communications et la gestion des ressources du cluster. L’instance SQL Server est active sur un nœud à la fois.
Le diagramme suivant illustre les composants d’un cluster Linux avec SQL Server.
Pour plus d’informations sur la configuration du cluster, les options d’agents de ressources et la gestion, consultez la documentation de référence RHEL.
Failover
Le basculement pour les instances de cluster de basculement est similaire à un cluster de basculement Windows Server (WSFC). Si le nœud de cluster qui héberge la FCI connaît une défaillance, la FCI doit automatiquement basculer vers un autre nœud. Contrairement à un WSFC, il n’existe aucun moyen de définir des propriétaires préférés. Par conséquent, Pacemaker sélectionne le nœud qui sera le nouvel hôte pour le FCI.
Il se peut que vous souhaitiez basculer manuellement le FCI vers un autre nœud. Le processus n'est pas le même que pour les FCI sur un WSFC. Sur un WSFC, vous basculez des ressources au niveau du rôle. Dans Pacemaker, vous choisissez une ressource à déplacer, et si toutes les contraintes sont correctes, tout le reste bouge aussi.
La manière d’effectuer le basculement dépend de la distribution Linux. Suivez les instructions de votre distribution Linux.
Basculement manuel (RHEL ou Ubuntu)
Pour effectuer un basculement manuel sur des serveurs Red Hat Enterprise Linux (RHEL) ou Ubuntu, exécutez les étapes suivantes.
Émettez les commandes suivantes :
sudo pcs resource move <FCIResourceName> <NewHostNode><FCIResourceName>est le nom de ressource Pacemaker pour la FCI SQL Server, et<NewHostNode>c’est le nom du nœud du cluster que vous souhaitez héberger la FCI.Pendant un basculement manuel, Pacemaker crée une contrainte d’emplacement sur la ressource qui a été choisie pour le déplacement manuel. Pour afficher cette contrainte, exécutez
sudo pcs constraint.Une fois le basculement terminé, supprimez la contrainte :
sudo pcs resource clear <FCIResourceName>
Basculement manuel (SLES)
Note
À compter de SQL Server 2025 (17.x), SUSE Linux Enterprise Server (SLES) n’est pas pris en charge. Pour SQL Server 2022 (16.x) et les versions antérieures, seule SLES 15 est prise en charge.
Dans SUSE Linux Enterprise Server (SLES), utilisez la commande migrate pour basculer manuellement une instance de cluster de basculement SQL Server. Par exemple:
crm resource migrate <FCIResourceName> <NewHostNode>
<FCIResourceName> est le nom de la ressource pour l’instance du cluster de basculement, et <NewHostNode> est le nom du nouvel hôte de destination.
Surveillez un cluster de basculement
Afficher l’état actuel du cluster :
sudo pcs status
Consultez l’état en temps réel du cluster et des ressources :
sudo crm_mon
Consultez les journaux de l’agent de ressources à /var/log/cluster/corosync.log.
Ajouter un nœud à un cluster
Vérifiez l’adresse IP de chaque nœud. Le script suivant affiche l’adresse IP de votre nœud actuel.
ip addr showLe nouveau nœud a besoin d’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/hostsavecvi.sudo vi /etc/hostsL'exemple suivant montre
/etc/hostsavec des ajouts pour trois nœuds nomméssqlfcivm1,sqlfcivm2etsqlfcivm3.127.0.0.1 localhost localhost4 localhost4.localdomain4 ::1 localhost localhost6 localhost6.localdomain6 10.128.18.128 sqlfcivm1 10.128.16.77 sqlfcivm2 10.128.14.26 sqlfcivm3Le fichier doit être le même sur chaque nœud.
Arrêtez le service SQL Server sur le nouveau nœud.
Suivez les instructions pour monter le répertoire de fichiers de la base de données à l’emplacement partagé.
À partir du serveur NFS, installez
nfs-utils:sudo yum -y install nfs-utilsOuvrez le pare-feu sur les clients et le serveur NFS :
sudo firewall-cmd --permanent --add-service=nfs sudo firewall-cmd --permanent --add-service=mountd sudo firewall-cmd --permanent --add-service=rpc-bind sudo firewall-cmd --reloadModifiez le fichier
/etc/fstabpour inclure la commande Monter :<IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intrExécutez
mount -apour que les modifications soient prises en compte.Sur le nouveau nœud, créez un fichier pour stocker le nom d’utilisateur et le mot de passe SQL Server pour la connexion à Pacemaker. La commande suivante a pour effet de créer et remplir ce fichier :
sudo touch /var/opt/mssql/secrets/passwd echo "<loginName>" | sudo tee -a /var/opt/mssql/secrets/passwd echo "<password>" | sudo tee -a /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwdAvertissement
Votre mot de passe doit respecter la stratégie de mot de passe par défaut de SQL Server. Par défaut, le mot de passe doit avoir au moins huit caractères appartenant à trois des quatre groupes suivants : lettres majuscules, lettres minuscules, chiffres de base 10 et symboles. Les mots de passe peuvent comporter jusqu'à 128 caractères. Utilisez des mots de passe aussi longs et complexes que possible.
Sur le nouveau nœud, ouvrez les ports de pare-feu de Pacemaker. Pour ouvrir ces ports avec
firewalld, exécutez la commande suivante :sudo firewall-cmd --permanent --add-service=high-availability sudo firewall-cmd --reloadSi vous utilisez un autre pare-feu qui ne dispose pas d’une configuration haute disponibilité intégrée, ouvrez les ports suivants pour que Pacemaker communique avec les autres nœuds du cluster :
- TCP : Ports 2224, 3121, 21064
- UDP : Port 5405
Installez les packages Pacemaker sur le nouveau nœud.
sudo yum install pacemaker pcs fence-agents-all resource-agentsDé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 que les nœuds existants.
sudo passwd haclusterActivez et démarrez le service
pcsdet Pacemaker. Le nouveau nœud peut rejoindre le cluster après un redémarrage. Exécutez la commande suivante sur le nouveau nœud.sudo systemctl enable pcsd sudo systemctl start pcsd sudo systemctl enable pacemakerInstallez l’agent de ressources FCI pour SQL Server. Exécutez la commande suivante sur le nouveau nœud.
sudo yum install mssql-server-haSur un nœud existant du cluster, authentifiez le nouveau nœud et ajoutez-le au cluster :
sudo pcs cluster auth <nodeName3> -u hacluster sudo pcs cluster node add <nodeName3>
Supprimer des nœuds d’un cluster
Pour supprimer un nœud d’un cluster, exécutez la commande suivante :
sudo pcs cluster node remove <nodeName>
Modifier la fréquence de surveillance des ressources
sudo pcs resource op monitor interval=<interval>s <sqlResourceName>
L’exemple suivant fixe l’intervalle de surveillance à 2 secondes pour la mssqlha ressource :
sudo pcs resource op monitor interval=2s mssqlha
Troubleshoot
Pendant la résolution des problèmes du cluster, il peut être utile de comprendre comment les trois démons fonctionnent ensemble pour gérer les ressources de cluster.
| Daemon | Description |
|---|---|
| Corosync | Fournit la participation au quorum et l’échange de messages entre les nœuds du cluster. |
| Stimulateur cardiaque | Se trouve au-dessus de Corosync et fournit des machines d’état pour les ressources. |
| PCSD | Gère à la fois Pacemaker et Corosync via les outils pcs. |
PCSD doit être en cours d’exécution pour pouvoir utiliser les outils pcs.
État actuel du cluster
sudo pcs status renvoie des informations de base sur le cluster, le quorum, les nœuds, les ressources et l’état du démon pour chaque nœud.
L’exemple suivant montre un résultat sain du quorum Pacemaker :
Cluster name: MyAppSQL
Last updated: Wed Oct 31 12:00:00 2024 Last change: Wed Oct 31 11:00:00 2024 by root via crm_resource on sqlvmnode1
Stack: corosync
Current DC: sqlvmnode1 (version 1.1.13-10.el7_2.4-44eb2dd) - partition with quorum
3 nodes and 1 resource configured
Online: [ sqlvmnode1 sqlvmnode2 sqlvmnode3 ]
Full list of resources:
mssqlha (ocf::sql:fci): Started sqlvmnode1
PCSD Status:
sqlvmnode1: Online
sqlvmnode2: Online
sqlvmnode3: Online
Daemon Status:
corosync: active/disabled
pacemaker: active/enabled
Dans cet exemple, partition with quorum cela signifie qu’un quorum majoritaire de nœuds est en ligne. Si le cluster perd un quorum de nœuds majoritaire, pcs status retourne partition WITHOUT quorum et toutes les ressources sont arrêtées.
Online: [sqlvmnode1 sqlvmnode2 sqlvmnode3] retourne le nom de tous les nœuds participant actuellement au cluster. Si des nœuds ne sont pas participants, pcs status retourne OFFLINE: [<nodename>].
PCSD Status affiche l’état du cluster pour chaque nœud.
Raisons pour lesquelles un nœud peut être hors connexion
Vérifiez les éléments suivants lorsqu’un nœud est hors connexion.
Pare-feu
Ouvrez les ports suivants sur tous les nœuds pour que Pacemaker communique :
- TCP : Ports 2224, 3121, 21064
- UDP : Port 5405
Services Pacemaker ou Corosync en cours d’exécution
Communication entre nœuds
Correspondances des noms de nœuds