Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tutoriel:pacemaker_configuration_ip_virtuelle_plus_script_lsb [Le 02/07/2010, 13:27]
Miam Miam
tutoriel:pacemaker_configuration_ip_virtuelle_plus_script_lsb [Le 11/09/2022, 12:24] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 1: Ligne 1:
-{{tag>​Lucid tutoriel ​pacemaker BROUILLON}}+{{tag>​Lucid tutoriel ​haute_disponibilité}}
 ---- ----
  
Ligne 5: Ligne 5:
  
  
-Ce tutoriel est une sous partie de la documentation pacemaker. Il décrit les différentes étapes de configuration du cluster par l'​intermédiaire ​du crm. Je vous conseille néanmoins de configurer les ressources avec l'​interface java de Linbit.+Ce tutoriel est une sous-partie de la documentation pacemaker. Il décrit les différentes étapes de configuration du cluster par l'​intermédiaire ​de la commande ​crm. Je vous conseille néanmoins de configurer les ressources avec l'​interface java de Linbit.
  
-Le but de cette configuration est de crée un cluster de serveur web (ou de reverse proxy) de deux machines. Une adresse virtuelle est partagée entre les deux machines, lorsque l'une d'​entre elle est hors ligne l'​autre machine peut prendre le relais ​automatiquement.+Le but de cette configuration est de créer ​un cluster de serveur web (ou de reverse proxy) de deux machines. Une adresse virtuelle est partagée entre les deux machines, lorsque l'une d'​entre elle est hors ligne l'​autre machine peut prendre le relai automatiquement.
  
-Détails ​des étapes de la configuration:​+Détail ​des étapes de la configuration:​
  
   - Adresse ip virtuelle partagée entre les deux membres du cluster ici 192.168.1.100   - Adresse ip virtuelle partagée entre les deux membres du cluster ici 192.168.1.100
   - Lancement, arrêt et supervision d'un service par l'​intermédiaire d'un script d'​initialisation compatible LSB (ici nginx)   - Lancement, arrêt et supervision d'un service par l'​intermédiaire d'un script d'​initialisation compatible LSB (ici nginx)
-  - clonage le service nginx devra être démarrée ​sur les deux machines +  - Clonage du servicenginx sera démarré ​sur les deux machines 
-  - ordonnancement ​des ressources le service ​(nginxdevra être démarrée ​pour que l'​adresse ip virtuelle soit attribuée à un membre du cluster+  - Ordonnancement ​des ressources le servicenginx devra être démarré ​pour que l'​adresse ip virtuelle soit attribuée à un membre du cluster
  
  
-|              ^ Nom de poste                  ^ adresse ​ip          ^+|              ^ Nom de poste                  ^ Adresse ​ip          ^
 ^ pc 1      | machine1 ​           | 192.168.1.101 ​   | ^ pc 1      | machine1 ​           | 192.168.1.101 ​   |
-^ pc 2      | machine2 |             ​192.168.1.102 ​    ​|+^ pc 2      | machine2 ​           | 192.168.1.102 ​   |
  
 ===== Pré-requis ===== ===== Pré-requis =====
  
-  ​* Disposer des [[:​sudo|droits d'​administration]]. +  * Bien connaître le principe de fonctionnement de [[:pacemaker]]. 
-  ​* Bien connaître le principe de fonctionnement de [[pacemaker]]. +  * Comprendre le principe de la norme LSB pour les scripts d'​initialisation.
-  * Comprendre le principe de norme LSB pour les scripts d'​initialisation. ​+
   ​   ​
  
 <​note>​ <​note>​
-Les scripts d'​initialisation sont ceux disponible ​dans le répertoire /​etc/​init.d/​. Pacemaker va les utiliser pour démarrer, arrêter et superviser l'​état du service. C'est pourquoi ces scripts doivent respecter les normes lsb. Pacemaker a par exemple besoin que les scripts possèdent un argument status. ​+Les scripts d'​initialisation sont ceux disponibles ​dans le répertoire /​etc/​init.d/​. Pacemaker va les utiliser pour démarrer, arrêter et superviser l'​état du service. C'est pourquoi ces scripts doivent respecter les normes lsb. Pacemaker a par exemple besoin que les scripts possèdent un argument status. ​Pour plus d'​informations visitez cette [[https://​wiki.debian.org/​LSBInitScripts|page]]
 </​note>​ </​note>​
-  * Avoir effectuer ​le tutoriel officiel en anglais est une bonne chose. [[http://​www.clusterlabs.org/​doc/​en-US/​Pacemaker/​1.1/​html/​Clusters_from_Scratch/​index.html|lien]] ​+  * Avoir effectué ​le tutoriel officiel en anglais est une bonne chose. [[http://​www.clusterlabs.org/​doc/​en-US/​Pacemaker/​1.1/​html/​Clusters_from_Scratch/​index.html|lien]]
   * Ne pas avoir peur de lire la documentation officielle de pacemaker qui se trouve [[http://​www.clusterlabs.org/​doc/​en-US/​Pacemaker/​1.1/​html/​Pacemaker_Explained/​index.html|ici]].   * Ne pas avoir peur de lire la documentation officielle de pacemaker qui se trouve [[http://​www.clusterlabs.org/​doc/​en-US/​Pacemaker/​1.1/​html/​Pacemaker_Explained/​index.html|ici]].
  
Ligne 45: Ligne 44:
  
   ​   ​
-Premierement nous allons ​désactivé ​deux fonctionnalités inutile pour notre cluster ​+Premierement nous allons ​désactiver ​deux fonctionnalités inutile pour notre cluster
  
-  * mode stonith "shot the other node in the head" permet lorsqu'​une machine n'est plus joignable d'​être sur que cette machine soit hors ligne+  * mode stonith "shot the other node in the head" permet lorsqu'​une machine n'est plus joignable d'​être sur que cette machine soit bien hors ligne
   * quorum indique le nombre minimal de membres pour prendre une décision. Ce paramètre est utile pour les cluster de plus de deux machines   * quorum indique le nombre minimal de membres pour prendre une décision. Ce paramètre est utile pour les cluster de plus de deux machines
  
  
-désactivation ​du mode stonith+Désactivation ​du mode stonith
  
   property stonith-enabled=false   property stonith-enabled=false
  
-désctivation ​du paramètre quorum+Désctivation ​du paramètre quorum
  
   property no-quorum-policy=ignore ​   property no-quorum-policy=ignore ​
  
-Supervision d'un service grace à son script situé dans le dossier /​etc/​init.d. Pacemaker s'​assurera qu'il est bien lancé toutes les 5 secondes.+
  
 ==== Paramétrage du service nginx ==== ==== Paramétrage du service nginx ====
Ligne 65: Ligne 64:
  
  
-Avant toute chose pensez à désactiver le démarrage automatique du démon avec la commande ci dessous ​+Avant toute chose pensez à désactiver le démarrage automatique du démon avec la commande ci dessous
  
   sudo update-rc.d -f nginx remove   sudo update-rc.d -f nginx remove
 +
 +Ensuite nous allons indiquer à pacemaker de superviser le processus nginx. Pour cela il est nécessaire que le logiciel possède un script de démarrage et d'​arrêt dans le répertoire /​etc/​init.d. Ce script doit en outre respecter les normes LSB (si il est est déjà présent il doit sûrement les respecter). A l'​avenir c'est pacemaker qui démarrera nginx par intermédiaire de ce script.
 +
 +Instruction permettant à pacemaker de superviser un programme par l'​intermédiaire de son script systemV (init script)
  
 Syntaxe de base Syntaxe de base
Ligne 73: Ligne 76:
   primitive <nom de la ressource (ce que vous voulez)> lsb::<​nom du démon> op monitor interval=5s   primitive <nom de la ressource (ce que vous voulez)> lsb::<​nom du démon> op monitor interval=5s
  
-Dans notre cas +Dans notre cas
  
   primitive reverse-proxy lsb::nginx op monitor interval=5s   primitive reverse-proxy lsb::nginx op monitor interval=5s
   ​   ​
-Clonage de la ressource pour que le démon nginx soit démarré sur les deux machines+Clonage de la ressource pour que le démon nginx soit démarré sur les deux machines ​en même temps. Cela permet une migration plus rapide. Pacemaker n'​ayant pas à démarrer le processus puis à faire migrer l'​adresse ip.
  
 Syntaxe de base Syntaxe de base
Ligne 83: Ligne 86:
   clone <nom de la ressource>​ <nom de la ressource à cloner>   clone <nom de la ressource>​ <nom de la ressource à cloner>
  
-Dans notre cas +Dans notre cas
   ​   ​
   clone clone_reverse_proxy reverse-proxy ​   clone clone_reverse_proxy reverse-proxy ​
Ligne 91: Ligne 94:
   ​   ​
 Création d'une ip virtuelle partagée entre les deux membres du cluster Création d'une ip virtuelle partagée entre les deux membres du cluster
 +<​code>​
   primitive <nom de la ressource>​ ocf:​heartbeat:​IPaddr2 params ip="<​adresse ip virtuelle>"​ broadcast="<​adresse de broadcast>"​ cidr_netmask="<​masque en écriture décimal>"​ nic="<​nom de l'​interface virtuelle>"​ meta target-role="​started"​ migration-threshold="​2"​ resource-stickiness="​100"​   primitive <nom de la ressource>​ ocf:​heartbeat:​IPaddr2 params ip="<​adresse ip virtuelle>"​ broadcast="<​adresse de broadcast>"​ cidr_netmask="<​masque en écriture décimal>"​ nic="<​nom de l'​interface virtuelle>"​ meta target-role="​started"​ migration-threshold="​2"​ resource-stickiness="​100"​
  op monitor interval="<​interval de temps de supervision>"​  op monitor interval="<​interval de temps de supervision>"​
-  ​+</​code>​
 explications:​ explications:​
  
-^ Options ​        ^ explications ​          ^  +^ Options ​        ^ explications ​          ^ 
-| target-role ​  | started ou stopped l'​état dans lequel pacemaker doit maintenir la ressource ​    |  +| target-role ​  | started ou stopped l'​état dans lequel pacemaker doit maintenir la ressource ​    | 
-| migration-threshold ​  | nombre ​de fois maximal d'​échec de la ressource, après ​le nombre de tentatives ​la machine est déclarée inéligible pour recevoir la ressource ​    |  +| migration-threshold ​  | nombre maximal d'​échec de la ressource, après ​lesquels ​la machine est déclarée inéligible pour recevoir la ressource ​    | 
-| resource-stickiness ​  | Ce paramètre est utile lorsque l'on définit une rêgle ​"​location"​ indiquant la machine élue par défaut pour héberger la ressource. Nous ferons une configuration de ce type plus tard. Ce paramètre empêche la ressource de retourner sur la machine élue par défaut après que celle ci est défaillit et soit revenue en ligne. La ressource devra être migré ​manuellement. ​ La valeur ​numérique attribuée à ce paramètre doit être supérieure à celle attribuée dans la rêgle ​"​location"​. ​  |+| resource-stickiness ​  | Ce paramètre est utile lorsque l'on définit une règle ​"​location"​ indiquant la machine élue par défaut pour héberger la ressource. Nous ferons une configuration de ce type plus tard. Ce paramètre empêche la ressource de retourner sur la machine élue par défaut après que celle ci est défaillit et soit revenue en ligne. La ressource devra être migrée ​manuellement. ​ La valeure ​numérique attribuée à ce paramètre doit être supérieure à celle attribuée dans la règle ​"​location"​. ​  |
  
  
  
-Dans notre cas  +Dans notre cas 
-  + 
 +<​code> ​
   primitive ip_virtuelle ocf:​heartbeat:​IPaddr2 params ip="​192.168.1.100"​ broadcast="​192.168.1.255"​ cidr_netmask="​24"​ nic="​eth0:​0"​ meta target-role="​started"​ migration-threshold="​2"​ resource-stickiness="​100"​   primitive ip_virtuelle ocf:​heartbeat:​IPaddr2 params ip="​192.168.1.100"​ broadcast="​192.168.1.255"​ cidr_netmask="​24"​ nic="​eth0:​0"​ meta target-role="​started"​ migration-threshold="​2"​ resource-stickiness="​100"​
  op monitor interval="​10s"​  op monitor interval="​10s"​
 +</​code>​
 ==== Lien entre les ressources ==== ==== Lien entre les ressources ====
  
  
-Par défaut pacemaker répartie les ressources entre les membres du cluster. Bien qu'ici une des ressource ​soit clonée il est préférable de crée un lien entre les deux ressources ​ clone_reverse_proxy et ip_virtuelle+Par défaut pacemaker répartie les ressources entre les membres du cluster. Bien qu'ici une des ressources ​soit clonée il est préférable de créér ​un lien entre les deux ressources  ​//clone_reverse_proxy// et //ip_virtuelle//
  
-Syntaxe de base +Syntaxe de base
  
   colocation link-ressources INFINITY: <nom de la deuxième ressource> ​ <nom de la première ressource>​   colocation link-ressources INFINITY: <nom de la deuxième ressource> ​ <nom de la première ressource>​
   ​   ​
-Dans notre cas +Dans notre cas
  
   colocation link-ressources INFINITY: ip_virtuelle clone_reverse_proxy ​   colocation link-ressources INFINITY: ip_virtuelle clone_reverse_proxy ​
Ligne 124: Ligne 128:
 Il est aussi nécessaire d'​établir un ordre de démarrage entre les ressources. En effet l'ip virtuelle ne doit être activée que si le démon nginx est lancée Il est aussi nécessaire d'​établir un ordre de démarrage entre les ressources. En effet l'ip virtuelle ne doit être activée que si le démon nginx est lancée
  
-Syntaxe de base +Syntaxe de base
  
   order <nom de la ressource>​ mandatory: <​première ressource à lancer> ​ <​deuxième ressource>​   order <nom de la ressource>​ mandatory: <​première ressource à lancer> ​ <​deuxième ressource>​
  
-Dans notre cas +Dans notre cas
  
   order demon_before mandatory: clone_reverse_proxy ​ ip_virtuelle   order demon_before mandatory: clone_reverse_proxy ​ ip_virtuelle
Ligne 138: Ligne 142:
   location <nom ressource>​ <nom de la ressource>​ <​score>:​ <nom du poste>   location <nom ressource>​ <nom de la ressource>​ <​score>:​ <nom du poste>
   ​   ​
-Dans notre cas +Dans notre cas
  
   location node-master ip_virtuelle 50: machine1   location node-master ip_virtuelle 50: machine1
Ligne 175: Ligne 179:
   kill <numéro processus>​   kill <numéro processus>​
   ​   ​
-Vous devriez voir que le compteur d'​échec ​à été incrémenté ​+Vous devriez voir que le compteur d'​échec ​été incrémenté
  
   Online: [ machine1 machine2 ]   Online: [ machine1 machine2 ]
Ligne 182: Ligne 186:
   ip_virtuelle (ocf::​heartbeat:​IPaddr2):​ Started machine1   ip_virtuelle (ocf::​heartbeat:​IPaddr2):​ Started machine1
   Migration summary:   Migration summary:
-  * Node machine2:  +  * Node machine2: 
-  * Node machine1: ​+  * Node machine1:
      ​reverse-proxy:​0:​ migration-threshold=1000000 fail-count=1      ​reverse-proxy:​0:​ migration-threshold=1000000 fail-count=1
  
-et si vous effectué ​cette commande ​+et si vous effectuez ​cette commande
  
   sudo /​etc/​init.d/​nginx status   sudo /​etc/​init.d/​nginx status
   ​   ​
-Elle devrait vous retourner ce retour ​+Elle devrait vous retourner ce retour
  
-   ​* ​nginx is running+  ​nginx is running
  
-Le processus ​à bien été redémarrer ​après qu'il a été tuéIl n'y a pas eu de migration de l'​adresse ip.+Le processus ​bien été redémarré ​après qu'il a été tuéIl n'y a pas eu de migration de l'​adresse ip.
  
 ==== Blocage du redémarrage du serveur nginx ==== ==== Blocage du redémarrage du serveur nginx ====
Ligne 204: Ligne 208:
   plop !   plop !
   ​   ​
-tuer à nouveau le processus du démon nginx +Tuer à nouveau le processus du démon nginx
  
 Vous devriez obtenir ce résultat Vous devriez obtenir ce résultat
Ligne 214: Ligne 218:
   ip_virtuelle (ocf::​heartbeat:​IPaddr2):​ Started machine2   ip_virtuelle (ocf::​heartbeat:​IPaddr2):​ Started machine2
   Migration summary:   Migration summary:
-  * Node machine2:  +  * Node machine2: 
-  * Node machine1: ​+  * Node machine1:
      ​reverse-proxy:​0:​ migration-threshold=1000000 fail-count=1000000      ​reverse-proxy:​0:​ migration-threshold=1000000 fail-count=1000000
  
-On peut voir que l'​adresse ip virtuelle a été migrée vers la machine 2 et que le compteur d'​échec ​à été fixé à sa valeur maximale.+On peut voir que l'​adresse ip virtuelle a été migrée vers la machine 2 et que le compteur d'​échec ​été fixé à sa valeur maximale.
  
 ===== Voir aussi ===== ===== Voir aussi =====
  • tutoriel/pacemaker_configuration_ip_virtuelle_plus_script_lsb.1278070025.txt.gz
  • Dernière modification: Le 18/04/2011, 14:51
  • (modification externe)