Kvm Cluster & Lvm & Drdb

De BlaxWiki
Aller à la navigationAller à la recherche

KVM est l'hyperviseur libre supporté par RedHat. Il est extrêmement simple et facile d'utilisation. Par rapport à Xen, il n'oblige pas de faire tourner un kernel linux spécifique et se présente sous la forme de modules kernel. Chaque VM est vu comme un process lambda sur l'hyperviseur et un "ps" permet de voir les VM qui tournent. Par défaut, il n'existe pas de commande equivalente au "xm" de Xen. Afin d'agir sur les VM KVM, il faut passer par libvirtd qui est un daemon d'abstraction multi-hyperviseur.

Présentation

Voilà les informations niveau serveur / ip / volume de ce tutorial

 - 2 serveurs : kvm1.ecomobilier.fr & kvm2.ecomobilier.fr
 - 2 interfaces en aggrégation avec 2 ip sur le bonding (une par volume)
 - Ip kvm1 : 10.250.250.17 & 10.250.250.19
 - Ip kvm2 : 10.250.250.18 & 10.250.250.20
 - On va avoir 2 volumes drdb
 - les vm seront créées sur des LV

Installation

Kvm

Kvm est souvent par défaut sur les distributions. Les services suivant doivent être lancés pour que kvm fonctionne : messagebus, libvirtd, libvirt-guests

Cluster

Voilà les packages à installer pour la partie cluster : openais cman rgmanager lvm2-cluster gfs2-utils cluster-cim

Drbd

On peut l'installer via les packages, mais il est préférable d'installer la dernière version via les sources :
# cd /root/install/
# cd drbd-8.4.1/
# ./configure
# make rpm
# make km-rpm 
# cd /root/rpmbuild/RPMS/x86_64/
# rpm -Uvh ./drdb*

Configuration

= drbd.conf

global {
        usage-count no;
        # minor-count dialog-refresh disable-ip-verification
}

common {
       protocol C;

       startup {
               wfc-timeout 300;
               degr-wfc-timeout 10;
               become-primary-on both;
       }

       disk {
               on-io-error detach;
               fencing dont-care;
       }

       syncer {
               rate 110M;
       }

       net {
               timeout 50;
               connect-int 20;
               ping-int 30;
               allow-two-primaries;
               after-sb-0pri discard-zero-changes;
               after-sb-1pri discard-secondary;
               after-sb-2pri disconnect;

       }
}

resource drbd0 {
       on kvm1.ecomobilier.fr {
               disk /dev/sdb1;
               device /dev/drbd0;
               meta-disk internal;
               address 10.250.250.17:7788;
       }
       on kvm2.ecomobilier.fr {
               disk /dev/sdb1;
               device /dev/drbd0;
               meta-disk internal;
               address 10.250.250.18:7788;
       }
       syncer {
               rate 110M;
       }

}

resource drbd1 {
       on kvm1.ecomobilier.fr {
               disk /dev/sdb2;
               device /dev/drbd1;
               meta-disk internal;
               address 10.250.250.19:7788;
       }
       on kvm2.ecomobilier.fr {
               disk /dev/sdb2;
               device /dev/drbd1;
               meta-disk internal;
               address 10.250.250.20:7788;
       }
       syncer {
               rate 110M;
       }

}

Initialisation et creation des drbd

Créer bien sur dans un premier temps 2 partitions sur un disque physique différent du disque system. Ces 2 partitions seront exactement les mêmes sur les 2 serveurs (les 2 partitions
peuvent ne pas avoir la même taille, mais la partition1 de kvm1 aura la meme taille que la partion1 de kvm2, et pareil pour la partition 2)




Afin de ne pas avoir de problème de resynchro, il faut créer autant de partition (pour stocker les vm) qu'il y a de noeuds dans le cluster. Ces partitions seront bien sur de tailles égales sur les différents noeuds