Niveau : Intermédiaire (nécessite une bonne connaissance des shells Unix, des partages NFS, des liens symboliques)

Les exemples (commandes shell par exemples) ne tiennent pas compte des permissions/propriétaires etc. Il faut donc évidemment comprendre et adapter les exemples proposés.

En aucun cas les exemples fournis ne peuvent fonctionner correctement avec un simple copier/coller.

SD-France.com peut vous assister ou s’occuper pour vous de l’optimisation de votre cluster en minimisant les accès NFS, pour cela contactez notre support clients.

Introduction

Lorsque vous avez un cluster de machines formé de plusieurs frontaux partageant des données avec un serveur NFS, la vitesse de lecture est, bien qu’acceptable, moins élevée que lors d’un accès direct au disque local.

Dans des clusters à fort trafic, l’utilisation intensive de ce partage NFS peut génerer plusieurs problèmes :

  • Une sorte de goulot d’étranglement va se former au niveau de l’échange NFS (charge et/ou bande passante), ce qui va provoquer un léger ralentissement.
  • En cas de défaut sur un lien entre un frontal et le serveur NFS, l’ensemble des fichiers partagés sont inaccessibles depuis ce frontal.
  • En cas de défaut sur le serveur NFS, l’ensemble des fichiers partagés sont inaccessibles depuis tous les frontaux.

Premier cas : Le partage obligatoire mais minimum

Introduction

L’idée est simplement de définir quels répertoires ont besoin d’avoir une synchronisation temps réel (NFS) et ceux qui nécessitent uniquement une synchronisation rapide, mais différée (RSYNC périodiques).

Imaginons qu’actuellement :

  • Votre partage NFS soit monté sur /home/nfs (sur chacun des frontaux)
  • Un des sites concernés a un DocumentRoot du type : /home/website/www (racine du vhost)
  • Le vhost héberge un forum positionné à la racine du vhost.
  • Et que vous souhaitez permettre l’upload d’images dans le répertoire /home/website/www/upload

On peut considérer que :

  • /home/website/www doit avoir une synchronisation rapide, mais différée (RSYNC périodiques)
  • /home/website/www/upload doit avoir une synchronisation temps réel (NFS)

Tout simplement, au lieu de mettre directement /home/website/www, on va :

  • Laisser /home/website/www en local
  • Mettre /home/website/www/upload sur le partage NFS

Sur chacun des frontaux (exemple) :

mkdir -p /home/website/www
mkdir -p /home/nfs/website/upload
ln -s /home/nfs/website/upload /home/website/www/upload

Sur le frontal maître :

On va mettre un script (rsync) qui synchronise périodiquement /home/website/www avec les autres frontaux (sauf /home/website/www/upload).

Résultat ?

  • Les fichiers que vous envoyez par FTP par exemple dans /home/website/www seront synchronisés périodiquement depuis le frontal maître vers le frontal esclave périodiquement
  • Les fichiers uploadés ou générés dynamiquement depuis ou par n’importe lequel des frontaux dans /home/website/www/upload seront en temps réel accessibles depuis les frontaux.
  • Vous allégez grandement les échanges NFS
  • L’accès aux fichiers locaux sera bien plus rapide.