Varnish & Failover, exemple de VCL de répartition de charge intelligente ...

Le 14 janvier 2010 , par Benjamin Sonntag,

à Octopuce, on aime les bons outils libres, puissants, fiables, et ingénieux.

Varnish, le logiciel de serveur mandataire (proxy) pour gros sites web, fait partie de ces outils.

Récemment, nous avons du, pour un client disposant de 4 serveurs web et d’un frontal sous Varnish, faire passer certaines pages sur un serveur web en particulier.

Jusque là, rien de bien compliqué. Nous avions défini nos serveurs web sous forme de backends dans la configuration de Varnish, et définit un répartiteur de charge, qui prenait les pages à servir :


backend web5 {
 .host = "10.0.58.20";  .port = "80";
 .probe = {
    .request =
      "GET / HTTP/1.1"
      "Host: www.monsite.fr"
      "Connection: close";
   .timeout = 6s;  .interval = 20s;   .window = 8;  .threshold = 3;
 }
}
...
puis
director lb random {
 .retries = 5;
   { .backend  = web5;   .weight = 7;    }
   { .backend  = web4;   .weight = 7;    }
   { .backend  = web3;   .weight = 7;    }
...
}

Ensuite, dans vcl_recv, nous signifions que le backend par défaut était le load-balancer nommé "lb", et nous pouvions donner les cas particuliers, qui passeraient par exemple par le serveur web5 :


sub vcl_recv {
...
 set req.backend=lb;
 if (req.request == "GET" && req.url ~ "^\/files\/") {
   set req.backend = web5;
 }

Failover avec Varnish, howto ...

Seul problème : si web5 plante, nous nous retrouvons à ne plus pouvoir servir les urls commençant par /files/. Dans ce cas, il faut trouver une solution.

Comme nous n’aimons pas les SPOF (Single Point Of Failure, les endroits critiques dans les infrastructures web) nous avons, sur web4, une copie des données du /files/ de web5. Aussi, en cas de panne de web5, il faudrait passer en mode de secours sur web4.

Ce mode dit "de secours" (ou failover en anglais) peut être obtenu assez facilement avec Varnish grâce à sa directive restarts comme suit :


sub vcl_recv {
...
if (req.request == "GET" && req.url ~ "^\/files\/") {
   set req.backend = web5;
   if (req.restarts == 1 || !req.backend.healthy) {
     set req.backend = web4;
   }
 }
}


sub vcl_fetch {
 # Si un serveur est HS, on reessaye sur un autre backend :
 if (obj.status != 200 && obj.status != 403 && obj.status != 404 &&
     obj.status != 302 && obj.status != 304
 ) {
    restart;
 }
}

Rechargement de configuration de Varnish à chaud

et voilà. Il ne reste plus qu’à recharger la configuration de Varnish (à chaud s’il vous plait !) et à la mettre en production :


varnishadm -T 127.0.0.1:6082 vcl.load prod20100114_2 /etc/varnish/default.vcl
varnishadm -T 127.0.0.1:6082 vcl.use prod20100114_2

 

 

Sur l'OctoBlog

Logiciels Libres ?

Acteurs du Libre les membres de l’équipe Octopuce participent à divers projets, soit au nom de l’entreprise soit en leur nom propre, sur le temps offert à l’équipe pour conduire des projets personnels.

Nous avons contribué, dès ses débuts, à la conception et mise en oeuvre de la plateforme AlternC, panneau de contrôle web sur une bases 100% libre. Cette plateforme nous la proposons pour votre hébergement mutualisé ou dédié. De la même manière est né Dmanager, logiciel de partage de fichiers via internet.

C’est ainsi que pour vos projets Octopuce privilégie le choix de solutions et logiciels libres quand ceux-ci répondent à vos besoins. L’ensemble des développements réalisés pour vous sous licence libre sont mis à la disposition de tous.

Une référence ?

Axance est une société spécialisée dans l’ergonomie et l’accessibilité des sites web. Cette agence web fait partie de ceux qui, nous ayant fait confiance de longue date, ont pu profiter de notre expertise technique destinée aux agences.

Bakchich.info est un journal satirique en ligne. Pertinence et impertinence sont les letimotivs permanents de ce jeune site d’information que nous hébergeons sur nos serveurs.