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
informatique:systeme:ha:cluster_de_virtualisations_drbd_ocfs2_libvirt-kvm_pacemaker [2011/10/26 09:31] – [Mise en place de la virtualisation libvirt-kvm] bn8informatique:systeme:ha:cluster_de_virtualisations_drbd_ocfs2_libvirt-kvm_pacemaker [2012/10/12 15:13] (Version actuelle) – [Présentation de la solution] bn8
Ligne 1: Ligne 1:
-====== Présentation de la solution ======+====== Cluster de virtualisations DRBD/OCFS2/Libvirt-kvm/Pacemaker ====== 
 + 
 + 
 +===== Présentation de la solution =====
 Ce cluster de virtualisations est basé sur la technologie KVM mettant à profit le support de la virtualisation matérielle au niveau des processeurs. Libvirt, une librairie d'abstraction de la virtualisation, est utilisée pour manipuler les machines virtuelles KVM. En cas d'incompatibilité avec la virtualisation matérielle (et donc avec KVM), qemu peut venir remplacer KVM avec des performances moindre. Un lien réseau dédié entre les machines physiques servira à la réplication DRBD, au maintien du cluster OCFS2, au communication inter-libvirt et à la surveillance de pacemaker. Ce cluster de virtualisations est basé sur la technologie KVM mettant à profit le support de la virtualisation matérielle au niveau des processeurs. Libvirt, une librairie d'abstraction de la virtualisation, est utilisée pour manipuler les machines virtuelles KVM. En cas d'incompatibilité avec la virtualisation matérielle (et donc avec KVM), qemu peut venir remplacer KVM avec des performances moindre. Un lien réseau dédié entre les machines physiques servira à la réplication DRBD, au maintien du cluster OCFS2, au communication inter-libvirt et à la surveillance de pacemaker.
  
Ligne 6: Ligne 9:
 Pacemaker viendra ensuite se greffer sur l'architecture de virtualisation afin de mettre en place un système de prise de pouls permettant la haute-disponibilité des machines virtuelles. Pacemaker aura pour rôle de surveiller l'état des machines physiques afin d'assurer la reprise des machines virtuelles délaissées par une machines physiques indisponibles. Pacemaker manipulera les machines virtuelles au travers la libvirt. Pacemaker viendra ensuite se greffer sur l'architecture de virtualisation afin de mettre en place un système de prise de pouls permettant la haute-disponibilité des machines virtuelles. Pacemaker aura pour rôle de surveiller l'état des machines physiques afin d'assurer la reprise des machines virtuelles délaissées par une machines physiques indisponibles. Pacemaker manipulera les machines virtuelles au travers la libvirt.
  
-====== Installation ======+<note warning>La compatibilité OCFS2/DRBD est fortement perturbée sur les derniers kernel. Il vaudrait mieux éviter ce couple à l'avenir. Une solution comme [[informatique:systeme:ha:ceth|Ceph]] (http://ceph.com/) semble une bonne alternative. Dans la mesure du possible, les clusters incluant de la réplication de système de fichiers sont bien souvent plus stable et plus facilement maintenable en mode actif/passif.</note> 
 +===== Installation =====
  
-===== Mise en place de la prise de pouls avec Pacemaker =====+==== 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]].   * Installez et mettez en place la configuration de base de [[informatique:systeme:ha:pacemaker|Pacemaker]].
  
-===== Espace de stockage partagé =====+==== Espace de stockage partagé ====
  
   * Installer et mettre en place [[informatique:systeme:ha:drbd|DRBD]]. Nous partirons du principe que vous devriez avoir un volume ///dev/drbd0// en mode primaire/primaire accessible depuis les deux machines physiques.   * Installer et mettre en place [[informatique:systeme:ha:drbd|DRBD]]. Nous partirons du principe que vous devriez avoir un volume ///dev/drbd0// en mode primaire/primaire accessible depuis les deux machines physiques.
Ligne 18: Ligne 22:
     * 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
  
-==== Gestion de l'espace partagé par Pacemaker ====+=== 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 : 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 +  * 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 +insserv -r ocfs2 -f 
-insserv -r o2cb</code>+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 :   * 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-Start// : //vide//
Ligne 70: Ligne 74:
 order ord_drbd_dlm 0: ms_drbd0:promote clone_controld order ord_drbd_dlm 0: ms_drbd0:promote clone_controld
 order ord_o2cb_var_lib_libvirt 0: clone_o2cb clone_var_lib_libvirt</code> 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 ====
  
   * Installer et mettre en place la [[informatique:systeme:virtualisation:libvirt-kvm|libvirt et kvm ]]   * Installer et mettre en place la [[informatique:systeme:virtualisation:libvirt-kvm|libvirt et kvm ]]
Ligne 129: Ligne 133:
   * Configurons maintenant //Pacemaker// pour qu'il gère le service :   * Configurons maintenant //Pacemaker// pour qu'il gère le service :
     * Editer la configuration du cluster : <code>crm configure edit</code>     * Editer la configuration du cluster : <code>crm configure edit</code>
-    * Ajouter les lignes suivantes dans la configuration : <code>primitive libvirtd lsb:libvirt-bin+    * 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 \ clone clone_libvirtd libvirtd \
         meta globally-unique="false" interleave="true"         meta globally-unique="false" interleave="true"
Ligne 143: Ligne 150:
 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 ===== 
-===== Création d'une machine virtuelle =====+==== Création d'une machine virtuelle ====
   * Créé la machine virtuelle sur une des machines physiques via la libvirt. Vous pouvez utiliser l'outil [[informatique:systeme:virtualisation:libvirt-kvm:virt-manager]] (ou en ligne de commande, l'outil [[informatique:systeme:virtualisation:libvirt-kvm:virt-inst]]). Nous partons du principe que vous avez appeler cette machine virtuelle //srv1//.   * Créé la machine virtuelle sur une des machines physiques via la libvirt. Vous pouvez utiliser l'outil [[informatique:systeme:virtualisation:libvirt-kvm:virt-manager]] (ou en ligne de commande, l'outil [[informatique:systeme:virtualisation:libvirt-kvm:virt-inst]]). Nous partons du principe que vous avez appeler cette machine virtuelle //srv1//.
   * Charger la configuration de la machine virtuelle dans la libvirt de l'autre machine physique en exécutant cette commande sur l'autre machine : <code>virsh define /etc/libvirt/qemu/srv1.xml</code>   * Charger la configuration de la machine virtuelle dans la libvirt de l'autre machine physique en exécutant cette commande sur l'autre machine : <code>virsh define /etc/libvirt/qemu/srv1.xml</code>
Ligne 158: Ligne 165:
 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 ====
 Bien qu'il est possible de démarrer ou d'arrêter une machine virtuelle en attaquant directement la libvirt de la machine la faisant ou qui doit la faire tourner, il est préférable de passer vos ordres de démarrage ou d'arrêt de votre machine virtuelle à pacemaker. Cela se justifie pour deux raisons principalement : Bien qu'il est possible de démarrer ou d'arrêter une machine virtuelle en attaquant directement la libvirt de la machine la faisant ou qui doit la faire tourner, il est préférable de passer vos ordres de démarrage ou d'arrêt de votre machine virtuelle à pacemaker. Cela se justifie pour deux raisons principalement :
   * Il n'existe aucun mécanisme au niveau de la libvirt pour s'assurer que la machine ne tourne pas déjà sur l'autre machine physique au moment du démarrage. En cas de démarrage simultané de votre machine virtuelle sur les deux machines physiques, vous pourriez endommager l'image disque de celle-ci.   * Il n'existe aucun mécanisme au niveau de la libvirt pour s'assurer que la machine ne tourne pas déjà sur l'autre machine physique au moment du démarrage. En cas de démarrage simultané de votre machine virtuelle sur les deux machines physiques, vous pourriez endommager l'image disque de celle-ci.
   * En passant vos ordres d'arrêt ou de démarage de vos machines virtuelles via pacemaker, vous vous assurez que ce dernier reste bien au courant d'où tourne ses ressources.   * En passant vos ordres d'arrêt ou de démarage de vos machines virtuelles via pacemaker, vous vous assurez que ce dernier reste bien au courant d'où tourne ses ressources.
  
-==== Démarrage d'une machine virtuelle ====+=== Démarrage d'une machine virtuelle ===
 Utiliser la commande suivante : <code>crm resource start vm-srv1</code> Utiliser la commande suivante : <code>crm resource start vm-srv1</code>
  
-==== Arrêt d'une machine virtuelle ====+=== Arrêt d'une machine virtuelle ===
 Utiliser la commande suivante : <code>crm resource stop vm-srv1</code> Utiliser la commande suivante : <code>crm resource stop vm-srv1</code>
  
-==== Migration d'une machine virtuelle ====+=== Migration d'une machine virtuelle ===
 En partant du principe que vous souhaitiez migrer la machine virtuelle //srv1// tournant actuellement sur la machine physique //srvvirt1// vers la machine physique //srvvirt2//, utilisez la commande suivante : <code>crm resource migrate vm-srv1 srvvirt2</code> En partant du principe que vous souhaitiez migrer la machine virtuelle //srv1// tournant actuellement sur la machine physique //srvvirt1// vers la machine physique //srvvirt2//, utilisez la commande suivante : <code>crm resource migrate vm-srv1 srvvirt2</code>
  
Ligne 179: Ligne 187:
 Cette règle est créé afin de s'assurer que ce choix que vous venez de faire, sera appliqué en cas de reboot de la machine par exemple. Elle pourra être supprimée si cela n'est pas se que vous souhaitez. Si vous la supprimez cela n'aura aucune conséquence immédiate (c'est à dire que la machine ne sera pas migrer dans l'autre sens). Cette règle est créé afin de s'assurer que ce choix que vous venez de faire, sera appliqué en cas de reboot de la machine par exemple. Elle pourra être supprimée si cela n'est pas se que vous souhaitez. Si vous la supprimez cela n'aura aucune conséquence immédiate (c'est à dire que la machine ne sera pas migrer dans l'autre sens).
  
-==== Mise en maintenance d'un serveur physique ====+=== Mise en maintenance d'un serveur physique ===
 A des fins de maintenance, il peut être nécessaire de devoir arrêtez toutes les machines tournant sur une machine physique. En réalité, il est plutôt préférable de migrer toutes ces machines vers l'autres serveurs. A des fins de maintenance, il peut être nécessaire de devoir arrêtez toutes les machines tournant sur une machine physique. En réalité, il est plutôt préférable de migrer toutes ces machines vers l'autres serveurs.
  
Ligne 204: Ligne 212:
  
  
-====== Problème connus ======+===== Problème connus =====
  
 <code>o2cb[11515]: ERROR: Setup problem: Couldn't find utility /usr/sbin/ocfs2_controld.pcmk <code>o2cb[11515]: ERROR: Setup problem: Couldn't find utility /usr/sbin/ocfs2_controld.pcmk
Ligne 224: Ligne 232:
 Filesystem[27092]: ERROR: Couldn't mount filesystem /dev/drbd0 on /var/lib/libvirt</code> 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. 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.1319621470.txt.gz
  • Dernière modification : 2011/10/26 09:31
  • de bn8