[Summer Camp] Etape 5 : Mise en cache avec Varnish

19 October 2011 | par | tuto, unix

Oct
19

varnish

On a une infra haute dispo, mais pas encore vraiment haute perf. Pour y passer, on va utiliser Varnish qui mettra en cache les pages de notre site ! Ce n’était pas prévu au planning initial que j’ai posé une nuit très tard… Mais c’est un MUST !

Varnish sera situé entre le load balancer et les frontaux (qu’il load balancera). Sont fonctionnement est simple :

  1. Je reçois une requête pour la page X
  2. L’ai-je dans mon cache ?
  3. Si oui je fournis == je soulage un frontal et les bases de X requêtes
  4. Si non je récupère et je la cache si possible (on ne peut pas cacher les pages d’utilisateur logé par exemple)

Il est cependant vrai qu’en environnement de production, on mettra les caches devant les load balancer afin d’éviter de charger les load balancer pour rien. Leur load balancing se fera alors en Round-Robin DNS.

Vous allez voir, c’est simple et efficace ! Je vais montrer pour une des deux VM, la deuxième sera une copie conforme.

Lire la suite

1 Commentaire »

[Summer Camp] Etape 4 – Load balancing HAPROXY et stunnel

18 October 2011 | par | tuto, unix

Oct
18

haproxy

On continu d’avancer et on touche presque à la fin. A la fin de ce tuto, on aura une plateforme web fonctionnelle. Aujourd’hui nous allons mettre en place le load balancer HAPROXY qui aura pour objectif de répartir la charge entre les deux frontaux web installés mais aussi stunnel qui s’occupera de gérer la couche SSL (HAPROXY en étant dépourvu). Cette machine portera l’IP publique de notre site.

Le flux passera donc par HAProxy pour les connexions HTTP qui répartira la charge sur les frontaux web. Dans le cas du HTTPS, stunnel reçoit la connexion, la forward à HAProxy qui la forward au frontaux web.

J’entend d’ici : mais c’est un SPOF ! On se calme, l’étape 5 va nous permettre de clusteriser cette brique (et le MySQLProxy aussi ;) ) .

Sans plus attendre, on attaque !

Lire la suite

1 Commentaire »

[Summer Camp] Etape 3.2 – MySQLProxy : Split Read/Write

8 October 2011 | par | tuto, unix

Oct
08

Mysql-proxy

Poursuivons le Summer Camp qui devient plus au Autumn Camp… Après la mise en réplication de nos bases de données, on va mettre en place le slipt Read/Write sur nos bases. La base maitre servira pour l’écriture de données et la base slave pour la lecture. Il est à noter que l’on peut ajouter autant e slave que l’on veut. Il suffit de rajouter quelque ligne à la configuration de MySQLProxy. On attaque donc la dernière brique MySQL de la série !

Lire la suite

2 Commentaires »

[Summer Camp] Etape 3.1 – MySQL Réplication

8 October 2011 | par | tuto, unix

Oct
08

mysql-repl

C’est plus trop l’été mais bon… On va le faire perdurer ici ! On a donc les frontaux… sur lesquels on a monté les partages de fichiers statiques. Mon PHP est bien fonctionnel… mais j’ai pas encore de bases pour stocker ma donnée.

Contrairement à ce que j’ai annoncé, nous n’allons pas utiliser un MySQL Cluster. Ce choix est justifié par la spécificité de MySQL Cluster qui demande un développement spécifique. En effet, le moteur de base est différent et n’est que très rarement supporté par des CMS ou même des développement spécifique. à la place, je vous propose de faire un Split Read/Write via MySQL Proxy. Il s’agit donc de répartir la lecture sur plusieurs bases (répliqués entre elles) mais de faire les insertions que sur une seule. Typiquement on écrit sur un serveur et on lit sur l’autre.

On attaque donc cette partie qui nous amènera un peu plus près de la fin du projet. Aujourd’hui on va faire de la réplication MySQL.

Lire la suite

2 Commentaires »

[Summer Camp] Etape 2 – Serveur de Fichiers NFS + ZFS

19 August 2011 | par | tuto, unix

Aug
19

static

Dans le post précédent du Summer Camp, nous avons vu comment monter les frontaux web. Aujourd’hui, nous allons voir comment mettre en place le serveur de fichier. Mais avant de commencer, pourquoi mettons nous en place des serveurs de fichiers ? Pourquoi le frontal ne porte-t-il pas la donnée directement.

La réponse est simple : un frontal est une machine “jetable”. Elle a pour but d’être déployée rapidement et simplement. Si un frontal porte 250Go de données, il sera lent à répliquer et gourmand en espace disque. Sans compter les problèmes de réplications de données entre les frontaux. Pour répondre à tout cela, nous allons mettre en place un serveur de fichier avec un partage réseau NFS qui sera monté sur les frontaux. Le système de fichier utilisé sera ZFS sous FreeBSD. En effet il offre des possibilités de réplication et de sauvegarde très interessantes, mais là n’est pas l’objet du billet, nous y reviendrons.
Lire la suite

5 Commentaires »

[Summer Camp] Étape 1 – Frontaux Web (Nginx + PHP5)

7 August 2011 | par | tuto, unix

Aug
07

Frontaux

C’est partie ! On commence le summer camp de façon technique avec la mise en place de la première brique de notre Infra Web Haute Dispo (http://madeinsyria.fr/2011/08/summer-camp-infra-web-haute-disponibilite/), les frontaux Web. Ils porteront principalement : Nginx et PHP5.

Pour rappel, j’ai choisis Nginx pour sa capacité à tenir, avec les même resources, une charge en moyenne dix fois superieur à celle d’un Apache2. De plus, il s’agit d’un serveur web qui gagne énormément en popularité, maitriser sa mise en place ne peut être qu’un plus !

Lire la suite

7 Commentaires »

[Summer Camp] Infra Web Haute Disponibilité

1 August 2011 | par | tuto, unix

Aug
01

summer

Bonsoir à tous !

Pour occuper votre temps cet été (on sait tous que c’est plus calme en juillet/août), je vous propose de monter ensemble et en plusieurs étapes une palteforme Web Haute Disponibilité basée uniquement sur des technologies OpenSource. HAPROXY, Nginx, MySQL, NFS, Puppet, tout y passera. Faites chauffer les VM, faites chauffer le café, on va y aller !

Aujourd’hui je ne ferai que vous presenter cette infra, les choix techniques, et les differentes étapes de mise en place.

Lire la suite

8 Commentaires »

HowTo Puppet : Administration et industrialisation de masse

1 June 2011 | par | tuto, unix

Jun
01

puppet

Il y a quelques semaines,  j’ai étais confronté à une problématique assez basique et pourtant ignoré jusque là. On m’a demandé d’exécuter un script sur quelque 300 machines *nix et de parser deux fichiers HTML générés. Jusqu’ici, c’est un travail d’admin système de base. Or voilà, moi, j’ai 300 machines réparties sur des réseaux qui sont HERMETIQUEMENT fermés de ma station d’administration. Il a donc fallu scripter une partie et traiter l’autre manuellement en urgence.

 

Tout cela m’a fait me pencher sur des solutions de gestion de configurations et d’administration de masse. Parmi toutes ces solutions, j’ai retenu celles proposées par PuppetLabs (http ://www.puppetlabs.com/). La suite de trois outils est infaillible :

  1. Puppet permettant la gestion centralisée des services et configurations
  2. MCollective qui permet l’administration et l’exécution de commandes centralisé
  3. Facter qui permet de dresser une véritable fiche d’identité du server

 

Aujourd’hui je vous propose une petite initiation à Puppet et quelques tips qui vous feront gagner du temps.

Lire la suite

4 Commentaires »

Intégration Failover Cluster Linux : DRBD + Pacemaker avec LAMP

14 May 2011 | par | tuto, unix

May
14

neverbackdown

L’objectif de ce billet est d’expliquer la mise en place d’une plateforme LAMP en mode failover cluster, permettant de basculer dynamiquement entre deux machines réparties sur deux datacenter.

La solution que je propose s’appuie principalement sur deux technologies :

  • DRBD, un module du kernel Linux (en natif depuis la version 2.6.33) capable de synchroniser un disque, bloque à bloque, à travers le réseau de façon synchrone ou non. C’est en fait le ZFS du monde Linux.
  • Pacemaker, un outil de failover cluster, capable de monitorer une machine et de prendre les mesures nécessaires en cas de problème (bascule d’IP, démarrage de services, etc.).

Lire la suite

Pas de commentaires »

[Tuto]Le Name VirtualHosting avec Apache 2

1 September 2009 | par | tuto, unix

Sep
01

Suite à la requête de mon ami Glabenwitt, j’ai décidé de finir ce tuto que j’avais commencé et mis de coté depuis déjà plusieurs mois. Et pourtant il n’est pas long, en fait c’est juste un baobab qui me pousse au milieu de la main. Tout est dans le titre en fait, aujourd’hui je vais vous expliquer comment créer des Name VirtualHost.

Name VitualHost, c’est quoi ?

Comme toujours avant de commencer, il faut définir le terme principale ! Le Name VirtualHosting, est l’un des trois types de VirtualHosting et de loin le plus utilisé. Il permet, comme son nom l’indique, d’héberger sur une même adresse IP plusieurs applications web en se servant de différents nom de domaines. Chaque application web disposera de son propre dossier.
Lire la suite

Pas de commentaires »