Recherche


imprimer pdf
Filer + Cluster (plusieurs serveurs)

Préambule
Vous disposez d'un espace disque sécurisé (RAID) sur un serveur de stockage (filer). Vous partagez cet espace entre plusieurs serveurs dédiés (via NFS). OVH vous a attribué une nouvelle addresse IP (IP de répartition de charge, balanced IP). Finalement, OVH a configuré vos serveurs afin qu'ils accèdent à l'espace sécurisé et recoivent le trafic depuis l'IP de répartition de charge.

Comment votre serveur est modifié
Si vous souhaitez utiliser directement le service Cluster sans étudier son fonctionnement détaillé, vous pouvez passer à la section Premiers pas avec votre cluster.

1. Configuration de l'IP de répartition de charge
Pour que le serveur accepte les paquets depuis l'IP de répartition de charge, une interface réseau virtuelle est ajoutée en lo:0:
lo:0 Link encap:Local Loopback
inet addr:213.251.xxx.xxx Mask:255.255.255.255
UP LOOPBACK RUNNING MTU:16436 Metric:1

Le routage est également modifié au niveau du serveur (ajout de la table 201 dans iproute2).

2. Configuration d'un réseau privé pour accès au filer
L'accès au filer se fait via un réseau privé en 192.168.xxx.xxx. Chaque serveur a sa propre IP privée configurée en tant que eth0:0:
eth0:0 Link encap:Ethernet HWaddr 00:E0:4C:82:32:3F
inet addr:192.168.xxx.xxx Bcast:192.168.xxx.255 Mask:255.255.254.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:19 Base address:0xc000


3. Montage de la partition sécurisée
L'espace sécurisé est monté sur les serveurs via NFS en /home/ha. Le fichier /etc/fstab comporte une nouvelle ligne :
192.168.xxx.xxx:/vol0/Z-xxx-xxx /home/ha nfs rw 0 0


4. Installation de la sonde
Afin d'assurer le principe de 'haute disponibilité', le système de répartition de charge doit savoir retirer une machine du cluster
quand celle-ci devient indisponible. Pour cela, nous installons un démon sur chaque serveur (OCO) qui vérifie si le serveur est 'apte' à répondre aux requètes. Par défaut, OCO vérifie seulement si le port 80 répond aux requêtes HTTP. Vous pouvez facilement ajouter les scripts dont vous avez besoin pour effectuer des vérifications plus particulières (vérifier que PHP répond correctement, vérifier le FTP, etc.).

Fonctionnement de OCO
OCO est installé dans /usr/local/oco, le démon est lancé automatiquement au démarrage du serveur par /etc/init.d/oco.
Les scripts de vérifications sont placés dans les répertoires
/usr/local/oco/60sec ou /usr/local/oco/120sec ou
/usr/local/oco/300sec.

Ils sont automatiquement exécutés en fonction de la fréquence correspondante au répertoire. Chaque script écrit un fichier dans le répertoire /usr/local/oco/result. Le contenu de ce fichier est un nombre :
  • 200 si tout va bien,
  • 300 ou plus, s'il y a un défaut.

Il faut au moins un fichier contenant 200 dans le répertoire /usr/local/oco/result pour que le serveur soit ajouté au cluster. Si un fichier ou plus contient 300 (ou supérieur à 300), alors le serveur est retiré du cluster. Si au moins un fichier a une date de modification supérieure à 15 minutes, alors le serveur est retiré du cluster.

Avertissement :
Si vous modifiez les scripts de vérifications fournis avec OCO, changez le nom des scripts car vos modifications seraient écrasées lors d'une mise à jour de OCO.

5. Flux réseaux à autoriser
Si votre serveur est doté d'un firewall, vous devrez autoriser les flux suivants sur votre serveur :
  • communications avec le répartiteur de charge (OCO) : vous devez autoriser les flux depuis xx.yy.zz.240 et xx.yy.zz.241 et xx.yy.zz.242 vers le port 79 de votre serveur (xx.yy.zz étant les 3 premiers octets de votre IP principale). Par exemple:
iptables -A INPUT -s 213.251.164.240 -i eth0 -p tcp -m tcp --dport 79 -j ACCEPT
iptables -A INPUT -s 213.251.164.241 -i eth0 -p tcp -m tcp --dport 79 -j ACCEPT
iptables -A INPUT -s 213.251.164.242 -i eth0 -p tcp -m tcp --dport 79 -j ACCEPT


  • communications avec le filer : vous devez autoriser le traffic NFS entre votre serveur et le filer (vous trouverez l'IP du filer dans le fichier /etc/fstab, elle est du type 192.168.1.1). Par exemple :
iptables -A INPUT -s 192.168.59.2 -i eth0 -j ACCEPT



Premiers pas avec votre cluster
La première chose que vous souhaiterez faire avec votre cluster est très certainnement la répartition des requêtes HTTP.

1. Utilisation du filer
Pour que la répartition de charge fonctionne le mieux possible, vous devez avoir les même pages et les mêmes scripts sur
tous les serveurs. Pour cela, le mieux est d'utiliser l'espace de stockage distant qui a été monté dans /home/ha.
Copiez vos sites dans /home/ha/xxxxx ; ils seront alors visibles depuis chaque serveur. Si vous utilisez des CGI en suexec ou suphp, vous devez veiller que les users et les uid sont identiques sur chaque serveur (et éventuellement modifier /etc/passwd).
Enfin, il faut modifier le fichier de configuration apache httpd.conf afin d'indiquer les bons chemins d'accès (/home/ha/yyyy) dans les 'DocumentRoot'.

2. Répartition des requêtes HTTP
Prenons par exemple, un serveur dédié dont l'IP est 213.186.33.2 et l'IP de load-balancing attribuée est 213.251.131.8.
Il faut modifier le fichier de configuration apache httpd.conf :
  • ajouter 'NameVirtualHost' 213.251.131.8 en dessous de la ligne 'NameVirtualHost' 213.186.33.2,
  • modifier les 'VirtualHost' de telle manière qu'Apache réponde aux requêtes destinées à toutes les IP du serveur ; pour ce faire, remplacer <'VirtualHost' 213.186.33.2> par <'VirtualHost' 213.186.33.2 213.251.131.8>,
  • enfin, utiliser l'IP de load-balancing à la place de l'IP du serveur dans la configuration DNS de vos domaines ; par exemple :
www.mondomaine.com A 213.186.33.2
devient
www.mondomaine.com A 213.251.131.8


3. Tester la répartition de charge avant de modifier les entrées DNS et/ou pendant la propagation
Sur votre poste CLIENT (navigateur web), vous pouvez temporairement fixer la résolution d'un domaine vers l'IP de load-balancing :
  • si vous êtes sous Linux, ajoutez la ligne suivante au fichier /etc/hosts:
213.251.131.8 www.mondomaine.com

  • sous windows, éditez le fichier correspondant à votre version :
Windows 95/98/Me : c:windowshosts
Windows NT/2000/XP Pro : c:winntsystem32driversetchosts
Windows XP Home : c:windowssystem32driversetchosts
et ajoutez la ligne :
213.251.131.8 www.mondomaine.com


Limitations
Il est techniquement possible de répartir les paquets destinés à tous les ports (HTTP:80, SMTP:25, STREAMING, etc). Toutefois, il est impossible d'utiliser cette solution pour MySQL (et certainnement une majorité des logiciels de bases de données). Cette limite est intrinsèque aux logiciels de bases de données ; il est nécessaire d'utiliser les solutions proposées par les concepteurs des logiciels.