Outils pour utilisateurs

Outils du site


clustering_avec_centos_5.6

Introduction

Ce document présente la mise en place d'un cluster consitué de 3 VM sous Centos 5.8.

La configuration d'un cluster ne demande que le paramétrage d'un fichier xml nommé /etc/cluster/cluster.conf et présents sur tous les noeuds du cluster.

Deux services assurent la gestion du cluster :

  • cman, cluster manager pour la gestion des noeuds
  • rgmanager, ressource manager qui gère les ressources et services fournis par le cluster.

Il importe de correctement configurer le fencing, qui permet de entrer ou sortir un noeud du cluster, pour cela il faut impérativement supprimer la gestion apci de l'alimentation. Le plus efficace est de ne pas démarrer le service au boot

chkconfig --del acpid

Il faut aussi désactiver SELinux dans le fichier /etc/sysconfig/selinux

SELINUX=disabled

Dans un cluster, les noeuds doivent être à la même heure, le plus simple est d'utiliser ntp

yum install ntp
chkconfig ntpd on
ntpdate pool.ntp.org
/etc/init.d/ntpd start

Configurer le client ntp dans le fichier /etc/ntp.conf en ajoutant la ligne suivante :

server pool.ntp.org

Programmer ceci dans un cron en créant le fichier /etc/cron.d/ntpd qui contiendra la ligne suivante :

00 00 * * * root /usr/sbin/ntpd -q -u ntp:ntp

Création des VM

Il existe de nombreuses méthodes dans CentOS pour cela, la plus intuitive est virt-manager, interface graphique permettant ceci. Toutefois pour cet exemple, nous allons employer virt-install avec un fichier kickstart.

Dans un premier temps, il faut mettre en place un serveur Web pour l'accès aux sources de l'installation. Le principe sera de monter l'image ISO du DVD de Cent0S et de le rendre accessible via un serveur Web.

Le serveur Web

L'installation du serveur httpd est simple :

yum -y install httpd
service httpd start
chkconfig httpd on

Monter l'ISO

Le plus simple est soit de récupérer l'ISO depuis un mirroir CentOS soit de la recréer depuis le DVD ayant servit à l'installation. Pour cela mettre le DVD dans le lecteur et créer l'ISO

dd if=/dev/cdrom of=/home/centos58.iso

Monter ensuite l'ISO sur un point de montage

mkdir /u01
mount -o loop -t iso9660 /home/centos58.iso /u01

Pour rendre le montage permanent, ajouter la ligne suivante dans /etc/fstab

/home/centos58.iso /u01 iso9660 loop,ro 0 0

Puis créer un lien symbolique pour l'accès Web

ln -s /u01 /var/www/html/centos

En pointant un navigateur sur http://ip_du_serveur/centos, l'arborescence du DVD doit apparaitre.

Fichier kickstart

Un kickstart permet d'installer automatiquement une CentOS sans devoir répondre aux questions. Dans l'exemple, le cluster devra faire tourner un serveur web accessible via une IP flottante en fonction du noeud actif. Le fichier kickstart installera donc le minimum requis ( core ), plus le serveur httpd ainsi qu'un des deux composants de Conga ( ricci ) dont le fonctionnement sera vu plus tard.

Exemple de kickstart

Le serveur porte l'IP 192.168.1.100, c'est sur lui que tourne le serveur Web contenant les sources de l'installation. Ce fichier exemple sert pour la création d'une VM nommée vm01.adi100.concarnux.org en IP 192.168.1.101

install
url --url http://192.168.1.100/centos
lang fr_FR.UTF-8
keyboard fr-latin9
text
network --device eth0 --bootproto static --ip 192.168.1.101  --netmask 255.255.255.0 --gateway 192.168.1.1 --nameserver 80.10.246.2 --hostname vm01.adi100.concarnux.org
rootpw azerty
firewall --disabled
authconfig --enableshadow --enablemd5
selinux --disabled
timezone --utc Europe/Paris
bootloader --location=mbr --driveorder=xvda
reboot
clearpart --all --initlabel --drives=xvda
part /boot --fstype ext2 --size=100 --asprimary
part / --fstype ext3 --size=500 --asprimary
part swap --size=1024 --asprimary
part /usr --fstype ext3 --size=2000
part /var --fstype ext3 --size=1000
part /tmp --fstype ext3 --size=500
part /home --fstype ext3 --size=1 --grow
%packages --excludedocs --nobase
@core
httpd
ricci

Sachant de plus que chaque VM est identique, l'unique différence est au niveau de la ligne network, le plus simple est de créer un script shell qui génèrera le kickstart propre à chaque VM et installera la VM avec virt-install. Le script recevant en paramètre l'IP de la VM et son nom DNS.

Script createVM.sh

Il s'agit d'un script très simple, je laisse à chacun le soin de l'améliorer…

#!/bin/sh

IP=$1
NOM_DNS=$2
VM=$(echo $(echo $NOM_DNS | cut -d '.' -f1))

echo "La VM portera le nom : $VM et aura pour nom DNS : $NOM_DNS et pour IP : $IP"

rm -f /etc/xen/$VM

cat <<EOF > /var/www/html/${VM}-ks.cfg
install
url --url http://192.168.1.100/centos
lang fr_FR.UTF-8
keyboard fr-latin9
text
network --device eth0 --bootproto static --ip $IP  --netmask 255.255.255.0 --gateway 192.168.1.1 --nameserver 80.10.246.2 --hostname $NOM_DNS
rootpw azerty
firewall --disabled
authconfig --enableshadow --enablemd5
selinux --disabled
timezone --utc Europe/Paris
bootloader --location=mbr --driveorder=xvda
reboot
clearpart --all --initlabel --drives=xvda
part /boot --fstype ext2 --size=100 --asprimary
part / --fstype ext3 --size=500 --asprimary
part swap --size=1024 --asprimary
part /usr --fstype ext3 --size=2000
part /var --fstype ext3 --size=1000
part /tmp --fstype ext3 --size=500
part /home --fstype ext3 --size=1 --grow
%packages --excludedocs --nobase
@core
httpd
ricci
EOF

virt-install --name $VM -p -r 512 --disk path=/home/disks/${VM}.img,size=8 --location http://192.168.1.100/centos -x "cmdline ks=http://192.168.1.100/${VM}-ks.cfg ip=$IP netmask=255.255.255.0 gateway=192.168.1.1 dns=80.10.246.2 hostname=${NOM_DNS}" --nographics

Créer les 3 VM

sh /root/createVM 192.168.1.101 vm01.adi100.concarnux.fr
sh /root/createVM 192.168.1.102 vm02.adi100.concarnux.fr
sh /root/createVM 192.168.1.103 vm03.adi103.concarnux.fr

Chaque VM est créee avec 512Mo de RAM et un disque dur de 8Go partitonné.

Il est très important que la résolution de noms soit correctement effectuée. Dans notre exemple, chaque machine du cluster aura un fichier /etc/hosts composé des lignes suivantes :

127.0.0.1 localhost
192.168.1.100 adi100.concarnux.fr 
192.168.1.101 vm01.adi100.concarnux.fr
192.168.1.102 vm02.adi100.concarnux.fr
192.168.1.103 vm03.adi100.concarnux.fr

Configuration Conga

Conga permet la gestion du cluster au travers une interface web. Conga est constitué de deux éléments :

  • ricci, un agent devant tourner sur chaque noeud.
  • luci, qui est sur un des noeuds et configure une interface web accessible via https sur le port 8084.

Conga assure en fait la gestion transparente sur chaque noeud du fichier /etc/cluster/cluster.conf.

Sur chaque noeud, installer ricci, ce qui a été fait sur les 3 VM, il faut aussi l'installer sur le Dom0 car c'est depuis celui-ci que sera géré le cluster.

Donc sur le serveur adi100.concarnux.org ( 192.168.1.100 ) installer ricci et luci.

yum install ricci luci

Lancer ricci

service ricci start

Configurer luci pour le mot de passe du user admin

luci_admin init

Lancer ensuite luci

service luci start

Le système annonce l'url de connexion, mode sécurisé, ( https://192.168.1.100:8084 )

Se connecter en admin avec le mot de passe créé précédement.

Parefeu

Il faut pour Conga et la gestion du cluster en général ouvrir certains ports sur le parefeu.

iptables -I INPUT -p udp -m state --state NEW -m multiport --dports 5404,5405 -j ACCEPT
iptables -I INPUT -p tcp -m state --state NEW -m multiport --dports 11111 -j ACCEPT
iptables -I INPUT -p tcp -m state --state NEW -m multiport --dports 16851 -j ACCEPT
iptables -I INPUT -p tcp -m state --state NEW -m multiport --dports 14567 -j ACCEPT
iptables -I INPUT -p tcp -m state --state NEW -m multiport --dports 8084 -j ACCEPT
iptables -I INPUT -p tcp -m state --state NEW -m multiport --dports 21064 -j ACCEPT
service iptables save
service iptables restart

Voir la page suivante pour l'attribution des ports.

clustering_avec_centos_5.6.txt · Dernière modification: 2012/05/14 16:07 par admin