Si NFS est un vraiment problème et que le site est cacheable, le mieux IMHO est de rajouter un reverse-proxy devant nginx (ex varnish).

Varnish est génial, parce qu'il est programmable : on peut définir ses propres règles de gestion pour adapter le fonctionnement du cache en fonction de son applicatif (en contrepartie, on peut aussi bien se vautrer et faire baver les sessions utilisateurs d'un utilisateur sur l'autre).

Au niveau de varnish :
=> backend nginx avec un healthcheck HTTP (https://www.varnish-cache.org/trac/wiki/LoadBalancing)
=> utiliser la fonction "grace" de varnish pour prolonger le TTL du cache en cas de problème de backend (https://www.varnish-cache.org/trac/wiki/VCLExampleGrace)

varnish sera capable de servir les objets en cache (y compris, avec certaines limitations, les objets expirés récemment) lorsque nginx sera en vrac.

Si le site réagit différemment en fonction de l'utilisateur (ex: pour une même url, non connecté/pas de cookie => page statique, utilisateur connecté/cookie présent => page dynamique/personnalisé), il est tout à fait possible de demander à varnish de basculer les utilisateurs connectés sur la version statique en cas de panne de backend.

en pseudo code :

if (cookie absent || backend hs) {
if (backend hs) {
prolonge la durée de vie du cache
}
vérifie le cache et sinon, accède au backend
} else {
pas de cache, accède au backend
}

On peut aussi définir plusieurs backend (backend1/primaire : version normale, backend2/version dégradée) et demander à varnish de basculer de l'un à l'autre :

if (backend1 ok) {
utiliser backend1
} else if (backend2 ok) {
utiliser backend2
} else {
servir une HTTP/500 personnalisée
}

Bon, je dérive de l'admin sys vers des problématiques plus devops voire dev...

JFB

Le 31 mai 2012 à 09:35, Gregory Duchatelet a écrit :

Bonjour Sébastien,

Le 30/05/2012 21:06, Sébastien FOUTREL a écrit :
Merci pour ta réponse qui m'a permis de comprendre un peu plus ta problematique.
Et le temps de bascule "juste long" c'est combien de temps pour qu'on
ait une echelle de valeur commune ?

Le plus court, c'est quand le serveur NFS tombe, mais pas le SAN.
Heartbeat : ~10s
Stale NFS handle : ~90s
Restart des serveurs Apache et NGiNX dont le load est monté en flèche : non géré (souvent, il faut les rebooter complètement)

En cas de plantage et bascule du SAN, ça se compte en heure, j'ai pas encore eu les corones de me projeter :)

Alors qu'avec un simple cache disque local, je pourrais gérer la situation bien plus sereinement !

--
Greg

_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/