Aller au contenu

Haute disponibilité

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis Disponible)
Exemple de cluster à 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 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) :

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.

Articles connexes

[modifier | modifier le code]

Liens externes

[modifier | modifier le code]

Notes et références

[modifier | modifier le code]
  1. ↑ « journaldunet » (consultĂ© le )
  2. ↑ Une pĂ©riode de 30 jours est utilisĂ©e pour ce calcul.
  3. ↑ (en) Alteon WebSystems
  4. ↑ JasonGerend, « crĂ©er un cluster de basculement », sur learn.microsoft.com, (consultĂ© le )
  5. ↑ http://www.uptimeinstitute.com/professional-services/professional-services-tier-certification « Copie archivĂ©e » (version du sur archive.org)