===== 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 < /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. {{: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. 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 ) {{:luci.png?|}} 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 [[http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Cluster_Administration/s1-iptables_firewall-CA.html|Voir la page suivante pour l'attribution des ports.]]