informatique:systeme:ha:cluster_de_virtualisations_drbd_ocfs2_libvirt-kvm_pacemaker

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
Prochaine révisionLes deux révisions suivantes
informatique:systeme:ha:cluster_de_virtualisations_drbd_ocfs2_libvirt-kvm_pacemaker [2011/10/24 16:58] – [Présentation de la solution] bn8informatique:systeme:ha:cluster_de_virtualisations_drbd_ocfs2_libvirt-kvm_pacemaker [2011/11/08 13:15] – [Création d'une machine virtuelle] bn8
Ligne 7: Ligne 7:
  
 ====== Installation ====== ====== Installation ======
 +
 +===== Mise en place de la prise de pouls avec Pacemaker =====
 +  * Installez et mettez en place la configuration de base de [[informatique:systeme:ha:pacemaker|Pacemaker]].
  
 ===== Espace de stockage partagé ===== ===== Espace de stockage partagé =====
Ligne 14: Ligne 17:
   * Le volume //drbd0// doit maintenant être formaté avec le système de fichiers //OCFS2// il est donc normalement possible de monter ce volume sur les deux machines en même temps. Nous allons donc pouvoir mettre en place ce point de montage :   * Le volume //drbd0// doit maintenant être formaté avec le système de fichiers //OCFS2// il est donc normalement possible de monter ce volume sur les deux machines en même temps. Nous allons donc pouvoir mettre en place ce point de montage :
     * Créer le point de montage ///var/lib/libvirt// sur les deux machines     * Créer le point de montage ///var/lib/libvirt// sur les deux machines
-    * Ajouter la ligne suivante à votre fichier ///etc/fstab// : <code>/dev/drbd0      /var/lib/libvirt        ocfs2   defaults,_netdev        0       0</code> 
-    * Monter le volume sur les deux machines avec la commande suivante : <code>mount /var/lib/libvirt</code> 
  
 +==== Gestion de l'espace partagé par Pacemaker ====
 +
 +Nous allons faire en sorte que pacemaker gère toute la partie volume partagé. Pour cela, il faut commencer par désactiver le lancement automatique des services associés soit //drbd//, //o2cb// et //ocfs2//. Pour cela :
 +  * Supprimer les références au service dans les dossiers ///etc/rcX.d///. Pour cela, lancer les commandes suivantes :<code>insserv -r drbd -f
 +insserv -r ocfs2 -f
 +insserv -r o2cb -f</code>
 +  * Pour que notre modification ne soit pas écraser à chaque mise à jour, il nous faut supprimer les références à ces //runlevel// dans les headers LSB des scripts //init.d//. Pour cela, éditer les fichiers //drbd//, //o2cb// et //ocfs2// dans le dossier ///etc/init.d/// et modifier les header LSB de la manière suivante :
 +    * //Default-Start// : //vide//
 +    * //Default-Stop// : //vide//
 +    * //Short-Description// (si il est défini) : ajouté à la fin : //Managed by pacemaker.//
 +    * //Description// (si il est défini) : ajouté à la fin : //Managed by pacemaker.//
 +
 +
 +Arrêtons maintenant manuellement les services en question :<code>/etc/init.d/ocfs2 stop
 +/etc/init.d/o2cb stop
 +/etc/init.d/drbd stop</code>
 +
 +Nous pouvons maintenant configurer pacemaker afin qu'il gère pour nous ces services :
 +  * Editer la configuration du cluster : <code>crm configure edit</code>
 +  * Ajouter les lignes suivantes dans la configuration : <code>primitive controld ocf:pacemaker:controld \
 + op monitor interval="120s" \
 + op start interval="0" timeout="90s" \
 + op stop interval="0" timeout="100s"
 +primitive drbd0 ocf:linbit:drbd \
 + params drbd_resource="r0" \
 + op monitor interval="20" role="Master" timeout="20" \
 + op monitor interval="30" role="Slave" timeout="20" \
 + op start interval="0" timeout="240s" \
 + op stop interval="0" timeout="100s"
 +primitive o2cb ocf:pacemaker:o2cb \
 + op monitor interval="120s" \
 + op start interval="0" timeout="90s" \
 + op stop interval="0" timeout="100s"
 +primitive var_lib_libvirt ocf:heartbeat:Filesystem \
 + params device="/dev/drbd/by-res/r0" directory="/var/lib/libvirt/" fstype="ocfs2" \
 + op monitor interval="120s" timeout="40s" \
 + op start interval="0" timeout="60s" \
 + op stop interval="0" timeout="60s"
 +ms ms_drbd0 drbd0 \
 + meta resource-stickines="100" notify="true" master-max="2" interleave="true"
 +clone clone_controld controld \
 + meta globally-unique="false" interleave="true" clone clonepinggw pinggw target-role="Started" is-managed="true"
 +clone clone_o2cb o2cb \
 + meta globally-unique="false" interleave="true" target-role="Started"
 +clone clone_var_lib_libvirt var_lib_libvirt \
 + meta interleave="true" ordered="true"
 +colocation col_controld inf: clone_controld ms_drbd0:Master
 +colocation col_o2cb_controld inf: clone_o2cb clone_controld
 +colocation col_var_lib_libvirt_o2cb inf: clone_var_lib_libvirt clone_o2cb
 +order ord_controld_o2cb 0: clone_controld clone_o2cb
 +order ord_drbd_dlm 0: ms_drbd0:promote clone_controld
 +order ord_o2cb_var_lib_libvirt 0: clone_o2cb clone_var_lib_libvirt</code>
 ===== Mise en place de la virtualisation libvirt-kvm ===== ===== Mise en place de la virtualisation libvirt-kvm =====
  
Ligne 50: Ligne 103:
 |                 | |                 |
 |                 | |                 |
-+-----------------+</code>.++-----------------+</code>
     * Autoriser la connexion SSH en tant que root sur les deux machines avec les clés que l'on vient de générer :     * Autoriser la connexion SSH en tant que root sur les deux machines avec les clés que l'on vient de générer :
       * Copier le contenu des fichiers ///root/.ssh/id_rsa.pub// dans le fichier ///root/.ssh/authorized_keys// des deux machines       * Copier le contenu des fichiers ///root/.ssh/id_rsa.pub// dans le fichier ///root/.ssh/authorized_keys// des deux machines
Ligne 66: Ligne 119:
 root@srvvirt2:~# [exit]</code> root@srvvirt2:~# [exit]</code>
  
 +De la même manière que les //drbd// et //ocfs2//, le //daemon libvirtd// sera géré par //Pacemaker//. Il faut donc désactiver le lancement automatique du service :
 +  * Supprimer les réfécences au service dans les dossiers /etc/rcX.d/. Pour cela, lancer la commande suivante : <code>insserv -r libvirt-bin</code>
 +  * Pour que notre modification ne soit pas écraser à chaque mise à jour, il nous faut supprimer les références à ces runlevel dans les headers LSB du script //init.d//. Pour cela, éditer le fichier ///etc/init.d/libvirt-bin// et modifier les header LSB de la manière suivante :
 +    * //Default-Start// : //vide//
 +    * //Default-Stop// : //vide//
 +    * //Short-Description// (si il est défini) : ajouté à la fin : //Managed by pacemaker.//
 +    * //Description// (si il est défini) : ajouté à la fin : //Managed by pacemaker.//
 +  * Arrêtons maintenant manuellement le service : <code>/etc/init.d/libvirt-bin stop</code>
 +  * Configurons maintenant //Pacemaker// pour qu'il gère le service :
 +    * Editer la configuration du cluster : <code>crm configure edit</code>
 +    * Ajouter les lignes suivantes dans la configuration : <code>primitive libvirtd lsb:libvirt-bin \
 +        op monitor interval="120s" \
 +        op start interval="0" \
 +        op stop interval="0"
 +clone clone_libvirtd libvirtd \
 +        meta globally-unique="false" interleave="true"
 +colocation col_libvirtd_var_lib_libvirt inf: clone_libvirtd clone_var_lib_libvirt
 +order ord_var_lib_libvirt_libvirtd 0: clone_var_lib_libvirt clone_libvirtd</code>
 +
 +Pacemaker gère désormais //libvirtd// au travers son script //init//. Il ne sera lancé qu'après que le volume partagée soit pleinement fonctionnel.
 ===== Mise en place d'un accès direct au réseau pour les machines virtuelles ===== ===== Mise en place d'un accès direct au réseau pour les machines virtuelles =====
 Si vous souhaitez que vos futres machines virtuelles est un accès direct à votre réseau, mettez en place des [[informatique:systeme:matos:interface_bridge|interfaces bridges]]. Vos interfaces bridges (//br0//, //br1//, ...) pourront ensuite être utiliser pour configurer vos machines virtuelles. Si vous souhaitez que vos futres machines virtuelles est un accès direct à votre réseau, mettez en place des [[informatique:systeme:matos:interface_bridge|interfaces bridges]]. Vos interfaces bridges (//br0//, //br1//, ...) pourront ensuite être utiliser pour configurer vos machines virtuelles.
  
-===== Mise en place de la prise de pouls avec Pacemaker ===== + 
-  * Installez et mettez en place la configuration de base de [[informatique:systeme:ha:pacemaker|Pacemaker]]. Le cluster est en place et fonctionnel. Vous pouvez dés à présent créer vos premières machines virtuelles+ 
 +Le cluster est en place et fonctionnel. Vous pouvez dés à présent créer vos premières machines virtuelles
  
 ====== Administration du cluster ====== ====== Administration du cluster ======
Ligne 87: Ligne 161:
 location vm-srv1-on-srvvirt1 vm-srv1 50: srvvirt1 location vm-srv1-on-srvvirt1 vm-srv1 50: srvvirt1
 location vm-srv1-run-on-connected-srvvirt1 vm-srv1 \ location vm-srv1-run-on-connected-srvvirt1 vm-srv1 \
-        rule $id="vm-srv1-run-on-connected-srvvirt1-rule" -inf: not_defined pinggwval or pinggwval lt 100</code>+        rule $id="vm-srv1-run-on-connected-srvvirt1-rule" -inf: not_defined pinggwval or pinggwval lt 100 
 +order ord_libvirtd_vm-srv1 0: clone_libvirtd vm-srv1</code>
  
 ===== Démarrage, arrêt et migration d'une machine virtuelle ===== ===== Démarrage, arrêt et migration d'une machine virtuelle =====
Ligne 132: Ligne 207:
   * Editer la configuration et supprimer les règles de localisation des ressources de type //cli-prefer// créés automatiquement lors de leur migration : <code>crm configure edit</code>   * Editer la configuration et supprimer les règles de localisation des ressources de type //cli-prefer// créés automatiquement lors de leur migration : <code>crm configure edit</code>
  
 +
 +====== Problème connus ======
 +
 +<code>o2cb[11515]: ERROR: Setup problem: Couldn't find utility /usr/sbin/ocfs2_controld.pcmk
 +...
 +o2cb[11515]: ERROR: ocfs2_controld.pcmk did not come up</code>
 +
 +Il semble que vous n'avez pas installer le paquet //dlm-pcmk//. Installer le et relancer corosync
 +
 +
 +<code>ocfs2_controld[13232]: Unable to connect to CKPT: Object does not exist</code>
 +
 +Il semble que le service //cktp// fournis par corosync/openais ne soit pas disponible. Vérifier que le paquet //openais// est bien installé et que le service //cktp// est bien lancer par //corosync// (fichier ///etc/corosync/service.d/cktp//. Au besoin, référer vous au guide d'installation de [[informatique:systeme:ha:ocfs2|OCFS2]])
 +
 +
 +<code>Filesystem[27092]: INFO: Running start for /dev/drbd0 on /var/lib/libvirt
 +...
 +lrmd: [26579]: info: RA output: (var_lib_libvirt:1:start:stderr) Cluster stack specified does not match the one currently running
 +...
 +Filesystem[27092]: ERROR: Couldn't mount filesystem /dev/drbd0 on /var/lib/libvirt</code>
 +Cela peut arriver suite à une migration vers //openais//. Le volume //ocfs2// doit être convertie pour être géré par //openais//. Pour cela, il faut d'abord s'assurer que la partition n'est montée sur aucune des machines puis lancer la commande //fsck.ocfs2// sur le volume.
  
  
  • informatique/systeme/ha/cluster_de_virtualisations_drbd_ocfs2_libvirt-kvm_pacemaker.txt
  • Dernière modification : 2012/10/12 15:13
  • de bn8