Install Cluster rhel5
| Fiche express | |
|---|---|
| Type | Procédure d'installation cluster RHEL5 |
| Composants | Luci, Ricci, cman, rgmanager, GFS2 |
| Voir aussi | CMANv2 · CMANv3 |
Procédure d'installation d'un Red Hat Cluster Suite sur RHEL 5 (voir CMANv2 pour la présentation générale de l'architecture CMAN/rgmanager/fenced/GFS2). Exemple complet allant du prérequis réseau jusqu'à un service haute disponibilité applicatif (base Oracle).
Prérequis
- Déclarer l'ensemble des nœuds dans
/etc/hostsde chaque nœud, en y plaçant
une IP virtuelle (VIP) de cluster.
- Créer de préférence un bond sur les cartes réseau de chaque nœud — un cluster
perd le quorum si un nœud devient injoignable, un simple lien réseau redondant évite qu'une panne de câble ne déclenche un fencing inutile.
Installation des paquets
yum -y groupinstall Clustering
yum -y groupinstall "Cluster Storage"
- Luci : démon serveur web d'administration du cluster.
- Ricci : agent local qui reçoit et exécute les ordres envoyés par Luci sur chaque nœud.
Configuration de Luci
luci_admin init
chkconfig luci on
service luci start
SELinux doit être désactivé pour cette procédure sous RHEL 5.4 (limitation connue de cette version — à réévaluer si la cible est une version ultérieure, SELinux permissif/enforcing avec les bons contextes peut suffire) :
system-config-securitylevel
CMAN gère les services du cluster (GFS2 ou CLVM) :
chkconfig ricci on
chkconfig gfs2 on
chkconfig cman on
service ricci start
Création du cluster
Luci est accessible à l'adresse https://hostname:8084.
Dans l'onglet Cluster, créer un nouveau cluster. En l'absence de ricci
démarré sur le nœud cible, l'empreinte de clé (key ID) affiche
no key fingerprint available — démarrer ricci avant de retenter.
Journalisation dédiée
Rediriger les logs du cluster vers un fichier dédié plutôt que de les laisser noyés dans
/var/log/messages :
# /etc/syslog.conf
local4.* /var/log/rgmanager
Ajouter la rotation correspondante (dans la liste existante) :
vi /etc/logrotate.d/syslog
Puis référencer cette facility dans la configuration du cluster :
# /etc/cluster/cluster.conf
<rm log_facility="local4" log_level="5">
Propager le changement à l'ensemble des nœuds :
ccs_tool update /etc/cluster/cluster.conf
Ajout du fencing
Sur un environnement virtualisé (VMware), le fencing passe par l'agent fence_vmware,
qui pilote l'API vSphere :
yum -y install openssl-devel perl-URI
tar -zxf VMware-vSphere-SDK-for-Perl-*.tar.gz
cd vmware-vsphere-cli-distrib
./vmware-install.pl
Cette installation fournit la commande /sbin/fence_vmware.
Avant d'activer le fencing, désactiver ACPI sur tous les nœuds (sans quoi une demande d'arrêt forcé peut être retardée ou ignorée par l'OS invité) :
service acpid stop
chkconfig --del acpid
Dans Luci, ajouter un fence device à chaque nœud du cluster. Pour des VM, préciser le
chemin de l'objet dans l'inventaire vSphere (/vmfs/volumes/...).
Disque quorum
Le disque quorum est un support partagé sur lequel chaque nœud publie son état, vu par tous les autres — voir aussi la section quorum de CMANv3 pour le détail des heuristiques.
Sur une partition visible de l'ensemble des nœuds :
fdisk /dev/sdb # créer /dev/sdb1
mkqdisk -c /dev/sdb1 -l cluster_name
partprobe # sur les autres nœuds, pour prendre en compte la partition
mkqdisk -L # vérifier que le label est vu par l'ensemble des nœuds
service qdiskd start # sur tous les nœuds
chkconfig qdiskd on
Heuristiques
Clauses et règles utilisées pour exclure un nœud du quorum. Exemple : un script qui vérifie qu'un lien réseau est bien détecté.
# /usr/share/cluster/check_eth_link.sh
#!/bin/sh
# Network link status checker
ethtool $1 | grep -q "Link detected.*yes"
exit $?
chmod +x /usr/share/cluster/check_eth_link.sh
Dans Luci, onglet Quorum Partition du cluster créé plus haut :
Interval: 2, Votes: 1, TKO: 5,
Minimum Score: 1, Label: nom_du_cluster,
Path to program: /usr/share/cluster/check_eth_link.sh / interval: 2 /
score: 1.
Création d'un volume GFS
CLVM ou OCFS peuvent être utilisés comme alternative pour le partage de stockage ; cette section couvre GFS directement.
mkdir -p /gfsdata
mount -o acl -t gfs /dev/sdc1 /gfsdata
L'option -o acl active la prise en charge des ACL en écriture sur le volume.
Dans Luci, ajouter une ressource :
name: gfsdata, mountpoint: /gfsdata, device: /dev/sdc1,
filesystem type: GFS, options: acl, force unmount: yes.
Exemple d'intégration : base Oracle en HA
Installation des dépendances côté OS puis compte applicatif :
yum -y install compat-libstdc++-33 elfutils-libelf-devel gcc-c++ libaio-devel \
libstdc++-devel sysstat unixODBC unixODBC-devel pdksh
mkdir /appli/oracle
groupadd dba
groupadd oinstall
useradd -g dba -d /appli/oracle oracle
chown oracle:dba /appli/oracle
passwd oracle
Installer ensuite la base Oracle en plaçant les fichiers de données (dbf) sur le stockage
partagé (GFS/CLVM), créer un script /etc/init.d/oracle, puis le déclarer comme
ressource du cluster.
Mise en conformité du second nœud
scp /appli/oracle/.profile /appli/oracle/startdb /appli/oracle/stopdb oracle@node2:/appli/oracle
scp /etc/init.d/oracle node2:/etc/init.d
scp /appli/oracle/11.2.0/dbs/* oracle@node2:/appli/oracle/11.2.0/dbs
scp /appli/oracle/11.2.0/network/admin/*.ora node2:/appli/oracle/11.2.0/network/admin
Mettre en place une synchronisation périodique du spfile du nœud actif vers le
nœud passif, pour garantir que la configuration reste alignée entre les deux.
Service Oracle dans le cluster (via Luci)
- Créer une ressource IP virtuelle.
- Créer le domaine de basculement associé.
- Créer le service :
Automatically start: yes,enable NFS lock: no,run exclusive: yes,failover-domain: (celui créé ci-dessus),Recovery policy: restart,number of failures: 0,length of time after which to forget a restart: 0.
- Ajouter les ressources nécessaires au service : un script d'arrêt/relance, un point de
stockage partagé, et une IP virtuelle active uniquement sur le nœud actif.
Vérification
clustat