Services/Cluster/RHCluster

De TartareFR
Aller à la navigation Aller à la recherche

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
É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érations sur les services


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