WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:divers:ha

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
wiki:divers:ha [2014/02/17 22:10]
benwa
wiki:divers:ha [2015/08/28 11:54] (Version actuelle)
Ligne 1: Ligne 1:
 +====== Exemple d'​infra web complexe ======
  
 +<WRAP info round>
 +=== Nota ===
 +Cette série d'​articles est en cours de rédaction. J'​espère vraiment pouvoir donner un exemple de réalisation des points mentionnés ci dessous.
 +
 + --- //​[[benwa@minet.net|Benoit Tellier]] 2014/01/25 16:06//
 +</​WRAP>​
 +
 +Le but de cette série d'​articles est, à travers un scénario, de pouvoir se familiariser avec quelques technologies ( différentes de celles d'​OpenStack ) permettant de répondre au contraintes de **scalabilité** et de **High Availability**. Ce scénario consiste en une appli web avec des millions de requêtes, ce qui demande des performances énormes, ainsi qu'une disponibilité exemplaire.
 +
 +Il nous faut donc décomposer au maximum les différentes composantes de notre site web, afin de pouvoir optimiser chacune d'​elles. En plus de ça il nous faudra redonder chacun des services...
 +
 +Le but de cette série d'​articles sera d'​expliquer et de mettre en place chacun des points de cette infrastructure WEB un peu hors norme ((Rêvons un peu !)):
 +
 +{{:​wiki:​divers:​archi_web_redondee.png?​900|}}
 +
 +Hésitez pas à cliquer sur l'​image pour l'​agrandir,​ sinon on voit pas des masses.
 +
 +Note : on peut faire du DNS Roud Robin si on a envie de load balancer le premier load balancer... A partir d'un certain débit, on est obligé d'en avoir plusieurs, et je vois pas comment faire autrement. Pour des raisons pratiques, les autres load-balanceurs n'​apparaissent pas sur le schéma((Bouhhh!!))...
 +
 +Note : j'ai délibérément choisit d'​utiliser des technologies "old school"​. Je sais que tout serais plus simple avec OpenStack. Mais la question qui a amené cette série d'​articles était "​J'​aimerais avoir une idée de comment faire ce type d'​architecture simplement, sans utiliser les possibilités de Neutron"​.
 +
 +===== Redondance réseau =====
 +
 +La redondance des routeurs est pensée en [[wiki:​divers:​HA:​HSPR|HSRP]] qui est un protocole de chez cisco. En gros les deux routeurs en regard se partagent une adresse ip virtuelle et en cas de panne d'un d'​entre eux, l'​autre prend le relais.
 +
 +La [[wiki:​divers:​HA:​firewall|redondance du firewall]] est obtenue grâce à CARP. CARP est un autre protocole de partage d'ip virtuelle développé par BSD. **conntackd** permet de synchroniser les conntracks des deux pare-feux.
 +
 +Les serveurs sont branchés en [[wiki:​reseau:​link_aggregation_serveur|link aggregation]] sur au moins deux switchs d'une stack (par exemple des 3750...). Voici par ailleurs pour le [[wiki:​reseau:​cisco:​linkagg|coté switch]].
 +
 +La synchronisation des données entre data-centers peut se faire par l'​intermédiaire de [[wiki:​divers:​HA:​vxlan|VXLAN]] (par exemple) que nous routerons séparément.
 +
 +===== Redondance des services =====
 +
 +Un premier point est d'​utiliser les vues DNS de [[wiki:​services:​dns|BIND]] pour faire que chaque client accède au data-center le plus proche((c'​est très classique cf : les discussions sur FRnog)).
 +
 +Je vais essayer de fournir un [[wiki:​divers:​HA:​CDN|CDN]] libre autre que celui d'​Openstack. C'est étrangement très dur à trouver sur Google. Toute aide / conseil sera le bienvenu.
 +
 +Concernant l'​architecture web :
 +
 +  * Les load balanceurs agissent en couche 4, et sont basés sur [[wiki:​divers:​HA:​haproxy|HAproxy]]. Pour les redonder, nous allons utiliser une ip virtuelle avec le protocole **VRRP**. [[wiki:​divers:​HA:​keepalived|Keepalived]] s'en chargera pour nous. Si un jour vous avez envie de redonder un truc pas en TCP, je vous propose d'​utiliser soit du [[http://​fr.wikipedia.org/​wiki/​DNS_round-robin|DNS Round Robin]] soit avec keepalived utilisé en mode load balancer. Le load balancing des loads balancers peut aussi être réalisé par DNS round robin.
 +
 +  * Les reverse proxys sont basés sur NGinx, ou bien sur [[wiki:​divers:​HA:​varnish|Varnish]].
 +
 +  * Une grille NoSQL peut être utilisée afin d'​accélérer les requêtes. Je vous redirige vers la page wiki sur [[wiki:​services:​elasticsearch|Elastic search]], réalisée par François Monniot.
 +
 +  * Enfin, niveau SQL, je propose de détailler un [[wiki:​divers:​HA:​cluster_SQL:​cluster de SQL]] avec MySQL Galera. Par ailleurs des noeuds de réplication peuvent être mis en place afin de permettre une étude des données sans perturber les clients.
 +
 +===== Contraintes de programmation =====
 +
 +Cette infrastructure a certes de quoi faire rêver, mais elle implique des contraintes en terme de programmation. [[wiki:​divers:​HA:​prog|Cette page]] a pour but de présenter celles auxquelles je pense.
 +
 +===== Les trolls pour la fin =====
 +
 +Car une série d'​artcles sans un seul troll est une mauvaise série d'​articles,​ je vais vous présenter une solution de load-balancing au niveau IP sur laquelle je suis tombé pendant mes recherches sur les autres topics... C'est osé comme concept, et dégueu... Il s'agit de [[wiki:​divers:​HA:​multipath_routing|multipath routing]].
 +
 +Et comme chacun le sait je suis un fou du stockage ;-) Et il semblerait bien que je ne sois pas arrivé mentalement sain à l'​issue de cette série d'​articles. Alors, comme il faut mélanger les plaisirs, je vais vous préparer un petit artcile sur comment faire du [[wiki:​divers:​HA:​nfs|failover sur des serveurs NFS]] ;-) c'est pas beau ça?
 +
 +Je vous propose une découverte de quelques [[wiki:​divers:​ha:​glusterfs|Systèmes de fichiers distribués]]. Nous parlerons par exemple de **CEPH**, de **GlusterFS**. C'est assurément plus "​propre"​ que les bricolages du chapitre du dessus quand il s'agit d'​obtenir du failover... Et c'est pensé pour être scalable. Que demande le peuple. ((Note : ça s'​applique peut être pas au bricolage réalisé à base de aufs...))
 +
 +===== Quelques liens =====
 +
 +  * Retour d'​expérience d'une entreprise aillant dû supporter 18 fois sa charge habituelle pendant une soirée. Ils avaient du temps pour anticiper. C'est par [[http://​www.alittlemag.com/​effet-capital-m6-comment-tenir-la-charge/​|ici]].
 +
 + --- //​[[benwa@minet.net|Benoit Tellier]] 2014/01/25 16:06//
wiki/divers/ha.txt · Dernière modification: 2015/08/28 11:54 (modification externe)