Haute disponibilité

La haute disponibilité ou high availability (HA) est un terme souvent utilisé en informatique, à propos d'architecture de systÚme ou d'un service pour désigner le fait que cette architecture ou ce service a un taux de disponibilité convenable.
La disponibilitĂ© est aujourd'hui un enjeu important des infrastructures informatiques. Ces coĂ»ts se chiffrant en milliards d'euros Ă l'Ă©chelle d'un pays[1]. L'indisponibilitĂ© des services informatiques est particuliĂšrement critique dans le domaine de l'industrie, notamment en cas d'arrĂȘt d'une chaĂźne de production.
Deux moyens complémentaires sont utilisés pour améliorer la disponibilité :
- la mise en place d'une infrastructure matérielle spécialisée, généralement en se basant sur de la redondance matérielle. Est alors créé un cluster de haute-disponibilité (par opposition à un cluster de calcul) : une grappe d'ordinateurs dont le but est d'assurer un service en évitant au maximum les indisponibilités ;
- la mise en place de processus adaptés permettant de réduire les erreurs, et d'accélérer la reprise en cas d'erreur. ITIL contient de nombreux processus de ce type.
Mesure du taux de disponibilité
[modifier | modifier le code]La disponibilité se mesure souvent en pourcentage :
| Disponibilité en % | Indisponibilité par année | Indisponibilité par mois[2] | Indisponibilité par semaine |
|---|---|---|---|
| 90 % (« un neuf ») | 36,5 jours | 72 heures | 16,8 heures |
| 95Â % | 18,25 jours | 36 heures | 8,4 heures |
| 98Â % | 7,30 jours | 14,4 heures | 3,36 heures |
| 99 % (« deux neuf ») | 3,65 jours | 7,20 heures | 1,68 heure |
| 99,5Â % | 1,83 jour | 3,60 heures | 50,4 minutes |
| 99,8Â % | 17,52 heures | 86,23 minutes | 20,16 minutes |
| 99,9 % (« trois neuf ») | 8,76 heures | 43,2 minutes | 10,1 minutes |
| 99,95Â % | 4,38 heures | 21,56 minutes | 5,04 minutes |
| 99,99 % (« quatre neuf ») | 52,56 minutes | 4,32 minutes | 1,01 minute |
| 99,999 % (« cinq neuf ») | 5,26 minutes | 25,9 secondes | 6,05 secondes |
| 99,9999 % (« six neuf ») | 31,5 secondes | 2,59 secondes | 0,605 seconde |
L'amalgame est souvent fait, à tort, entre la haute disponibilité et le plan de reprise d'activité. Il s'agit de deux tùches différentes, complémentaires pour atteindre la disponibilité continue.
Techniques améliorant la disponibilité
[modifier | modifier le code]De nombreuses techniques sont utilisées pour améliorer la disponibilité :
- la redondance des matériels et la mise en cluster ;
- la sécurisation des données : RAID, snapshots, Oracle Data Guard (en), SQL Server AlwaysOn, BCV (Business Copy Volume), SRDF (Symmetrix Remote Data Facility), DRBD ;
- la possibilitĂ© de reconfigurer le serveur « à chaud » (câest-Ă -dire lorsque celui-ci fonctionne) ;
- mode dégradé ou un mode panique ;
- plan de secours ;
- et sécurisation des sauvegardes : externalisation, centralisation sur site tiers.
La haute disponibilitĂ© exige le plus souvent un local adaptĂ©: alimentation stabilisĂ©e, climatisation sur plancher, avec filtre Ă particules, service de maintenance, service de gardiennage et de sĂ©curitĂ© contre la malveillance et le vol. Attention aussi au risque d'incendie et de dĂ©gĂąt des eaux. Les cĂąbles d'alimentation et de communication doivent ĂȘtre multiples et enterrĂ©s. Ils ne doivent pas ĂȘtre saillants dans le parking souterrain de l'immeuble, ce qui est trop souvent vu dans les immeubles parisiens. Ces critĂšres sont les premiers Ă entrer en compte lors du choix d'un prestataire d'hĂ©bergement (cas de la location d'un local Ă haute disponibilitĂ©).
Pour chaque niveau de lâarchitecture, pour chaque composant, chaque liaison entre composants, il faut Ă©tablir :
- Comment dĂ©tecter une panne ? Exemples : Tests de vie TCP Health Check implĂ©mentĂ© par un boĂźtier Alteon[3], programme de test invoquĂ© pĂ©riodiquement (« heartbeat »), interface de type « diagnostic » sur les composantsâŠ
- Comment le composant est-il sĂ©curisĂ©, redondĂ©, secouru⊠Exemples : serveur de secours, cluster systĂšme, clustering Websphere, stockage RAID, sauvegardes, double attachement SAN, mode dĂ©gradĂ©, matĂ©riel non utilisĂ© libre (spare) prĂȘt Ă ĂȘtre rĂ©installĂ©..
- Comment désire-t-on enclencher la bascule en mode secours / dégradé. Manuellement aprÚs analyse ? Automatiquement ?
- Comment sâassurer que le systĂšme de secours reparte sur un Ă©tat stable et connu. Exemples : on repart dâune copie de la base et on rĂ©applique les archives logs, relance des batchs depuis un Ă©tat connu, commit Ă 2 phases pour les transactions mettant Ă jour plusieurs gisements de donnĂ©esâŠ
- Comment lâapplication redĂ©marre sur le mĂ©canisme de secours. Exemples : redĂ©marrage de lâapplication, redĂ©marrage des batchs interrompus, activation dâun mode dĂ©gradĂ©, reprise de lâadresse IP du serveur dĂ©faillant par le serveur de secoursâŠ
- Comment reprendre Ă©ventuellement les transactions ou sessions en cours. Exemples : persistance de session sur le serveur applicatif, mĂ©canisme pour assurer une rĂ©ponse Ă un client pour une transaction qui sâest bien effectuĂ©e avant dĂ©faillance mais pour laquelle le client nâa pas eu de rĂ©ponseâŠ
- Comment revenir à la situation nominale. Exemples :
- si un mode dĂ©gradĂ© permet en cas de dĂ©faillance dâune base de donnĂ©es de stocker des transactions en attente dans un fichier, comment les transactions sont-elles rĂ©-appliquĂ©es quand la base de donnĂ©es redevient active.
- si un composant dĂ©faillant a Ă©tĂ© dĂ©sactivĂ©, comment sâeffectue sa rĂ©introduction en service actif (nĂ©cessitĂ© par exemple de resynchroniser des donnĂ©es, de retester le composantâŠ)
Dépendance vis-à -vis des autres applications
[modifier | modifier le code]Pour une application qui sollicite dâautres applications avec des middlewares en mode synchrone (service webs en http, Tuxedo, Corba, EJB) le taux de disponibilitĂ© de lâapplication sera fortement liĂ© Ă la disponibilitĂ© des applications dont elle dĂ©pend. La sensibilitĂ© des applications dont on dĂ©pend doit donc ĂȘtre Ă©quivalente ou supĂ©rieure Ă la sensibilitĂ© de lâapplication elle-mĂȘme.
Sinon, il faut envisager
- lâutilisation dâun middleware asynchrone : MQ Series, JMS, SonicMQ, CFT
- la mise en Ćuvre dâun mode dĂ©gradĂ© quand une application dont on dĂ©pend est dĂ©faillante.
Pour cette raison on privilĂ©giera lâutilisation de middlewares asynchrones pour privilĂ©gier une bonne disponibilitĂ© quand câest possible.
Répartition de charge et sensibilité
[modifier | modifier le code]La sensibilitĂ© est souvent gĂ©rĂ©e en redondant les Ă©lĂ©ments avec un mĂ©canisme de rĂ©partition de charge. (un cluster Websphere avec un load-balancing Alteon par exemple). Pour que ce systĂšme apporte un rĂ©el gain en matiĂšre de fiabilitĂ©, il faut vĂ©rifier que si un des Ă©lĂ©ments est dĂ©faillant, les Ă©lĂ©ments restants disposent dâune puissance suffisante pour assurer le service.
Autrement dit, dans le cas de deux serveurs actifs avec rĂ©partition de charge, la puissance dâun seul serveur doit permettre dâassurer la totalitĂ© de la charge. Avec trois serveurs, la puissance dâun seul serveur doit permettre dâassurer 50 % de la charge (en supposant que la probabilitĂ© dâavoir un incident sur deux serveurs en mĂȘme temps est nĂ©gligeable).
Pour assurer une bonne disponibilitĂ©, il est inutile de mettre un grand nombre de serveurs se secourant mutuellement. Par exemple, un Ă©lĂ©ment disponible Ă 99 % redondĂ© une fois donne une disponibilitĂ© de 99,99 % (probabilitĂ© que les deux Ă©lĂ©ments soit dĂ©faillants au mĂȘme moment = 1/100x1/100 = 1/10000).
Redondance différentielle
[modifier | modifier le code]La redondance dâun Ă©lĂ©ment est gĂ©nĂ©ralement effectuĂ©e en choisissant de redonder avec plusieurs composants identiques. Ceci suppose, pour ĂȘtre efficace, quâune dĂ©faillance dâun des composants est alĂ©atoire et indĂ©pendante dâune dĂ©faillance dâun des autres composants. Câest par exemple le cas des pannes matĂ©rielles.
Ce nâest pas le cas de toutes les dĂ©faillances : par exemple, une faille du systĂšme dâexploitation ou une anomalie dâun composant logiciel peuvent survenir, quand les conditions sont favorables, sur lâensemble des composants Ă la fois. Pour cette raison, quand lâapplication est extrĂȘmement sensible, on considĂšrera de redonder les Ă©lĂ©ments avec des composants de natures diffĂ©rentes mais assurant les mĂȘmes fonctions. Ceci peut conduire Ă Â :
- choisir des serveurs de nature diffĂ©rentes, avec des OS diffĂ©rents, des produits logiciels dâinfrastructure diffĂ©rents ;
- dĂ©velopper le mĂȘme composant deux fois en respectant Ă chaque fois les contrats dâinterface qui sâappliquent au composant.
Redondance avec systĂšme de vote
[modifier | modifier le code]Dans ce mode, diffĂ©rents composants traitent les mĂȘmes entrĂ©es et produisent donc (en principe) les mĂȘmes sorties.
Les rĂ©sultats produits par tous les composants sont collectĂ©s, puis un algorithme est mis en Ćuvre pour produire le rĂ©sultat final. Lâalgorithme peut ĂȘtre simple (vote Ă la majoritĂ©) ou complexe (moyenne, moyenne pondĂ©rĂ©e, mĂ©dianeâŠ), lâobjectif Ă©tant dâĂ©liminer les rĂ©sultats erronĂ©s imputables Ă un dysfonctionnement sur lâun des composants et/ou de fiabiliser un rĂ©sultat en combinant plusieurs rĂ©sultats lĂ©gĂšrement diffĂ©rents.
Ce procédé :
- ne permet pas de répartition de charge ;
- introduit le problĂšme de fiabilisation du composant gĂ©rant lâalgorithme de vote.
Ce procédé est utilisé généralement dans les cas suivants
- Des systÚmes reposant sur des capteurs (exemple : capteurs de température) pour lesquels les capteurs sont redondés
- Des systĂšmes ou plusieurs composants diffĂ©rents assurant la mĂȘme fonction sont utilisĂ©s (cf. redondance diffĂ©rentielle) et pour lesquels un meilleur rĂ©sultat final peut ĂȘtre obtenu en combinant les rĂ©sultats produits par les composants (exemple : systĂšme de reconnaissance de formes utilisant plusieurs algorithmes pour obtenir un meilleur taux de reconnaissance.
« Shadow operations »
[modifier | modifier le code]Lors du dysfonctionnement dâun composant redondĂ© et aprĂšs lâavoir rĂ©parĂ©, on peut souhaiter le rĂ©introduire en service actif, vĂ©rifier son bon fonctionnement effectif, mais sans que les rĂ©sultats soient utilisĂ©s. Dans ce cas, les entrĂ©es sont traitĂ©es par un (ou plusieurs) composants rĂ©putĂ©s fiables. Ceux-ci produisent le rĂ©sultat exploitĂ© par le reste du systĂšme. Les mĂȘmes entrĂ©es sont Ă©galement traitĂ©es par le composant rĂ©introduit qui est dit en mode « shadow ». On peut vĂ©rifier le bon fonctionnement du composant en comparant les rĂ©sultats produits avec ceux des composants fiables. Ce procĂ©dĂ© est souvent utilisĂ© dans les systĂšmes Ă base de vote car il suffit dâexclure le composant en mode « shadow » du vote final.
Les processus qui permettent d'améliorer la disponibilité
[modifier | modifier le code]On peut distinguer deux rĂŽles dans ces processus.
Les processus qui réduisent le nombre de pannes
[modifier | modifier le code]En se basant sur le fait que mieux vaut prévenir que guérir, mettre en place des processus de contrÎle qui permettront de réduire le nombre d'incidents sur le systÚme permet d'améliorer la disponibilité. Deux processus permettent de jouer ce rÎle :
- Le processus de gestion des changements : 60 % des erreurs sont liĂ©es Ă un changement rĂ©cent. En mettant en place un processus formalisĂ©, accompagnĂ© de tests suffisants (et rĂ©alisĂ©s dans un environnement de prĂ©-production correct), de nombreux incidents peuvent ĂȘtre Ă©liminĂ©s.
- Un processus de gestion pro-active des erreurs : les incidents peuvent bien souvent ĂȘtre dĂ©tectĂ©s avant de survenir : les temps de rĂ©ponse augmentent⊠Un processus affectĂ© Ă cette tĂąche, et muni des outils adĂ©quats (systĂšme de mesure, de reportingâŠ) pourra intervenir avant mĂȘme que l'incident n'arrive.
En mettant en place ces deux processus, de nombreux incidents peuvent ĂȘtre Ă©vitĂ©s.
Les processus réduisant la durée des pannes
[modifier | modifier le code]Les pannes finissent toujours par arriver. Ă ce moment-lĂ , le processus de reprise en cas d'erreur est primordial pour que le service soit restaurĂ© au plus vite. Ce processus doit avoir un objectif : permettre Ă l'utilisateur d'utiliser un service le plus rapidement possible. La rĂ©paration dĂ©finitive doit donc ĂȘtre Ă©vitĂ©e car elle prend beaucoup plus de temps. Ce processus devra donc mettre en place une solution de contournement du problĂšme.
Cluster haute disponibilité
[modifier | modifier le code]Un cluster haute disponibilité (par opposition à un cluster de calcul) est une grappe d'ordinateurs dont le but est d'assurer un service en évitant au maximum les indisponibilités.
Voici une liste non exhaustive d'applications de clustering pour UNIX (fonctionnant sous AIX, HP-UX, Linux ou Solaris)Â :
- Evidian SafeKit (load balancing, réplication temps réel et failover)
- HP MC/ServiceGuard pour HP-UX
- IBM HACMP
- Bull Application Roll-over Facility
- Symantec Veritas Cluster Server
- Open Source Linux Pacemaker (logiciel)
- OpenSVC (Logiciels Libres Gratuits)
- Oracle Solaris Cluster (ex SUN Cluster)
L'OS Microsoft Windows Server incorpore les outils de construction d'un cluster de haute disponibilité pour les services compatibles tels que les bases de données MS SQL Server[4].
Certification
[modifier | modifier le code]Il existe des organismes de certification, comme l'Uptime Institute (appelé parfois « The Global Data Center Authority ») qui ont défini des classifications dans le domaine des Datacenters, en distinguant quatre types de "Tiers"[5], ainsi que des critÚres de résilience.
Voir aussi
[modifier | modifier le code]Articles connexes
[modifier | modifier le code]Liens externes
[modifier | modifier le code]Notes et références
[modifier | modifier le code]- â « journaldunet » (consultĂ© le )
- â Une pĂ©riode de 30 jours est utilisĂ©e pour ce calcul.
- â (en) Alteon WebSystems
- â JasonGerend, « crĂ©er un cluster de basculement », sur learn.microsoft.com, (consultĂ© le )
- â http://www.uptimeinstitute.com/professional-services/professional-services-tier-certification « Copie archivĂ©e » (version du sur archive.org)