C. Augmenter le disque de la VM
Utiliser LVM pour la gestion des VM permet d'augmenter
très facilement l'espace disque, il suffit de redimensionner le volume
logique. L'exemple suivant montre l'extension de +10Go de la VM
adi051.ista.ac.cd.
xm shutdown adi051.ista.ac.cd
lvextend /dev/vg01/adi051.ista.ac.cd -disk +L 10G e2fsck -f
/dev/vg01/adi051.ista.ac.cd -disk resize2fs /dev/vg01/adi051.ista.ac.cd
-disk
xm create /etc/xen/adi051.ista.ac.cd
D. Dupliquer des VM
Une fois le principe assimilé, il est simple de
dupliquer des VM. Ici encore il existe de nombreuses méthodes, la plus
simple est de créer une première VM en appliquant certaines
personnalisations communes et de créer une image tar.
A titre d'exemple il faut installer les packages suivants :
aptitude install vim ntpdate
Puis éditer aussi le .bashrc en root :
export LS_OPTIONS='--color=auto' eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -hl' alias l='ls $LS_OPTIONS -lA' alias
df='df -h'
E. Création d'une image tar de la VM
Stopper la VM et monter son volume logique sur un point de montage.
xm shutdown adi051.ista.ac.cd
mkdir /mnt/img
mount /dev/vg01/adi051.ista.ac.cd -disk /mnt/img cd /mnt/img
tar -cvpsf /home/vm_modele.tar *
cd /
umount /mnt/img
Editer ensuite le fichier /etc/xen-tools/xen-tools.conf et
modifier la ligne install-method ainsi :
#install-method = debootstrap
install-method = tar
install-source = /home/vm_modele.tar
Bien rajouter la ligne install-source.
La commande de création des VM est identiquée
à celle utilisée précédemment. Les scripts hooks du
package xen-tools faisant les corrections type IP, hostname...
F. Cluster avec des VM
L'objectif ici est de simuler un cluster avec des VM, il est
ainsi facile de tester le cluster et ensuite de la passer en production sur des
serveurs réels. Debian propose 95% des fonctions disponibles sous REDHAT
en matière de gestion des clusters. Il ne manque que quelques
utilitaires, type ricci et luci ou encore pirhana qui simplifient simplement la
mise en place de la configuration.
Pour information la gestion d'un cluster se fait dans un unique
fichier au format XML et nommé /etc/cluster/cluster.conf.
Important
· Les packages redhat-cluster-suite permettent de
gérer des clusters jusqu'a 16 noeuds.
· Seul le protocole IPV4 est actuellement utilisable.
A partir de la VM exemple rajouter les packages suivants :
aptitude install redhat-cluster-suite ipvsadm open-iscsi
· redhat-cluster-suite, contient l'ensemble des fonction de
cluster ( cman, rgmanage, GFS... )
· ipvsadm, permet de gérer la répartition de
charge.
· open-iscsi permet d'utiliser des disques via le protocole
iscsi.
une fois cette opération faite, stopper la VM et
créer une image tar pour la duplication.
xm shutdown adi051.ista.ac.cd
mkdir /mnt/img
mount /dev/vg01/adi051.ista.ac.cd -disk /mnt/img tar -cvpsf
/home/vm_cluster_modele.tar *
cd /
umount /mnt/img
Le cluster exemple comportera 3 noeuds, créer donc les
deux VM supplementaires.
xen-create-image --hostname adi052.ista.ac.cd --ip 192.168.1.52
--install-source
/home/vm_cluster_modele.tar
xen-create-image --hostname adi053.ista.ac.cd --ip 192.168.1.53
--install-source
/home/vm_cluster_modele.tar
Lancer ensuite les 3 VM
root@adi100:~# xm create /etc/xen/adi051. ista.ac.cd.cfg
root@adi100:~# xm create /etc/xen/adi052. ista.ac.cd.cfg
root@adi100:~# xm create /etc/xen/adi053. ista.ac.cd.cfg
root@adi100:~# xm list
Name
Domain-0 adi051.ista.ac.cd adi052.ista.ac.cd adi053.ista.ac.cd
root@adi100:~#
ID
Mem VCPUs
|
State
|
Time(s)
|
0
|
2514
|
2
|
r
|
144.6
|
9
|
512
|
1
|
-b
|
1.8
|
10
|
512
|
1
|
-b
|
1.9
|
11
|
512
|
1
|
-b
|
1.7
|
|
Sur chaque VM mettre en place la résolution de nom via
/etc/hosts
192.168.1.51 adi051.ista.ac.cd adi051
192.168.1.52 adi052.ista.ac.cd adi052
192.168.1.53 adi053.ista.ac.cd adi053
Fichier /etc/cluster/cluster.conf
Afin de vérifier le fonctionnement correct du cluster,
nous allons mettre en place une configuration simple des 3 noeuds. Attention ce
fichier n'est pas complet et ne pose que les bases du cluster. Il doit
être copié à l'identique sur les 3 noeuds.
<?xml version="1.0" ?>
<cluster name="alpha" config_version="1">
<cman>
<multicast addr="224.0.0.1" />
</cman>
<clusternodes>
<clusternode name ="adi051.ista.ac.cd " votes="1"
nodeid="1">
<fence>
<method name="single">
<device name="manual" />
</method>
</fence>
</clusternode>
<clusternode name ="adi052.ista.ac.cd " votes="1"
nodeid="2">
<fence>
<method name="single">
<device name="manual" />
</method> </fence>
</clusternode>
<clusternode name ="adi053.ista.ac.cd " votes="1"
nodeid="3">
<fence>
<method name="single">
<device name="manual" />
</method> </fence>
</clusternode> </clusternodes>
<fencedevices>
<fencedevice name="manual" agent="fence manual" />
_
</fencedevices>
<fence_daemon clean_start="0" post_fail_delay="0"
post_join_delay="3" />
<rm>
<failoverdomains>
<failoverdomain name="dom01" restricted="1" ordered="1"
nofailback="0">
<failoverdomainnode name="adi051.ista.ac.cd " priority="10"
/>
<failoverdomainnode name="adi052.ista.ac.cd " priority="20"
/>
<failoverdomainnode name="adi053.ista.ac.cd " priority="30"
/>
</failoverdomain>
</failoverdomains>
</rm>
</cluster>
· Le cluster se nomme alpha et comprend 3 noeuds.
· L'isolation des noeuds ( fence ) est faite
manuellment.
· Un seul failoverdomain est défini ( dom01 ) avec
la priorité de chaque noeud.
Sur chaque noeud lancer les commandes suivantes :
/etc/init.d/cman start /etc/init.d/rgmanager start
Sur n'importe quel noeud du cluster lancer la commande clustat
pour
vérifier le démarrage correct du cluster.
clustat
Cluster Status for alpha @ Wed Aug 24 12:21:27 2011 Member
Status: Quorate
Member Name ID Status
adi051.ista.ac.cd 1 Online, Local
adi52. ista.ac.cd 2 Online
adi53. ista.ac.cd 3 Online
Mise en place d'un serveur web
(www.ista.ac.cd)
Pour l'exemple nous allons utiliser le serveur Web apache, qui
sera donc démarré en priorité sur adi051.ista.ac.cd et en
cas de défaillance redémarrer sur adi052.ista.ac.cd et enfin sur
adi053. ista.ac.cd.
Installer apache sur chaque noeud et désactiver son
démarrage au boot.
aptitude install apache2 /etc/init.d/apache2 stop update-rc.d
apache2 remove
Note : il peut y avoir sur les VM des messages d'erreurs
debconf qui peuvent être ignorés, sans doute un mauvais
paramétrage de la console...
Modifier sur chaque noeud le fichier /etc/cluster/cluser.conf en
prenant soin d'incrémenter le numéro de version
<?xml version="1.0" ?>
<cluster name="alpha" config_version="2">
<cman>
<multicast addr="224.0.0.1" />
</cman>
<clusternodes>
<clusternode name ="adi051.ista.ac.cd" votes="1"
nodeid="1">
<fence>
<method name="single">
<device name="manual" />
</method>
</fence>
</clusternode>
<clusternode name ="adi052.ista.ac.cd" votes="1"
nodeid="2">
<fence>
<method name="single">
<device name="manual" />
</method>
</fence>
</clusternode>
<clusternode name ="adi053.ista.ac.cd" votes="1"
nodeid="3">
<fence>
<method name="single">
<device name="manual" />
</method>
</fence>
</clusternode>
</clusternodes>
<fencedevices>
<fencedevice name="manual" agent="fence_manual" />
</fencedevices>
<fence_daemon clean_start="0" post_fail_delay="0"
post_join_delay="3" />
<rm>
<failoverdomains>
<failoverdomain name="dom01" restricted="1" ordered="1"
nofailback="0">
<failoverdomainnode name="adi051.ista.ac.cd " priority="10"
/>
<failoverdomainnode name="adi052.ista.ac.cd " priority="20"
/>
<failoverdomainnode name="adi053.ista.ac.cd " priority="30"
/>
</failoverdomain>
</failoverdomains>
<service name="web" autostart="1" domain="dom01"
recovery="relocate" >
<script name="start_ web" file="/etc/init.d/apache2" />
</service>
</rm>
</cluster>
Relancer le cluster, sur chaque noeud
/etc/init.d/rgmanager stop /etc/init.d/cman restart
/etc/init.d/rgmanager start
Puis lancer la commande clustat pour vérifier le
fonctionnement correct
root@adi051:-# Cluster Status Member Status:
|
clustat
for alpha @ Quorate
|
Wed Aug
|
24 10:45:28 2011
|
Member Name
|
ID
|
Status
|
|
adi051.ista.ac.cd adi052.ista.ac.cd adi053.ista.ac.cd
|
1
2
3
|
Online, Online, Online,
|
Local, rgmanager
rgmanager rgmanager
|
Service Name Owner (Last) State
Service : web adi051.ista.ac.cd started
root@adi051:-#
Pour tester la bascule stopper la VM adi051.ista.ac.cd et
relancer la commande clustat sur adi052.ista.ac.cd pour vérifier que le
service apache a bien migré.
root@adi052:-# clustat
Cluster Status for alpha @ Wed Aug 24 10:54:05 2011 Member
Status: Quorate
Member Name ID Status
adi051.ista.ac.cd 1 Offline
adi052.ista.ac.cd 2 Online, Local, rgmanager
adi053.ista.ac.cd 3 Online, rgmanager
Service Name Owner (Last) State
Service : web adi052.ista.ac.cd started
root@adi052:-#
Si adi051.ista.ac.cd revient dans le cluster, le service est
stoppé sur adi052.ista.ac .cd et redémarré sur
adi051.ista.ac.cd
Il est possible de migrer manuellement le service ainsi :
root@adi052:-# clusvcadm -r web -m adi053.ista.ac.cd Trying to
relocate service:web to adi053. ista.ac.cd...Success service:web is now running
on adi053. ista.ac.cd
root@adi052:-# clustat
luster Status for alpha @ Wed Aug 24 10:57:10 2011 Member Status:
Quorate
Member Name ID Status
adi51. ista.ac.cd 1 Online, rgmanager
adi52. ista.ac.cd 2 Online, Local, rgmanager
adi53. ista.ac.cd 3 Online, rgmanager
Service Name Owner (Last) State
service:web adi053. ista.ac.cd started
root@adi052:~#
|