REDUCTION DE L'INHOMOGENEITE MEMOIRE 2016 MEKONTCHOU MERLIN
Haute Disponibilité et Tolérance de Panne
1. Haute disponibilité
Haute disponibilité et Tolérance de
Panne
Date 13 Octobre 2009
Groupe 14
Auteur(s) BOUKHOBZA Elior
Responsable Mr. Alain Stephan
Promo TCOM 2010
3. Haute disponibilité
Introduction
What is the High Availability?
o A Highly Available material is a material
providing full-time availability even when
failures occurs.
What is the Fault Tolerance?
o The Fault Tolerance is the capacity of a material
to ensure the data availability in case of a failure
occurs. It provides full-time checking and
redundancy devices to perform high availability.
23/07/2015 3Groupe 14: Boukhobza Elior
4. Haute disponibilité
Introduction
Why high availability?
o In a company, the information system requires to be
fully available 100% (or most) of the time.
o If a failure occurs in the system (device crash,
human error…), or in the building (fire, flooding…),
or even in the region (earthquake, war…), the IS
needs to be available and functional otherwise it
would be fatal for the company.
o That’s why having a material fully available is vital
for a company to ensure its business without fear of
failures or disasters in the IS.
23/07/2015 4Groupe 14: Boukhobza Elior
7. Haute disponibilité
Définitions
Critères DICP
Critères DICP-R
o On classifie la sécurité d’un système grâce aux « Critères DICP »,
c’est-à-dire:
o D: Disponibilité
C’est-à-dire que le système doit pouvoir être disponible à toute heure.
o I: Intégrité
C’est la capacité au système d’assurer que les informations sont exactes.
o C: Confidentialité
C’est la capacité au système d’assurer que les données ne peuvent être accédées
que par les personnes ayant accès.
o P: Preuve
La preuve concerne la non répudiation, c’est-à-dire l’impossibilité de nier avoir
effectué telle ou telle action.
o On parle aussi de DICP-R, R pour règlementation. Ce sont les règles
que le système doit respecter.
23/07/2015 Groupe 14: Boukhobza Elior 7
8. Haute disponibilité
Définitions
Indicateurs de disponibilité (1/3)
MTTF, MTBF, MTTR, MUT, MDT
o MTTF: Mean Time To Failure (Temps Moyen Avant Panne)
C’est le temps moyen avant l’apparition d’une panne d’un
composant du système. On souhaite que cet indicateur soit le plus
grand possible.
o MTBF: Mean Time Between Failures (Temps Moyen Inter-
pannes)
C’est le temps moyen entre deux pannes survenant sur un
composant du système. Plus cet indicateur est grand, plus le
système est considéré comme fiable.
o MTTR: Mean Time To Repair (Temps Moyen de Réparation)
C’est le temps moyen nécessaire à la réparation d’un composant
survenu lors d’une panne. A l’inverse, on souhaite que cet
indicateur soit le plus petit possible.
o MTBF = MTTF + MTTR.
23/07/2015 Groupe 14: Boukhobza Elior 8
9. Haute disponibilité
Définitions
Indicateurs de disponibilité (2/3)
o MDT: Mean Down Time (Temps Moyen
d’indisponibilité)
C’est le temps moyen d’indisponibilité d’un
composant lors d’une panne quelconque.
o MUT: Mean Up Time (Temps Moyen de
disponibilité)
C’est le temps moyen de disponibilité du composant
après sa réparation avant qu’il ne retombe en panne.
o MTBF = MUT + MDT
o Disponibilité = MTTF / MTBF
23/07/2015 Groupe 14: Boukhobza Elior 9
10. Haute disponibilité
Définitions
Indicateurs de disponibilité (3/3)
Taux de disponibilité Durée d’indisponibilité sur un an
97% 11 jours
98% 7 jours
99% 3 jours et 15 heures
99,9% 8 heures et 48 minutes
99,99% 53 minutes
99,999% 5 minutes
99,9999% 32 secondes
23/07/2015 Groupe 14: Boukhobza Elior 10
Source: Wikipedia
11. Haute disponibilité
Définitions
Classification en Tier (1/3)
Classification en Tier:
o Une autre définition de la disponibilité est la
classification en Tier, créé par l’Uptime Institute.
o Permet de classifier les datacenter selon un
niveau de disponibilité entre 99% et 100%.
o Plus le matériel a un niveau de Tier élevé, plus il
est coûteux, mais aura un meilleur taux de
disponibilité.
23/07/2015 Groupe 14: Boukhobza Elior 11
12. Haute disponibilité
Définitions
Classification en Tier (2/3)
•1 alimentation électrique/refroidissement
•Pas de redondance des composants
•Taux de disponibilité de 99,671%
Tier I:
•1 alimentation électrique/refroidissement
•Redondance des composants
•Taux de disponibilité de 99,741%
Tier II:
•Redondance électrique/refroidissement mais 1 seul actif
•Redondance des composants
•Taux de disponibilité de 99,982%
Tier III:
•Redondance électrique/refroidissement, tous actifs
•Redondance des composants
•Taux de disponibilité de 99,995%
Tier IV:
23/07/2015 Groupe 14: Boukhobza Elior 12
16. Haute disponibilité
Clustering
Définition (1/2)
Cluster = Grappe de serveurs ou Ferme de serveurs.
Le principe d’un cluster est de regrouper plusieurs
serveurs indépendants appelés nœuds en un seul
et même serveur, de façon transparente pour le
client.
Ainsi, si l’un des nœuds du cluster tombe, le service
continue, assurant ainsi la disponibilité des
services.
Les nœuds n’ont pas besoin d’être proches
physiquement. Il suffit qu’ils soient interconnectés
entre eux par un ou plusieurs réseaux (LAN,
WAN…) pour en faire un cluster.
23/07/2015 Groupe 14: Boukhobza Elior 16
18. Haute disponibilité
Clustering
Fonctionnalités
Les fonctionnalités que doit offrir un cluster sont:
o Basculement de service: Lors d’une panne, le service est
transféré sur un nœud fonctionnel: Fail Over Service.
o Détection de pannes: Guetter les pannes pour basculer
le service sans interruption.
Elles sont en général couplées à d’autres
fonctionnalités pour assurer la disponibilité:
o Distribution de charge
o Réplication des données
o Intégrité des données…
23/07/2015 Groupe 14: Boukhobza Elior 18
19. Haute disponibilité
Clustering
Types de clusters
On distingue plusieurs types de clusters, selon les
fonctionnalités:
o Clusters de haute disponibilité
o Clusters de calcul
o Clusters d’équilibrage de charge
o Clusters d’applications…
Différentes configurations selon le type de services:
o Actif/Actif
o Actif/Passif
o N+1
o N+M
o N to 1
o N to N
23/07/2015 Groupe 14: Boukhobza Elior 19
20. Haute disponibilité
Clustering
Architectures en cluster (1/5)
Configuration « Actif/Passif »:
o Cluster de deux nœuds.
o Le nœud principal (ou nœud maître) exécutant les services.
o Le nœud secondaire (ou nœud esclave), de secours.
o Un ou plusieurs liens dédiés entre les deux nœuds pour le
basculement de service.
Adressage IP:
o Chaque nœud a sa propre adresse IP réelle.
o Au cluster est associée une adresse IP virtuelle (ou alias IP),
qui va pointer sur le nœud actif (NAT).
o Si le nœud actif tombe, l’alias IP pointe sur le nœud de
secours.
23/07/2015 Groupe 14: Boukhobza Elior 20
22. Haute disponibilité
Clustering
Architectures en cluster (3/5)
Principe:
o Le client entre l’@IP virtuelle 192.168.X.254
o Cette adresse pointe vers le nœud principal A.
o Le nœud A tombe, B détecte que A est tombé.
o Grâce au lien dédié, le service bascule vers B.
o L’adresse IP virtuelle pointe alors sur B.
o Lorsque A est réparé, le service bascule vers A et l’@IP virtuelle
pointe vers A.
o Le client ne détecte aucun changement.
23/07/2015 Groupe 14: Boukhobza Elior 22
23. Haute disponibilité
Clustering
Architectures en cluster (4/5)
Configuration Actif/Actif:
o Les deux nœuds sont actifs et se répartissent la charge.
o Si l’un des nœuds tombe, le service est basculé sur le nœud restant.
o Lorsque le nœud défaillant fonctionne, la charge est à nouveau
répartie entre les deux nœuds.
Configuration N+1:
o Architectures de N nœuds, et un nœud de secours.
o Si l’un des nœuds tombe, le service est basculé sur le nœud de
secours.
o Lorsque le nœud est rétabli, il devient le nœud de secours.
o SPOF si plusieurs nœuds tombent en même temps.
Configuration N+M:
o N nœuds actifs et M nœuds de secours.
o Le nombre de nœuds de secours dépend du degré de disponibilité
requis pour assurer le service.
23/07/2015 Groupe 14: Boukhobza Elior 23
24. Haute disponibilité
Clustering
Architectures en cluster (5/5)
Configuration N to 1:
o A la différence du N+1, lorsque le nœud défaillant
est rétabli, le service bascule vers ce nœud.
o Deux basculements de service.
Configuration N to N:
o Pas de nœuds de secours.
o Si un des nœuds tombe, la charge est redistribuée
sur les N-1 nœuds restants.
o Lorsque le nœud est rétabli, la charge est
redistribuée en conséquence.
o Nécessite des nœuds à plus grande capacité.
23/07/2015 Groupe 14: Boukhobza Elior 24
25. Haute disponibilité
Clustering
Détection de pannes
Détection de pannes :
o Requêtes Push:
Le nœud actif envoie des signaux au nœud passif à intervalles
réguliers.
Si le nœud passif ne reçoit pas de signaux au bout d’un certain
temps, il détermine qu’il y’a panne et active le basculement de
service.
o Requêtes Pull:
Le nœud passif envoie des signaux au nœud actif à intervalles
réguliers.
Si il ne reçoit pas de réponse, il continue d’émettre des signaux
car ca peut provenir d’un problème sur le lien.
Au bout d’un certain nombre de tentatives, il détermine qu’il y’a
panne et active le basculement de service.
o C’est communément appelé « Heartbeat ».
23/07/2015 Groupe 14: Boukhobza Elior 25
26. Haute disponibilité
Clustering
Outils (1/3)
Heartbeat: Outil de surveillance des systèmes.
Outil implémentant la surveillance et le basculement de services à
l’aide de scripts.
Caractéristiques:
o Les services (applications) sont démarrés avec Heartbeat sur le nœud actif.
o Il permet d’arrêter et de démarrer les services manuellement, dans ce cas
les services sont basculés sur le nœud de secours.
o Cet outil permet de détecter les pannes matérielles et réseau et d’exécuter
des scripts de basculement en cas de panne.
o Utilisé avec l’outil « Mon », on peut désormais faire de la surveillance
applicative.
o Heartbeat permet aussi le contrôle d’une application « STONITH » (« Shoot
The Other Node In The Head »), procédé qui consiste à désactiver le nœud
à distance en cas de problème.
Logiciel sous licence GPL, du projet « Linux-HA ».
23/07/2015 Groupe 14: Boukhobza Elior 26
27. Haute disponibilité
Clustering
Outils (2/3)
MON: Service Monitory Daemon
C’est un démon de supervision des services.
Il permet de détecter des défaillances applicatives et de les
arrêter/redémarrer manuellement.
Caractéristiques:
o Marche/arrêt de serveurs
o Marche/arrêt de services
o Consultation de l’état des services
o Surveillance des ressources
o Envoi de tests (traps) pour tester l’état d’un service/serveur.
Il est utilisé avec Heartbeat pour faire de la surveillance
applicative.
Sous licence GPL.
23/07/2015 Groupe 14: Boukhobza Elior 27
30. Haute disponibilité
Load Balancing
Plan
1. Définitions
2. Architectures de répartition de charge
3. Algorithmes de répartition de charge
4. Gestion des états de sessions
5. Outils
23/07/2015 Groupe 14: Boukhobza Elior 30
31. Haute disponibilité
Load Balancing
Définitions
Load Balancing : Equilibre de charge ou répartition
de charge.
Il consiste à distribuer la charge aux nœuds d’un
cluster.
Un load-balancer est un serveur qui dispose de
différents algorithmes d’équilibrage de charge.
Dans les architectures communes, ce serveur est
redondé pour éviter les SPOF.
Le load-balancing permet d’équilibrer le trafic
réseau et d’assurer la disponibilité des services en
dirigeant les requêtes vers les nœuds actifs.
23/07/2015 Groupe 14: Boukhobza Elior 31
32. Haute disponibilité
Load Balancing
Architectures (1/4)
Schéma classique d’une architecture load-balancée :
o Un cluster de services.
o Un cluster de load-balancers: un actif et un passif
o Un lien dédié entre les deux load-balancers pour le basculement de
service.
23/07/2015 Groupe 14: Boukhobza Elior 32
33. Haute disponibilité
Load Balancing
Architectures (2/4)
Principe:
o Le client s’adresse au load-balancer actif via
l’@IP virtuelle qui lui est fournie.
o Le load-balancer actif relaye la requête vers le
ou les nœuds du cluster de services.
o Pour la réponse, plusieurs solutions sont
possibles, dépendant de l’architecture.
23/07/2015 Groupe 14: Boukhobza Elior 33
34. Haute disponibilité
Load Balancing
Architectures (3/4)
Si le load-balancer agit
comme une passerelle:
o Utilisation du NAT pour
translater l’@IP virtuelle
vers l’@IP réelle du
serveur actif.
o Le serveur actif retourne
la réponse au load-
balancer.
o Le load-balancer renvoie
alors la réponse au client.
o Le cluster de services est
inaccessible directement.
23/07/2015 Groupe 14: Boukhobza Elior 34
35. Haute disponibilité
Load Balancing
Architectures (4/4)
Si le load-balancer est
sur le même cluster
que les serveurs:
o Le load-balancer s’occupe
toujours de relayer vers
le serveur actif.
o Mais la réponse est
renvoyée directement au
client.
o Inconvénient: Le cluster
de services n’est plus
privé.
23/07/2015 Groupe 14: Boukhobza Elior 35
36. Haute disponibilité
Load Balancing
Algorithmes de répartition (1/2)
Round-Robin:
o Distribution de la charge équitablement à chaque serveur.
o Avantages :
Très simple à mettre en place et très rapide.
o Inconvénients :
Ne tient pas compte de facteurs extérieurs tels que le nombre de connexions ou le
temps de réponse.
Un serveur surchargé continuera de recevoir des requêtes pendant que d’autres
serveurs n’utiliseront que peu de leurs ressources.
Weighted Round-Robin:
o Chaque serveur est assigné d’un « poids » qui détermine le taux de
sollicitation du serveur.
o Avantages:
Aussi rapide que Round-Robin
Tient compte des facteurs extérieurs.
o Inconvénients:
Peu intéressant pour des serveurs de même type.
23/07/2015 Groupe 14: Boukhobza Elior 36
37. Haute disponibilité
Load Balancing
Algorithmes de répartition (2/2)
Least Connection:
o Envoie les requêtes au serveur gérant le moins de connexions
entrantes.
o Avantages:
Les requêtes sont équitablement réparties
o Inconvénients:
Ne tient pas compte des capacités de la machine
Weighted Least Connection
o La variante pondérée de Least Connection
Load Based:
o Envoie les requêtes aux serveurs ayant la charge la plus faible.
o Avantages:
Meilleure répartition de la charge
o Inconvénients
Ne tient pas compte des capacités de la machine
23/07/2015 Groupe 14: Boukhobza Elior 37
38. Haute disponibilité
Load Balancing
Gestion des sessions (1/4)
Contexte:
o Dans certaines applications, une session peut se
dérouler en plusieurs étapes, qu’on appelle « états de
session ».
o Chaque étape ne s’active que lorsque l’étape précédente
est validée.
o Par exemple, un achat sur Internet se fait en 3 étapes: le
choix de l’article, le remplissage des informations
utilisateur et le remplissage des coordonnées bancaires.
o Les applications situées dans les serveurs distants
doivent pouvoir suivre le changement d’état de session
pour assurer la continuité.
23/07/2015 Groupe 14: Boukhobza Elior 38
39. Haute disponibilité
Load Balancing
Gestion des sessions (2/4)
Plusieurs solutions pour gérer les états des sessions:
o L’état est stocké chez le client.
o L’état est stocké sur le serveur distant.
o L’état est stocké sur un serveur intermédiaire.
Si l’état est stocké chez le client:
o Le client envoie les requêtes de chaque état avec les informations
de la session.
o Le ou les serveurs traitent ces requêtes unitairement.
Si l’état est stocké sur le serveur distant:
o le load-balancer redirige toutes les requêtes propres à la session
sur le serveur en question.
o Problème: Si le serveur en question tombe au cours de la session, le
client perd toutes les informations relatives aux états précédents.
Solution: Une gestion habile des sessions.
23/07/2015 Groupe 14: Boukhobza Elior 39
40. Haute disponibilité
Load Balancing
Gestion des sessions (3/4)
2 solutions:
o Gestion centralisée.
o Gestion asynchrone.
Gestion centralisée:
o Les états sont stockés sur un serveur à un niveau différent des
serveurs d’application.
o Lors de la réception d’une requête, le serveur d’application
récupère l’état de session du serveur d’états.
Gestion asynchrone:
o Chaque serveur diffuse aux autres serveurs l’état de la session
lorsque celui-ci change.
o Chacun d’eux peut donc traiter une requête propre à un état de
session. Si l’un d’eux tombe, un autre prendra le relais.
o Plus économique que la gestion centralisée, mais plus complexe à
mettre en place.
23/07/2015 Groupe 14: Boukhobza Elior 40
42. Haute disponibilité
Load Balancing
Outils (1/2)
LVS: Linux Virtual Server
C’est un serveur virtuel agissant comme load balancer sur un cluster.
Supporte 3 types de routage des requêtes:
o Routage par NAT
o Routage par tunneling IP
o Routage direct
Supporte les algorithmes de répartition de charge:
o Round Robin
o Weighted Round Robin
o Least Connection
o Weighted Least connection
o Autres algorithmes (Load Based, etc…)
Sous licence GPL
Quelques interfaces graphiques disponibles: UltraMonkey, Piranha
23/07/2015 Groupe 14: Boukhobza Elior 42
46. Haute disponibilité
Redondance
Concepts
Procédé qui consiste à multiplier les éléments afin
d’assurer les fonctions en cas de défaillance de
l’élément principal.
Principes clés pour mettre en place de la
redondance dans un système:
o Trouver le moyen pour que les éléments de secours
puissent remplacer automatiquement les éléments
défaillants.
o Dispersion géographique des éléments redondés pour
éviter les SPOF en cas de défaillance sur tout le site.
On trouve de la redondance à tous les niveaux: de la
couche physique à la couche applicative.
23/07/2015 Groupe 14: Boukhobza Elior 46
47. Haute disponibilité
Redondance
Redondance bas niveau (1/2)
Redondance bas niveau = redondance au niveau matériel et
câblage.
Techniques de base:
o Redondance des équipements: brancher les serveurs sur plusieurs
switchs, routeurs, etc…
o Redondance des interfaces: Disposer de plusieurs interfaces sur les
équipements.
o Redondance électrique: Brancher les équipements sur des
alimentations électriques distinctes…
o Redondance de la sécurité: Multiplier les éléments de sécurité:
Firewalls, IPS, etc…
Plus le degré de redondance est élevé, plus la disponibilité est
haute, mais c’est plus cher et plus lent…
Il faut donc estimer le degré de disponibilité en fonction du
besoin de l’entreprise.
23/07/2015 Groupe 14: Boukhobza Elior 47
49. Haute disponibilité
Redondance liaison
Spanning Tree Protocol (1/3)
STP: Spanning Tree Protocol (802.1D)
C’est un protocole qui permet de modifier la topologie d’un
réseau sans boucle en cas de défaillance d’un lien.
Il permet de détecter et de désactiver les boucles dans un
réseau et fournit une hiérarchie des liens sous forme d’arbre.
Principe:
o Election d’un « root bridge », c’est-à-dire le lien (port) ayant l’id le
plus petit et la priorité la plus faible.
o Détermination du plus court chemin entre deux nœuds du réseau
pour déterminer quel lien utiliser.
o Désactivation des liens non utilisés.
o En cas de défaillance d’un lien, le processus est relancé et une
nouvelle topologie est créée.
o Le temps de convergence est d’environ 40s, ce qui est très lent.
23/07/2015 Groupe 14: Boukhobza Elior 49
51. Haute disponibilité
Redondance liaison
Spanning Tree Protocol (3/3)
Evolutions de STP:
o RSTP (Rapid STP, 802.1w) version plus rapide
de STP (1 s en moyenne)
o PVSTP (Per VLAN STP) de Cisco, qui consiste à
appliquer STP sur plusieurs VLAN.
o MST (Mutliple STP), la version normée de
PVSTP.
o Autres protocoles de Spanning Tree
propriétaires.
23/07/2015 Groupe 14: Boukhobza Elior 51
52. Haute disponibilité
Redondance liaison
LACP, EtherChannel (1/2)
LACP: Link Aggregation Control Protocol (802.3ad)
Protocole permettant d’agréger des liens ou des
ports afin d’améliorer la vitesse de transfert et
d’avoir de la redondance niveau 2.
Une autre version très connue de ce protocole:
Cisco EtherChannel (agrégation de liens Ethernet)
Autres versions du protocole:
o Cisco PAgP (Port Aggregation Protocol)
o Nortel MLT (Multi Link Trunking)
o 3COM DTP (Dynamic Trunking Protocol)
o …
23/07/2015 Groupe 14: Boukhobza Elior 52
54. Haute disponibilité
Redondance réseau
VRRP, HSRP (1/2)
VRRP: Virtual Router Redundancy Protocol (RFC 3768)
Protocole permettant d’avoir de la redondance au niveau routage.
Principe:
o On met deux ou plusieurs routeurs dans un même groupe VRRP.
o Dans ce groupe, un routeur va être élu comme routeur actif, celui ayant la
plus forte priorité. Les autres seront en standby.
o Le routeur actif sera accessible à partir d’une adresse IP virtuelle.
o Les routeurs s’envoient des messages (hello paquets) à intervalles
réguliers pour vérifier qu’il n’y a pas de panne (heartbeat)
o Si le routeur actif tombe, un nouveau routeur sera élu comme actif et sera
disponible via le même adresse virtuelle.
Protocole standardisé.
Basé sur le protocole HSRP (Hot Standby Router Protocol) de Cisco.
Une version libre de ce protocole: CARP (Common Address
Redundancy Protocol) sous OpenBSD.
23/07/2015 Groupe 14: Boukhobza Elior 54
56. Haute disponibilité
Redondance réseau
GLBP
GLBP: Gateway Load Balancing Protocol
Protocole propriétaire Cisco qui ajoute de la
répartition de charge à HSRP.
Principe:
o En plus d’affecter une priorité aux routeurs du
groupe, on affecte aussi un poids.
o Election d’une AVG (Active Virtual Gateway) qui est
le routeur actif du groupe.
o La charge est alors répartie en Round Robin ou
Weighted Round Robin.
23/07/2015 Groupe 14: Boukhobza Elior 56
57. Haute disponibilité
Redondance
Redondance applicative (1/3)
Redonder les éléments
actifs: Serveur web, base de
données, ERP…
Répartir efficacement la
charge.
Assurer la synchronisation
des données entre les
éléments actifs et passifs.
Gérer efficacement les états
de session.
Exemple:
o Serveur web LAMP redondé
et load balancé.
o Base de données MySQL
redondée et synchronisée.
23/07/2015 Groupe 14: Boukhobza Elior 57
58. Haute disponibilité
Redondance
Redondance applicative (2/3)
Teaming: Permet de regrouper plusieurs interfaces
réseau en une seule vue par le système.
Redondance au niveau de l’OS (couche 7)
Type de comportement dépend du constructeur:
o Fail Over Service: Une interface est active, une autre est
en standby
o Load Balancing: Les flux réseau sont distribués sur les
interfaces.
o Switch-assisted: Pour plus d’efficacité dans le
basculement de service ou l’équilibre de charge.
23/07/2015 Groupe 14: Boukhobza Elior 58
59. Haute disponibilité
Redondance
Redondance applicative (3/3)
Autre solution pour mettre de la
redondance: Virtualisation.
Disposer de plusieurs machines virtuelles
au sein d’une même machine permet
d’avoir de la redondance à plus faible coût
(financier et énergétique).
23/07/2015 Groupe 14: Boukhobza Elior 59
61. Haute disponibilité
Réplication des données
Plan
1. Concepts
2. Réplication matérielle
1. RAID
2. DRBD
3. ENBD
3. Systèmes de fichiers
23/07/2015 61Groupe 14: Boukhobza Elior
62. Haute disponibilité
Réplication des données
Concepts (1/3)
Ajouter de la redondance ne suffit pas à assurer la
haute dispo si il n’y a pas de sauvegarde de données
derrière.
Il faut qu’en cas de défaillance du système actif, le
système qui prend le relais assure la continuité de
service.
Il faut donc prévoir un mécanisme de synchronisation
des données entre les éléments redondés: c’est la
réplication.
La réplication peut être matérielle (copie des données
entre les disques, entre les BDD…), ou bien directement
au sein du système de fichiers (cache mémoire,
partage…).
23/07/2015 Groupe 14: Boukhobza Elior 62
63. Haute disponibilité
Réplication des données
Concepts (2/3)
Solution de stockage des données: le NAS (Network
Attached Storage).
o Espace de stockage attaché au réseau de l’entreprise qui gère
l’ensemble des données de l’entreprise.
o C’est un serveur à part entière contenant plusieurs disques
indépendants ainsi que son propre OS et de son propre
système de fichiers.
23/07/2015 Groupe 14: Boukhobza Elior 63
64. Haute disponibilité
Réplication des données
Concepts (3/3)
Autre dispositif de stockage: le SAN (Storage Area
Network). C’est un réseau de stockage à part entière.
o Il contient plusieurs périphériques de stockage reliés à des switchs
en Fiber channel ou iSCSI.
o Le trafic de stockage est alors séparé du trafic métier et la capacité
de stockage est quasi illimitée.
23/07/2015 Groupe 14: Boukhobza Elior 64
65. Haute disponibilité
Réplication matérielle
RAID (1/4)
RAID: Redundant Array of Inexpensive Disks.
Technologie permettant de regrouper
plusieurs disques en un seul (grappe).
Permet d’augmenter la vitesse de transfert et
d’assurer une haute dispo des données.
Il existe plusieurs niveaux de RAID, chaque
niveau décrivant la manière dont sont
stockées les données sur les disques.
RAID est de la réplication locale.
23/07/2015 Groupe 14: Boukhobza Elior 65
66. Haute disponibilité
Réplication matérielle
RAID (2/4)
•Répartit les données sur l’ensemble des disques
•Vitesse de transfert élevée
•Pas de tolérance de panne.
RAID 0
(Striping)
•Duplication des données sur les disques
•Amélioration de la vitesse de lecture
•Haute disponibilité des données
•Solution onéreuse car une partie du stockage est réservée au backup
RAID 1
(Mirroring)
•Stockage des données sous forme d’octets sur chaque disque
•Un disque est dédié au stockage d’un bit de parité
•Permet la reconstitution des données en cas de défaillance.
RAID 3 (Disk
Array With Bit
Interleaved
Data)
23/07/2015 Groupe 14: Boukhobza Elior 66
67. Haute disponibilité
Réplication matérielle
RAID (3/4)
•Comme le RAID 3 mais des blocs à la place des bits
•Meilleure gestion de la capacité de stockage
•Le disque de contrôle doit avoir un débit égal à la somme des débits des
autres disques.
RAID 4 (Disk
Array With
Block
Interleaved
Data)
•Comme le RAID 4 mais la parité est stockée sur tous les disques
•Performances élevées
•Très Haute disponibilité des données
•Très intéressant lorsqu’on possède beaucoup de disques.
RAID 5 (disk
array with
block-
interleaved
distributed
parity)
•Comme le RAID 5
•Plusieurs fonctions de parité pour augmenter la redondance
•Nécessite d’avoir au moins 4 disques.
RAID 6 (disk
array with
block-
interleaved
distributed
parity )
23/07/2015 Groupe 14: Boukhobza Elior 67
68. Haute disponibilité
Réplication matérielle
RAID (4/4)
Avantages du RAID:
o La sécurité: RAID 1 et RAID 5 offrent un niveau de
sécurité élevée, mais RAID 1 est une copie conforme là
où RAID 5 est un entrelacement.
o Performances : RAID 0 et RAID 5 offrent de fortes
performances en lecture/écriture.
o Coût: Le RAID 1 est onéreux car il n’offre que 50% de la
quantité de stockage, alors que RAID 5 arrive à offrir
jusqu’à 90% tout en assurant la réplication des
données.
Conclusion:
o RAID 1 utilisé pour redonder les données d’un serveur.
o RAID 5 utilisé dans de grands espaces de stockage.
23/07/2015 Groupe 14: Boukhobza Elior 68
69. Haute disponibilité
Réplication matérielle
DRBD
DRBD (Distributed Replicated Block Device)
Logiciel de réplication distante pour répliquer
les données entre deux serveurs distants.
Technique de mirroring des données comme
en RAID 1.
Solution Linux souvent déployée avec
Heartbeat.
Conserve une copie locale des données.
La version 8 permet de supporter le partage
de charge.
23/07/2015 Groupe 14: Boukhobza Elior 69
70. Haute disponibilité
Réplication matérielle
ENBD
ENBD: Enhanced Network Block Device
Evolution de Linux NBD.
Permet d’accéder aux données distantes
comme si elles étaient locales.
Une authentification est nécessaire pour
disposer des droits de lecture/écriture.
Associé à du RAID 1, assure une haute
disponibilité des données « over the Net ».
23/07/2015 Groupe 14: Boukhobza Elior 70
71. Haute disponibilité
Réplication des données
Systèmes de fichiers (1/2)
Intérêt: disposer au sein du disque un système de fichiers
offrant de la redondance mais aussi assurant l’intégrité des
données.
Deux types de systèmes de fichiers:
o Locaux (Ext3, XFS…)
o Partagés (NFS, OpenGFS…)
Fonctionnalités intéressantes:
o Journalisation des données pour récupération en cas de crash.
o Vitesse de lecture/écriture
o Partage des données sur plusieurs disques.
o Sécurité de l’accès aux données
o Clustering des données
o Etc…
23/07/2015 Groupe 14: Boukhobza Elior 71
72. Haute disponibilité
Réplication des données
Systèmes de fichiers (2/2)
Tableau présentant quelques systèmes de
fichiers et leurs fonctionnalités:
23/07/2015 Groupe 14: Boukhobza Elior 72
File system Partage Ressource
Réseau
En local Gestion du
clustering de
données
Journalisé
ReiserFS Oui Oui
Ext 3 Oui Oui
XFS Oui Oui
NFS Oui Oui Oui
GFS Oui Oui Oui Oui Oui
CodaFS Oui Oui Oui Oui
Intermezzo Oui Oui Oui Oui
Lustre Oui Oui Oui Oui
74. Haute disponibilité
Conclusion
La HD dans les faits (1/2)
En utilisant toutes les connaissances acquises dans cet état de l’art,
voici un exemple d’une architecture hautement disponible:
23/07/2015 Groupe 14: Boukhobza Elior 74
75. Haute disponibilité
Conclusion
La HD dans les faits (2/2)
Dans cette architecture:
o Tous les éléments sont redondés: routeurs, firewall, proxy,
serveurs.
o Chaque couche d’équipements est connectée à sa voisine en
utilisant une Switch Zone dédiée, avec des switchs implémentant
du Spanning Tree.
o Les routeurs et les firewall utilisent de l’HSRP ou du GLBP, les proxy
implémentent du CARP, les load balancers et les serveurs sont
clusterisés et font de la redondance applicative (Teaming).
o Enfin les bases de données sont partagées via du RAID 5
localement et en ENBD avec les autres sites.
Une architecture particulièrement onéreuse mais qui offre un
degré de disponibilité très élevé.
En ajoutant en plus de la virtualisation, on peut offrir une
haute disponibilité tout en réduisant considérablement les
coûts.
23/07/2015 Groupe 14: Boukhobza Elior 75
76. Haute disponibilité
Conclusion
Les acteurs de la HD (1/2)
Concrètement, il existe des solutions de
serveurs offrant de la HD (RAID, Heartbeat,
etc…)
Gartner a réalisé une étude en 2003 des
acteurs du marché de la haute
disponibilité.
En leaders: Fujitsu Technologies, HP, IBM,
Stratus & Unisys.
23/07/2015 Groupe 14: Boukhobza Elior 76
79. Haute disponibilité
Conclusion
Nowadays, many solutions provide high availability and
fault tolerance to IS architectures and materials.
The rate of high availability is proportional to the
investment deployed. The more money is invested for
HA, the more secured the IS will be, making a difference
between simple reliability and high availability.
That’s why nowadays, it’s vital for companies to ensure
its high availability in order to fully exercise its core
business without fearing system failures or natural
disasters.
The coming of the virtualization is the best way to
provide HA to systems at a lesser cost.
23/07/2015 Groupe 14: Boukhobza Elior 79
Le sujet de mon état de l’art est donc la haute disponibilité, un sujet très important dans le domaine des réseaux et télécom, comme vous avez pu le constater au cours des différents cours que l’on a pu avoir. Je vais ici vous parler des techniques de haute dispo, afin que vous en compreniez les concepts pour pouvoir l’implémenter plus tard.
Tout d’abord, je vais vous donner quelques définitions relatives à la haute disponibilité, puis je vais enchainer sur le principe de clustering, que vous puissiez voir en détail ce que c’est, puis le load balancing, qui est étroitement lié au clustering.
Ensuite, je vais vous parler de la redondance et des différents types de redondance que l’on peut observer dans les systèmes, puis je vais enchainer sur la réplication de données.
Enfin, je vais conclure en présentant ce que peut être une architecture hautement disponible aujourd’hui, et en présentant quelques acteurs de haute dispo.
The question is « What is the high availabilty ». A highly available material is a material providing full time availability, whatever happens to the system
The fault tolerance is the capacity of the material to ensure the data availabilty when failures occurs. It consists of providing full time checking and redundancy devices ot ensure HA.
But the real question is « Why high availabilty ».
The answer is obvious, in a company, the IS needs to be fully 100% or most of the time.
So, when a failure occurs, caused by many incidents like device crashing, fire, flooding, earthquake, etc…, the IS need to be available without losing any data, otherwise it would be fatal for the company
Then, having a fully available system is really vital for the company, in order to ensuire its business without fearing failures or disasters.
D: Disponibilité, c’est la capacité que la matériel ou service de pouvoir etre dispo à toute heure
I: Intégrité, c’est la capacité au matériel ou service de garantir que les données no’nt pas été modifiées par un tiers
C: Confidentialité, c’est la capacité au matériel ou service de garantir que les données ne peuvent etre accédées que par les personnes y avant droit
Et enfin P: la preuve, c’est en fait la non répudiation, c’est-à-dire l’impossibilité de nier avoir effectué telle ou telle action.
Plus un système remplit ces conditions, plus il est sécurisé et fiable.
D’autre part, on parle aussi de R, dans DICP-R, R pour règlementations, ce sont les règlementations que le système doit accepter (ISO27001, loi Sarbanes Oxley, etc…)
Indicateurs de disponibilité, qu’on appelle aussi des indicateurs de fiabilité d’un système, il y’en a plusieurs.
MTTf: c’est le mean time to failure, c’est-à-dire le temps moyen avant apparition d’une panne. On souhaite que ce soit le plus grand nombre possible.
MTBF, Mean time between failures, c a d le temps moyen entre deux pannes. Plus ce nombre est grand, plus le système est fiable.
MTTR, Mean Time To Repair, c’est le temps moyen de réparation. C’est le temps moyen nécessaire à la réparation d’un composant, on souhaite par contre que ce soit le plus court possible.
Pour finir, on définit que MTBF = MTTF + MTTR
Autres indicateurs: MDT pour mean down time, c’est-à-dire le temps moyen d’indisponibilité d’un composant.
MUT: Mean up time, ou temps moyen de disponibilité avant qu’il ne tombe ou retombe en panne.
En gros, MTBF = MUT + MDT
Pour mesurer la disponibilité ou fiabilité d’un système, c’est MTTF/MTBF.
En tiers 1, on a juste une alimentation electrique et un système de refroidissement, les composants ne sont pas redondés et on a un taux de dispo de 99,671%.
En tiers 2, on redonde les compsants, ce qui nous donne un taux de dispo de 99,741%.
En tiers 3, le plus répandu dans les datacenters, on redonde les compsants et l’alimentation electrique, mais on en utilise qu’une seule, les autres etant en spare.
Enfin en tiers 4, ou on a le plus haut degré de disponibilité, on redonde tout et on utilise tout. Par contre c’est beaucoup plus cher qu’en tiers 3, et rares sont les entreprises ayant du tiers 4.
Voici un petit tableau de classification de l’uptime institute.
Qu’est ce qu’un cluster? Un cluster, c’est une grappe de serveurs ou ferme de serveurs, c’est-à-dire qu’on regroupe plusieurs serveurs appelés nœuds pour n’en faire plus qu’un, qu’on appelle cluster, et ce de manière transparente pour le client.
De ce fait, si l’un des nœuds tombe suite à une panne, le service n’est pas interrompu car un autre nœud aura pris le relais, assurant ainsi la dispo des services.
Ces nœuds n’ont pas besoin d’être forcément proches physiquement. Ils peuvent aussi etre séparés à plusieiurs kilometres entre eux, formant ce qu’on appelle un géocluster.
Donc voici ce que c’est qu’un cluster, c’est un regroupement de plusieurs serveurs, et le client aura l’impression d’accéder à un seul serveur.
Ici on peut voir qu’il y’a un load balancer avant le cluster, j’en parlerai plus en détail par la suite.
A quoi ca va servir donc de regrouper des serveurs?
Alors tout d’abord le plus important, le basculement de service, ou fail over service, c’est-à-dire le fait de basculer le service vers un nœud fonctionnel du cluster lors d’une panne du nœud principal. On assure ainsi un service sans interruption.
Comme autre fonctionnalité, la détection de pannes, c’est-à-dire que les nœuds du cluster guettent lorsqu’un des nœuds tombe en panne pour basculer le service en cas de panne. C’est aussi ce qu’on appelle le heartbeat.
Ces fonctions sont en général couplées à d’autres fonctions pour assurer la disponibilité, telles que la réparition de charge sur les différents nœuds, la réplication des données, l’intégrité etc…
Les types de clusters: On peut distinguer plusieurs types de cluster, selon les fonctionnalités qu’ils offrent: …
Par contre, on distingue différentes configurations ou architectures de clusters selon le type de service offert par le système.
Comme architectures, on a:
…
L’architecture la plus simple, mais aussi la moins « hautement disponible ».
Donc on a : un cluster de deux nœuds, avec un nœud principal ou nœud maitre qui execute les services (web, mail, etc…), et un nœud secondaire, ou nœud esclave, qui servira de nœud de spare en cas de défaillance du nœud principal. Entre les deux on a un ou plusieurs liens dédiés pour le basculement de service et le heartbeat.
Au niveau l’adressage, comment ca marche:
Chaqe nœud a son @ip réelle, mais le client accède au cluster via une adresse ip virtuelle, ou alias IP, qui va pointer vers le nœud actif du cluster par du NAT.
Lorsque le nœud actif tombe, l’alias IP pointera alors sur le nœud de spare.
Voila ce que ca donne, donc, on a notre cluster de 2 nœuds, et un client accedant aux serveurs via une application.
Il y accede via l’@ip virtuelle qui lui a été fournie, sans savoir sur quel nœud du cluster il accède. Ainsi, lorsque le nœud actif du cluster tombe, c’est le nœud de secours qui prend le relais, et ce sans que le client ne détecte quoi que ce soit (a la rigueur selon la distance entre les deux nœuds, par exemple dans un géocluster, il peut se passer une période dans laquelle le client n’accede pas au service, mais dans un cluster normal ce temps est proche de 0)
Autres architectures:
Actif actif: les deux nœuds sont tous les deux actifs et se répartisse la charge grace a un load balancer. Lorsque l’un des nœuds tombe, l’autre récupère toute la charge du nœud défaillant, puis lorsque le nœud est réparé, la charge est à nouveau répartie.
En N+1, on a cette fois N noeds actifs et load balancés, et un nœud de secours qui sert de spare. Ainsi lorsque l’un des nœuds actifs tombe, le service est basculé sur le nœud de secours, et le nœud défaillant devient le nœud de secours une fois réparé. On peut apercevoir un SPOF ici, lorsque deux nœuds ou plus tombent en meme temps, mais ceci est plus ou moins réglé par un bon load balancer.
En N+M, cette fois ci on a M serveurs de spare. Ce nombre dépend du degré de haute dispo que l’on veut accorder.
En N to 1, c’est pareil que N+1 sauf que lorsque le nœud défaillant est réparé, le service bascule à nouveau sur ce nœud. On a donc 2 basculements de service.
En N to N, on n’a pas de nœuds de secours, si un des nœuds tombe, la charge est redistribuée sur les N-1 nœuds restants. Puis lorsque le nœud est réablit, la charge est redistribuée en conséquence. Par conséquent ca nécessite des nœuds ayant une assez grande cacapcité pour supporter le surplus de charge.
La détection de pannes, j’en ai parlé un peu tout a l’heure, qu’on appelle aussi heartbeat.
Comment ca marche: on a des requetes push et des requetes pull envoyées par les nœuds du cluster:
Maintenant je vais parler d’outils qui permettent de mettre du clustering dans un système.
On a d’abord heartbeat, un logiciel du projet « Linux HA », qui est un outil de surveillance des systèmes. Il permet en outre d’offrir du fail over service à l’aide de scripts.
Comment ca marche:
Les services, ou applications sont démarrés avec heartbeat sur le nœud actif, et on peut les arreter ou les redémarrer manuellement dans l’interface, dans ce cas les services sont bascules sur le ou les nœuds de secours.
On peut alors détecter les pannes matérielles ou réseau et basculer le service auto en cas de panne.
Avec l’outil « Mon » que je vais présenter juste apres, on peut faire aussi non seulement de la surveillance matériel et réseau mais aussi de l’applicatif.
D’autre part, hearbeat possede aussi le contrôle d’une application, qu’on appelle « Stonith », qui consiste à desactiver à distance le nœud actif pour eviter par exemple qu’un serveur « bouché » continue d’accepter les requetes des clients et ainsi provoquant un goulot d’etranglement dans le cluster.
Mon comme je l’ai dit, est un outil de supervision applicative. Il permet de détecter les défaillances applicatives et de les arreter ou redemarrer manuellement ou automatiquement.
Ce qu’il peut faire:
…
Enfin un autre outil de clustering, FailSafe, de SGI, qui est similaire a Heartbeat.
En outre, il peut supporter jusqu’à des clusters de 16 nœuds.
Le load balancing est étroitement lié au clustering, c’est ce qui permet de répartir la charge sur les différents nœuds du cluster.
Un load balancer, c’est un serveur qui supporte l’équilibrage de charge. Il est situé en frontal des serveurs, et en général il est redondé pour éviter les SPOF.
Grace aux LB, on peut équilibrer le trafic réseau et assurer une disponibilité des services
Voici un schéma classique d’une architecture avec load balancer, qui se rapproche de celle qu’on a vue tout a l’heure: Ici on a notre cluster de serveurs, et en frontal un cluster de LB qui vont répartir la charge sur les nœuds du cluster.
Le principe est sensiblement le même que dans une architecture en cluster sans LB: le client s’adresse au cluster via l’@ ip virtuelle fournie, sauf que là cette adresse ne pointera pas sur le serveur applicatif, mais sur le LB, qui se charge de relayer les requetes aux nœuds du cluster.
La réponse se fait de deux facons, soit elle est renvoyée au LB qui la renvoie au client, soit elle est directe.
Solution 1: Le load balancer agit comme une passerelle:
Les requetes vont vers le LB qui va rediriger vers un des serveurs du cluster.
Le serveur en question renvoie ensuite la réponse au LB qui se charge alors de la retourner au client, il agit donc comme une passerelle entre le client et le cluster.
C’est la solution qui est la plus utilisée en entreprise pour des raisons de sécurité, par contre cela implique de devoir conférer plus de responsabilités au LB, donc plus de charge.
La deuxieme solution, c’est lorsque le LB est contenu dans le cluster des serveurs. Il agit alors comme un relais entre le client et les serveurs, et par conséquent le cluster est accessible directement par le client. Ca peut donc poser des problemes de sécurité.
Maintenant je vais parler des algorithmes de répartition.
Tout d’abord, on a le Round Robin, c’est-à-dire qu’on distribue la charge équitablement entre les serveurs. Comment ca marche concretement, les requetes sont adressées de facon séquentielle à chacun des nœuds du cluster.
L’avantage de cette solution c’est qu’elle est tres simple à mettre en place car il n’y a quasiment rien à configurer. Par contre on peut le deviner, si un serveur est chargé, il continuera quand meme de recevoir les requetes, et on peut alors avoir un goulot d’étrangelement dans le réseau. On ne tient pas compte des facteurs extérieurs tels que le nombre de connexions ou le temps de réponse des serveurs.
On a alors l’algorithme de Weighted Round Robin, qui agit comme le RR sauf qu’on attribue un poids, une priorité aux serveurs afin de déterminer lesquels sont les plus aptes à recevoir la charge.
Comme avantages, d’une part, il est aussi rapide est simple que le RR, et d’autre part il tient bien compte des facteurs extérieurs. Par contre, c’est peu intéressant pour des serveurs ayant les memes caractéristiques (on revient aux pb du RR classique)
Comme autres algos, on trouve aussi:
Least connection, c’est-à-dire qu’on envoie les requetes prioritairement aux serveurs ayant le moins de connexions entrantes, et sa version pondérée le Weighted Least Connection.
Comme avantages…
Load Based, qui consiste là à envoyer les requetes aux serveurs ayant la charge la plus faible. Comme avantages…
Autre chose assez importante dans le LB, qui est la gestion des sessions. Dans des applications il arrive souvent qu’une session se déroule en plusieurs étapes, qu’on appelle des états de session.
Par exemple, lorsqu’on achete sur internet, d’abord on choisit son article, ensuite on remplit nos informations de facturation puis enfin le paiement bancaire. Quand on s’adresse à un service qui est load balancé, la question est de savoir comment est opéré le changement d’état de session par le LB, c’est-à-dire comment répartir la charge dans ces cas là.
En gros, il faut garder en mémoire l’état de la session pour que chaque serveur du cluster puisse savoir ce qui s’est passé auparavant
Donc là il exite plusieurs solutions, soit l’état est chez le client, par des cookies, ou autre…
Soit il est sur le serveur distant qui a engagé la session, ou bien on le stocke sur un serveur dédié à ça.
Si c’est chez le client, il faut donc que le client communique au LB cet état. Par conséquent les requetes seront plus lourdes, et on voit aussi un SPOF ici, lorsque le client flush son navigateur par exemple en pleine session, ben il doit tout recommencer…
Si c’est chez le serveur ayant engagé la session, alors toutes les étapes de la session seront redirigées vers le meme serveur jusqu’à la fin de la session. Par contre on voit bien ici, si le serveur tombe, le client doit tout refaire.
Donc la solution c’est bien de stocker les états dans des serveurs intermédiaires.
On a deux choix: soit une gestion centralisée, soit asynchrone.
En centralisée, on a donc le serveur de sessions qui est central, et chaque serveur applicatif récupere l’état de la session sur le serveur. Si ce serveur tombe, SPOF cependant.
En asynchrone, chaque serveur communique aux autres l’état de la session, et donc si un des serveurs tombe, un autre peut tout a fait prendre le relais. Par contre ca demande plus de choses à configurer ainsi qu’avoir de la place sur les serveurs pour stocker ces états.
Donc voici dans un schéma ce que ca peut donner.
Je reviens maintenant sur les outils de load balancing, et je vais plus particulierement parler de LVS: Linux Virtual Server
C’est un serveur virtuel… qui supporte 3 types de routage des requetes:
… Je vais en parler un peu juste après
Il supporte en outre tous les algos de répartition de charge: …
Quelques interfaces graphiques existent comme Ultramonkey, Piranha…
LVS par nat: C’est du load balancing tout bete qui consiste à affecter un serveur du cluster à une machine (IP). Comme on peut le voir sur ce schéma, le client représenté en bleu enverra ses requetes au serveur bleu, le client vert vers le serveur vert etc etc.
Un client peut aussi avoir plusieurs serveurs affectés avec un algo de répartition qui répartira la charge comme on l’a vu (RR, WRR…)
Le probleme evident ici, c’est que le LB agit comme une passerelle, et donc se prend toute la charge en pleine face. Mais c’est bien plus simple à configurer.
L’autre solution c’est du LVS avec du tunnel IP, c’est-à-dire que le LB va servir de serveur VPN en quelque sorte, et va construire un tunnel entre les clients et les serveurs. On a donc tous les bénéfices du tunneling à savoir la mutualisation des ressources et la sécurité des informations, et le LB ne se prend pas toutes les requetes en pleine face, donc une otpimisation de la charge.
Il y’a aussi une derniere solution qui est du routage direct, mais je ne vais pas en parler car elle n’est pas tres intéressante (mais encore plus simple à mettre en place)
Donc voilà pour la partie cluster/load balancer, maintenant je vais parler de redondance.
Donc on trouve de la redondance partout, du bas niveau jusqu’à la couche applicative.
Qu’est ce que la redondance? C’est un procédé qui consiste à multiplier les …
Cependant, ca ne sert à rien de mettre de la redondance si on ne respecte pas certains principes, qui sont:
De remplacer automatiquement les éléments défaillants
De se disperser géographiquement en cas de défaillance de tout le site
La redondance bas niveau, c’est tout simplement la redondance du matériel et du cablage.
Quelques techniques de base:
La redondance des équipements: avoir des équipements de spare en cas de défaillance.
La redondance des interfaces, donc là aussi d’avoir plusieurs interfaces dans les équipements
La redondance electrique, aussi très importante, car si l’alumentation electrique tombe et que tout le système tombe a cause de ca, quelle que soit le degré de redondance au niveaux supérieurs, ca ne sert a rien. Donc multiplier les alimentations.
Et bien entendu redonder la sécurité: firewall, ips…
Exemple de redondance bas niveau sur des blades serveurs HP, d’apres le cours de Mr Thiel
On a ici
2 power enclosures, 2 server enclosures, et un power distribution system, ou systeme de distribution de l’electricité (p class mini bus bar), ou sont branchées les power enclosures
Au niveau des serveurs, on a deux cotés, le coté A en bleu et la coté B en rouge, et on voit que sur une meme serveur enclosure, on a chaque coté connecté aux deux power enclosures, ce qui offre d’ores et deja de la redondance electrique.
De plus, une meme power enclosure est alimentée par deux sources d’énergie différentes, et donc on evite que lorsqu’une source d’énergie tiombe, on perde tout le systeme.
Voila un matériel hautement disponible bas niveau.
On va plus haut dans les couches, et on passe au layer 2.
Pour la redondance L2, on a un protocole qui est le Spanning Tree Protocol, ou STP 802.1D. C’est un protocole qui va modifier la topologie d’un réseau pour supprimer les boucles et qui va réagir en cas de défaillance d’un lien.
Pour ca, il crée une hierarchie sous forme d’arbre:
En gros, on a un « root bridge » qui est élu, c’est-à-dire le port ayant l’id le plus petit et la priorité la plus faible, et de ce root bridge on fait un calcul du plus court chemin pour construire une topologie de réseau.
Les liens non utilisés sont désactivés, et lorsqu’un lien tombe, une nouvelle election est lancée et une nouvelle topologie est créée.
Cependant, le temps de convergence est très lent (40 s environ)
Par exemple, entre A et B on a 3 switchs interconnectés entre eux (full meshed) avec les liens 1 et 2 qui sont actifs et le lien 3 en standby. Lorsqu’un lien tombe, par exemple le lien 2, la topologie est recréée et le lien 3 devient un lien actif.
Comme on a vu, STP est assez lent, c’est pourquoi il existe des versions améliorées de STP:
RSTP, Rapid STP, ou on finit par arriver à 1s de convergence;
PVSTP de Cisco qui ajoute du VLAN tagging a STP
MST, qui est la version normée de PVSTP
Et d’autre protocoles propriétaires.
Un autre protocole offrant de la haute dispo, qui est LACP
LACP : Link Aggregation Control protocol, qui est un protocole d’agrégation de liens. Ca veut dire qu’on va regrouper plusieurs liens en un seul gros lien pour augmenter la vitesse de transfert et pour obtenir de la redondance.
LACP est la version normée du protocole EtherChannel de Cisco, qui est largement utilisé entre les équipements Cisco. Cependant, pour interconnecter des switchs de constructeurs différents avec de l’agrégation de liens, il convient mieux d’utiliser LACP.
Autres versions plus proprietaires: PaGP, nortel MLT, 3COM DTP…
Donc en images, ce que ca donne, on a les ports 45 à 48 regtroupés en un seul lien etherchannel, avec un débit de 4*1G soit 4 Gb
Passons maintenant au layer 3, donc VRRP HSRP
VRRP: Virtual … C’est un protocole qui permet d’avoir de la redondance au niveau routage.
Comment ca marche: on définit un groupe de routeurs, ou groupe VRRP dans lequel on met les routeurs. Il y’aura un routeur actif et un ou plusieurs routeurs en standby, Le routeur actif etant celui ayant la priorité la plus élevée
Tout comme avec le clustering, on accede au groupe via une @ip virtuelle, qui designe le routeur actif du groupe. Les routeurs s’envoient periodiquement des messages pour verifier le bon fonctionnement du routeur actif, et donc lorsqu’ils détectent qu’il est tombé, une nouvelle élection est réalisée et un nouveau routeur actif est élu parmi les routeurs en standby.
VRRP est la version normalisée du protocole HSRP de Cisco.
Il y’a aussi une autre versiopn libre de ce protocole qui est CARP d’OpenBSD.
Donc ce schéma est assez similaire aux schémas sur les clusters, on a deux routeurs au sein d’un groupe VRRP/HSRP, accessibles via une @ip virtuelle en .254. Cette adresse designe le routeur actif du groupe, et lorsque celui-ci tombe, le passif prend le relais.
GLBP: …
C’est un protocole propriétaire Cisco qui ajoute la répartition de charge à HSRP, en utilisant les principes de load balancing vus auparavant, à savoir:
Affectation d’un poids aux routeurs du groupe
L’election d’un routeur actif qu’on appelle AVG
Repartitionj de charge avec du RR ou WRR
Enfin il ne faut pas oublier d’ajouter aussi de la redondance dans la couche applicative, c’est-à-dire les serveurs, les bases de données, l’ERP etc…
Par exemple ici, on a un serveur Web LAMP qui est redondé et load balancé, et une base de données Mysql synchronisée entre les deux serveurs de données.
Une autre application de la redondance applicative: le teaming, c’est de l’agrégation de cartes réseau. C’est une redondance au niveau du système d’exploitation.
En configurant du teaming on peut mettre en place plusieurs types de comportement, dépendant du constructeur:
FOS , …
LB, …
Switch assisted (par ex chez HP) pour mieux répartir la charge.
Enfin une autre solution pour avoir de la redondance à tous les niveaux, la virtualisation. Elle permet d’avoir plusieurs machines a l’intérieur d’une seule et meme machine, et donc on obtient ici de la redondance à faible cout (financier et energétique)
Maintenant je vais passer à la réplication des données, qui est aussi importante que la redondance, car sans réplication la redondance ne sert à rien
Donc d’abord je vais enoncer quelques concepts relatifs à la réplication, ensuite je vais parler de la réplication matérielle, avec RAID, DRBD et ENBD, puis enfin des systemes de fichiers qui font de la réplication.
Donc comme je l’ai dit, mettre de la redondance ne sert à rien si les données ne sont pas synchronisées entre les élements redondés. D’où la réplication qui va copier les données de l’élément actif vers le ou les éléments en standby. Cette réplication peut etre matérielle (donc entre les disques, bdd…) ou bien directement dans le système de fichiers (cache, partage…)
Avant de rentrer plus en détail dans les solutions de réplication, je vais d’abord parler des éléments de stockage.
Tout d’abord on a le NAS: network attached storage. C’est un espace de stockage qui se trouve sur le réseau, un serveur a part entiere qui dispose de plusieurs disques indépendants, de son propre OS et de son propre file system.
Par exemple, ici on a le NAS et on a deux machines A et B qui se connectent au NAS pour stocker les données
Une autre solution de stockage: le SAN, SAN pour Storage Area Network. Ici on a carrément un réseau de stockage à part entiere, indépendant du réseau local.
Ce sont tout simplement des disques qui sont reliés à des switchs SAN avec du tres haut débit, du Fibre Channel ou iSCSI. Le trafic de stockage est donc séparé du trafic LAN et la capacité de stockage est quasi illimitée
Là par exemple on peut voir que les PC et serveurs sont connectés sur un LAN, et les serveurs sont connectés sur un SAN pour leurs données.
Maintenant je vais parler du RAID. Le RAID (Redondant array of inexpensive disks) est une solution permettant de regrouper plusieurs disques pour n’en former qu’un seul. Il existe plusieurs types de RAID, chaque niveau décrivant la manière de stocker les données. C’est de la réplication locale, donc au sein d’un meme système.
RAID 0, ou striping: En RAID 0, on répartit les données sur l’esnemble des disques pour augmenter la vitesse de transfert. Cependant, si l’un des disques tombe, toutes les données sont perdues, donc pas de tolérance de panne.
En RAID 1, c’est du mirroring,ca veut dire qu’on duplique les données sur les disques, obtenant ainis de la haute dispo des données. Par contre c’est bien plus cher car cela implique qu’une partie du stokcage est réservée au backup.
Je vais passer sur le RAID 2, en RAID 3, on a ici un disque de stockage et un disque qui va stocker les parités, qui va permettre de reconstituer les données en cas de plantage.
En raid 4, meme chose que le raid 3 sauf qu’au lieu d’avoir des bits de parités, on a des blocks, ce qui permet une meilleure gestion de la capacité de stockage.
Enfin en raid 5, on stocke les bits de parité sur chacun des disques. On obtient ainsi de meilleurs performances et une forte tolérance de panne. Par contre c’est intéressant uniquement lorsqu’on a beaucoup de disques. Quand on en a peu, il devient plus rentable de mettre en place du raid 0 + 1 plutôt que du raid 5.
Il y’en a encore d’autres, comme le RAID 6, qui est une évolution du raid 5. Il existe aussi du raid 10, etc..
Les avantages de mettre du raid:
La sécurité, …
…
DRBD: C’est une solution de réplication distante, qui permet de répliquer les données entre deux serveurs distants. C’est du mirroring comme en RAID , mais en version distante.
Elle est souvent déployée avec Heartbeat. De plus, depuis la version 8 on peut faire du partage de charge.
Autre solution: ENBD, qui est l’évolution de Linux NBD. Elle permet à un serveur d’accéder aux données distantes comme si elles etaient locales.
Une authentification est nécessaire pour avoir les droits de lecture ecriture. Ca permet d’avoir donc une haute dispo des données à travers le net.
Pour finir, je vais parler des systemes de fichiers qui offrent de la redondance mais aussi qui assurent l’intégrité des données.
Il y’a deux types de systemes de fichiers, les FS locaux, comme Ext3, XFS…; et partagés, comme NFS, OpenGFS…
Ces FS offrent des fonctionnalités intéressantes, comme:
-…
Je ne vais pas entrer en détail sur les plus et les moins de chaque système, mais j’ai trouvé sur le net un petit tableau de comparaison de quelques FS
Conclusion à tout ca:
Maintenant que l’on sait tout ca, voyons ce que ca donne un système hautement disponible:
Dans cette architecture:
- Tous les éléments sont redondés: routeurs, firewall, proxy, serveurs.
- Chaque couche d’équipements est connectée à sa voisine en utilisant une Switch Zone dédiée, avec des switchs implémentant du Spanning Tree.
- Les routeurs et les firewall utilisent de l’HSRP ou du GLBP, les proxy implémentent du CARP, les load balancers et les serveurs sont clusterisés et font de la redondance applicative (Teaming).
- Enfin les bases de données sont partagées via du RAID 5 localement et en ENBD avec les autres sites.
Une architecture particulièrement onéreuse mais qui offre un degré de disponibilité très élevé.
En ajoutant en plus de la virtualisation, on peut offrir une haute disponibilité tout en réduisant considérablement les coûts.
Concernant les acteurs de la haute disponibilité, il existe sur le marché des boites qui offrent des serveurs avec de la HD (RAID, Heartbeat…)
En 2003, Gartner a réalisé une étude sur les acteurs du marché de la haute dispo, et en leader on trouve HP, IBM, Stratus et Unisys.
Voici le magic quadrant qui a été effectué:
Enfin pour finir un cas concret: l’architecture de Wikipedia
On a tout d’abord GeoDNS, une répartition de charge par DNS qui redirige les requetes vers les load balancers les plus proches des clients
Du load balancing par LVS
Des serveurs Squid de cache
Près de 400 serveurs Web Apache PHP Mysql avec du cache memcached
Utilisation de CARP pour répartir les requetes vers les différents datacenter
Etc etc…
Ce n’est que la partie supérieure de l’iceberg, mais on voit bien comment ces concepts sont mis en œuvre dans les architectures actuelles.
To conclude, in this exposé, we have seen that many solutions provide ha and ft to IS architectures.
The rate of HA is proportional…
To finish, i say that the coming of the virtualization will help IS to have HA in a least cost.