17.5. Déplacer des ressources dans un cluster
Pacemaker propose divers mécanismes pour configurer une ressource afin qu'elle soit déplacée d'un nœud à l'autre et pour déplacer manuellement une ressource en cas de besoin.
Vous pouvez déplacer manuellement des ressources dans une grappe à l'aide des commandes pcs resource move
et pcs resource relocate
, comme décrit dans Déplacement manuel des ressources de la grappe. Outre ces commandes, vous pouvez également contrôler le comportement des ressources de la grappe en activant, en désactivant et en interdisant des ressources, comme décrit dans la section Désactivation, activation et interdiction des ressources de la grappe.
Vous pouvez configurer une ressource de manière à ce qu'elle soit déplacée vers un nouveau nœud après un nombre défini d'échecs, et vous pouvez configurer un cluster pour qu'il déplace des ressources en cas de perte de connectivité externe.
17.5.1. Déplacement des ressources en cas de défaillance
Lorsque vous créez une ressource, vous pouvez la configurer de manière à ce qu'elle passe à un nouveau nœud après un nombre défini d'échecs en définissant l'option migration-threshold
pour cette ressource. Une fois le seuil atteint, ce nœud ne sera plus autorisé à faire fonctionner la ressource défaillante jusqu'à ce qu'elle atteigne ce seuil :
-
La valeur
failure-timeout
de la ressource est atteinte. -
L'administrateur réinitialise manuellement le nombre d'échecs de la ressource à l'aide de la commande
pcs resource cleanup
.
La valeur de migration-threshold
est fixée par défaut à INFINITY
. INFINITY
est défini en interne comme un nombre très grand mais fini. La valeur 0 désactive la fonction migration-threshold
.
La définition de migration-threshold
pour une ressource n'est pas la même chose que la configuration d'une ressource pour la migration, dans laquelle la ressource est déplacée vers un autre emplacement sans perte d'état.
L'exemple suivant ajoute un seuil de migration de 10 à la ressource nommée dummy_resource
, ce qui indique que la ressource sera déplacée vers un nouveau nœud après 10 échecs.
# pcs resource meta dummy_resource migration-threshold=10
Vous pouvez ajouter un seuil de migration aux valeurs par défaut pour l'ensemble du cluster à l'aide de la commande suivante.
# pcs resource defaults update migration-threshold=10
Pour déterminer l'état de défaillance actuel de la ressource et ses limites, utilisez la commande pcs resource failcount show
.
Il existe deux exceptions au concept de seuil de migration ; elles se produisent lorsqu'une ressource ne démarre pas ou ne s'arrête pas. Si la propriété de cluster start-failure-is-fatal
est définie sur true
(ce qui est le cas par défaut), les échecs de démarrage entraînent la définition de failcount
sur INFINITY
et provoquent toujours le déplacement immédiat de la ressource.
Les échecs d'arrêt sont légèrement différents et cruciaux. Si une ressource ne s'arrête pas et que l'option STONITH est activée, le cluster clôturera le nœud afin de pouvoir démarrer la ressource ailleurs. Si STONITH n'est pas activé, le cluster n'a aucun moyen de continuer et n'essaiera pas de démarrer la ressource ailleurs, mais essaiera de l'arrêter à nouveau après le délai d'échec.
17.5.2. Déplacement des ressources en raison de changements de connectivité
La configuration du cluster pour déplacer les ressources en cas de perte de connectivité externe se fait en deux étapes.
-
Ajoutez une ressource
ping
au cluster. La ressourceping
utilise l'utilitaire système du même nom pour tester si une liste de machines (spécifiée par le nom d'hôte DNS ou l'adresse IPv4/IPv6) est accessible et utilise les résultats pour maintenir un attribut de nœud appelépingd
. - Configurez une contrainte d'emplacement pour la ressource qui déplacera la ressource vers un autre nœud en cas de perte de connectivité.
Le tableau suivant décrit les propriétés que vous pouvez définir pour une ressource ping
.
Field | Description |
---|---|
| Le temps d'attente (amortissement) pour que d'autres changements se produisent. Cela permet d'éviter qu'une ressource ne rebondisse dans la grappe lorsque les nœuds de la grappe remarquent la perte de connectivité à des moments légèrement différents. |
| Le nombre de nœuds ping connectés est multiplié par cette valeur pour obtenir un score. Utile lorsque plusieurs nœuds ping sont configurés. |
| Les machines à contacter pour déterminer l'état actuel de la connectivité. Les valeurs autorisées comprennent les noms d'hôtes DNS résolvables, les adresses IPv4 et IPv6. Les entrées de la liste d'hôtes sont séparées par des espaces. |
L'exemple de commande suivant crée une ressource ping
qui vérifie la connectivité avec gateway.example.com
. En pratique, vous vérifiez la connectivité avec la passerelle/le routeur de votre réseau. Vous configurez la ressource ping
comme un clone afin qu'elle s'exécute sur tous les nœuds du cluster.
# pcs resource create ping ocf:pacemaker:ping dampen=5s multiplier=1000 host_list=gateway.example.com clone
L'exemple suivant configure une règle de contrainte d'emplacement pour la ressource existante nommée Webserver
. Ainsi, la ressource Webserver
sera déplacée vers un hôte capable d'envoyer un ping à gateway.example.com
si l'hôte sur lequel elle est actuellement exécutée ne peut pas envoyer de ping à gateway.example.com
.
# pcs constraint location Webserver rule score=-INFINITY pingd lt 1 or not_defined pingd