Cette page vous affiche les différences entre la révision choisie et la version actuelle de la page.
clustering_avec_centos_5.6 [2011/09/11 14:26] admin [Configuration Conga] |
clustering_avec_centos_5.6 [2012/05/14 16:07] (Version actuelle) admin [Configuration Conga] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
===== Introduction ===== | ===== Introduction ===== | ||
- | Ce document présente la mise en place d'un cluster consitué de 3 VM sous Centos 5.6. | + | 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. | 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. | ||
Ligne 30: | Ligne 30: | ||
00 00 * * * root /usr/sbin/ntpd -q -u ntp:ntp | 00 00 * * * root /usr/sbin/ntpd -q -u ntp:ntp | ||
</code> | </code> | ||
+ | ===== 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 : | ||
+ | <code> | ||
+ | yum -y install httpd | ||
+ | service httpd start | ||
+ | chkconfig httpd on | ||
+ | </code> | ||
+ | ==== 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 | ||
+ | <code> | ||
+ | dd if=/dev/cdrom of=/home/centos58.iso | ||
+ | </code> | ||
+ | Monter ensuite l'ISO sur un point de montage | ||
+ | <code> | ||
+ | mkdir /u01 | ||
+ | mount -o loop -t iso9660 /home/centos58.iso /u01 | ||
+ | </code> | ||
+ | Pour rendre le montage permanent, ajouter la ligne suivante dans /etc/fstab | ||
+ | <code> | ||
+ | /home/centos58.iso /u01 iso9660 loop,ro 0 0 | ||
+ | </code> | ||
+ | Puis créer un lien symbolique pour l'accès Web | ||
+ | <code> | ||
+ | ln -s /u01 /var/www/html/centos | ||
+ | </code> | ||
+ | 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 | ||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
+ | 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... | ||
+ | <code> | ||
+ | #!/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 | ||
+ | </code> | ||
+ | |||
+ | Créer les 3 VM | ||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
+ | 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 : | ||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
===== Configuration Conga ===== | ===== Configuration Conga ===== | ||
Conga permet la gestion du cluster au travers une interface web. Conga est constitué de deux éléments : | Conga permet la gestion du cluster au travers une interface web. Conga est constitué de deux éléments : | ||
Ligne 39: | Ligne 159: | ||
Conga assure en fait la gestion transparente sur chaque noeud du fichier /etc/cluster/cluster.conf. | Conga assure en fait la gestion transparente sur chaque noeud du fichier /etc/cluster/cluster.conf. | ||
- | Sur chaque noeud, installer ricci | + | {{:conga.jpg?300|}} |
+ | |||
+ | 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. | ||
<code> | <code> | ||
- | yum install ricci | + | yum install ricci luci |
</code> | </code> | ||
- | Sur un des noeuds, installer luci. Il n'est pas nécessaraire que le noeud où est installé luci soit dans le cluster. Le noeud où est installé luci doit aussi posséder ricci. | + | Lancer ricci |
<code> | <code> | ||
- | yum install luci | + | service ricci start |
</code> | </code> | ||
Configurer luci pour le mot de passe du user admin | Configurer luci pour le mot de passe du user admin | ||
Ligne 58: | Ligne 182: | ||
{{:luci.png?|}} | {{:luci.png?|}} | ||
+ | |||
+ | Se connecter en admin avec le mot de passe créé précédement. | ||
==== Parefeu ==== | ==== Parefeu ==== | ||
- | Il faut pour Conga et la gestion du cluster en général ouvrir certains ports su parefeu. | + | Il faut pour Conga et la gestion du cluster en général ouvrir certains ports sur le parefeu. |
<code> | <code> | ||
iptables -I INPUT -p udp -m state --state NEW -m multiport --dports 5404,5405 -j ACCEPT | iptables -I INPUT -p udp -m state --state NEW -m multiport --dports 5404,5405 -j ACCEPT |