Services/Cluster/RHCluster
Service de clustering Red-Hat
Ressources en haute disponibilité, gérées par le redhat cluster
Installation
# yum install cman rgmanager ricci
Sur tous les noeuds du cluster, il faut mettre un mot de passe à l'utilisateur ricci, afin que le déploiement de la configuration du cluster puisse s'effectuer.
# passwd ricci
Le failover ou le failback ne fonctionne qu'avec une méthode de fencing automatique.
Google est assez muet sur le sujet et la majorité des pages traitant du sujet sont des archives de mailing-list. Le seul script à peu près potable ( qui servira de base, car il n'est pas exploitable en l'état ) est donné en annexe. Celui-ci ne fonctionne pas si l'entrée standard est vide, et ne fournit pas les metadata afin que les outils cman ou le binaire ccs_config_validate puisse valider la configuration de notre cluster.
Voici le script de fencing pour vbox: /usr/sbin/fence_vbox
Exemple de fichier de configuration du cluster: <path>/etc/cluster/cluster.conf</path>
<?xml version="1.0"?>
<cluster config_version="9" name="monitore">
<cman expected_votes="1" two_node="1"/>
<clusternodes>
<clusternode name="ns1.b2pweb.com" nodeid="1" votes="1">
<fence>
<method name="1">
<device action="off" host="gw1.b2pweb.com" name="vbox" user="vbox" vmname="monitoring1"/>
</method>
</fence>
</clusternode>
<clusternode name="ns2.b2pweb.com" nodeid="2" votes="1">
<fence>
<method name="1">
<device action="off" host="gw2.b2pweb.com" name="vbox" user="vbox" vmname="monitoring2"/>
</method>
</fence>
</clusternode>
</clusternodes>
<fencedevices>
<fencedevice agent="fence_vbox" name="vbox"/>
</fencedevices>
<fence_daemon clean_start="0" post_fail_delay="5" post_join_delay="20"/>
<rm log_level="5">
<failoverdomains>
<failoverdomain name="monitoring" nofailback="0" ordered="1" restricted="0">
<failoverdomainnode name="ns1.b2pweb.com" priority="10"/>
<failoverdomainnode name="ns2.b2pweb.com" priority="20"/>
</failoverdomain>
</failoverdomains>
<resources>
<ip address="192.168.0.6" monitor_link="on" sleeptime="10"/>
</resources>
<service autostart="1" domain="monitoring" exclusive="0" name="munin" recovery="relocate">
<script file="/etc/init.d/munin" name="munin-service"/>
</service>
<service autostart="1" domain="monitoring" exclusive="0" name="nagios" recovery="relocate">
<ip ref="192.168.0.6">
<script file="/etc/init.d/nagios" name="nagios-service"/>
</ip>
</service>
<service autostart="1" domain="monitoring" exclusive="0" name="pnp4nagios" recovery="relocate">
<script file="/etc/init.d/npcd" name="npcd-service"/>
</service>
</rm>
</cluster>
Ces deux fichiers sont à copier sur tous les nœuds au premier démarrage. Le fichier de définition du cluster sera déployer automatiquement par la suite.
Contrôler l'état du cluster
Le statut du cluster est obtenu avec la commande clustat.
| État des services | Description |
|---|---|
| Started | Les ressources d'un service sont configurées et disponibles sur le système du cluster propriétaire du service. |
| Recovering | Le service est en attente de démarrage sur un autre noeud. |
| Disabled | Le service a été désactivé et n'a pas de propriétaire qui lui est assigné. Un service désactivé n'est jamais redémarré automatiquement par le cluster. |
| Stopped | Dans l'état arrêté, le service sera évalué pour démarrer après le service suivant ou la transition de noeud. Ceci est un état temporaire. Vous pouvez activer ou désactiver le service de cet état. |
| Failed | Le service est présumé mort. Un service est placé dans cet état lorsque l'opération stop d'une ressource échoue. Une fois que le service se trouve dans cet état, vous devez vérifier qu'aucune ressource n'est allouée (par exemple, des systèmes de fichiers montés) avant d'effectuer une requête disable. La seule opération pouvant s'effectuer lorsqu'un service est entré dans cet état est disable.. |
| Uninitialized | Cet état peut apparaître dans certains cas lors du démarrage et de l'exécution de clustat -f. |
Gérer les services HA avec clusvcadm
Vous pouvez gérer les services HA en utilisant la commande clusvcadm. Avec celle-ci, vous pouvez effectuer les opérations suivantes :
- Activer et lancer un service.
- Désactiver un service.
- Arrêter un service.
- Geler un service
- Dégeler un service
- Migrer un service (uniquement pour les services de machines virtuelles)
- Déplacer un service.
- Redémarrer un service.
| Opération du service | Description | Syntaxe de la commande |
|---|---|---|
| Enable | Lance le service, optionnellement sur une cible préférée et optionnellement selon les règles du domaine de basculement. En l'absence d'un cible et de règles, l'hôte local où clusvcadm est exécuté lancera le service. Si l'opération d'origine start échoue, le service se comportera comme si l'opération relocate avait été requise (reportez-vous à Relocate dans ce tableau). Si l'opération fonctionne, le service sera placé dans l'état « started ». | clusvcadm -e <service_name> ou clusvcadm -e <service_name> -m <member> (L'utilisation de l'option -m option spécifie le membre-cible préféré sur lequel lancer le service.) |
| Disable | Arrête le service et le place dans un état déasctivé. Ceci est l'unique opération permise lorsqu'un service est dans l'état failed. | clusvcadm -d <service_name> |
| Relocate | Déplace le service sur un autre noeud. Optionnellement, vous pouvez spécifier un noeud préféré pour recevoir le service, mais l'incapacité du service à s'exécuter sur cet hôte (par exemple, si le service ne parvient pas à démarrer ou si l'hôte est hors-ligne) n'empêche pas le déplacement, et un autre noeud est choisi. rgmanager tente de démarrer le service sur n'importe quel noeud permis dans le cluster. Si aucun noeud-cible permis dans le cluster ne démarre le service, le déplacement échoue et le service tente d'être redémarré sur le propriétaire d'origine. Si le propriétaire d'origine ne peut pas redémarrer le service, alors le service est placé dans l'état stopped. | clusvcadm -r <service_name> ou clusvcadm -r <service_name> -m <member> (L'utilisation de l'option -m spécifie le membre-cible préféré sur lequel lancer le service.) |
| Stop | Arrête le service et le place dans l'état stopped. | clusvcadm -s <service_name> |
| Freeze | Gèle un service sur le noeud sur lequel il est en cours d'exécution. Ceci empêche les vérifications d'état du service ainsi que les basculements au cas où le noeud échouerait ou si rgmanager était arrêté. Ceci peut être utilisé pour suspendre un service afin de permettre la maintenance des ressources sous-jacentes. | clusvcadm -Z <service_name> |
| Unfreeze | Unfreeze retire un service de l'état freeze. ceci ré-active les vérifications d'état. | clusvcadm -U <service_name> |
| Migrate | Migre une machine virtuelle sur un autre noeud. Vous devez spécifier un noeud-cible. Selon l'échec, un échec de migration peut résulter en la machine virtuelle se trouvant dans l'état failed ou dans l'état « started » dans le propriétaire d'origine. | clusvcadm -M <service_name> -m <member>
Pour l'opération migrate, vous devez spécifier un noeud-cible à l'aide de l'option -m <member>. |
| Restart | Redémarre un service sur le noeud sur lequel il est actuellement en cours d'exécution. | clusvcadm -R <service_name> |
Considérations pour l'utilisation des opérations Freeze et Unfreeze
L'utilisation de l'opération freeze permet la maintenance de certaines parties des services rgmanager. Par exemple, si vous possédez une base de données et un serveur web dans un service rgmanager, vous pouvez geler le service rgmanager, arrêter la base de données, effectuer la maintenance, redémarrer la base de données, puis dégeler le service.
Lorsqu'un service est gelé, il se comporte comme suit :
- Les vérifications d'État sont désactivées.
- Les opérations Start sont désactivées.
- Les opérations Stop sont désactivées.
- Le basculement ne se produira pas (même si vous éteignez le propriétaire du service).
Ressource en erreur
# clustat
Cluster Status for monitore @ Tue Jun 12 12:37:54 2012
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
ns1.b2pweb.com 1 Online, Local, rgmanager
ns2.b2pweb.com 2 Online, rgmanager
Service Name Owner (Last) State
----- ------ -----
service:munin ns1.b2pweb.com started
service:nagios ns1.b2pweb.com started
service:pnp4nagios (ns1.b2pweb.com) failed
Désactivation de la ressource et ré-activation de la ressource
# clusvcadm -d pnp4nagios
# clusvcadm -e pnp4nagios
# clustat
Cluster Status for monitore @ Tue Jun 12 12:37:54 2012
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
ns1.b2pweb.com 1 Online, Local, rgmanager
ns2.b2pweb.com 2 Online, rgmanager
Service Name Owner (Last) State
----- ------ -----
service:munin ns1.b2pweb.com started
service:nagios ns1.b2pweb.com started
service:pnp4nagios ns1.b2pweb.com started