Ce billet est le premier d'une série d'articles sur ce sujet. Après une présentation théorique, je présenterais un cas concret de mise en place d'un cluster à deux noeuds simple et très éconnomique, puisque l'unique investissement sera de disposer de 2 machines reliées par le réseau, d'une distribution Linux quelconque et d'un peu de temps.

L'exemple de cluster présentera la mise en place un serveur de fichiers avec Samba.

Principes de la haute disponibilité

Les systèmes informatiques ont gagné régulièrement en puissance et en complexité. Ils sont aussi présents dans les moindres recoins de notre vie. Leur indisponibilité, la plupart du temps imprévue, tourne rapidement à la catastrophe. Peu d'entreprises, même les plus modestes, sont capables de poursuivre une activité normale sans l'informatique.

Produire des systèmes fiables demande du temps en études, en investissements, mais sans garantie du résultat. La Haute-Disponibilité ou HA ( High-Avalibility ) inverse la démarche en intégrant la notion de panne. Si on peut prévoir la panne d'un système, composant matériel ou logiciel, il est possible de mettre en œuvre une substitution.

Cette approche est certes moins optimiste, car on part du postulat que les systèmes sont faillibles par nature. Disposer des composants de secours pouvant automatiquement prendre la relève est donc une réponse adaptée. On utilise pour mesurer la disponibilité un indicateur basé sur le MTTF ( Mean Time To Failure ) soit le temps moyen passé jusqu'à la panne et l'arrêt du système et le MTTR ( Mean Time To Repair ) qui lui représente le temps moyen de son rétablissement. La formule est la suivante :

mtbf.png

La Haute-Disponibilité consiste à faire en sorte que ce ratio soit le plus proche de 1 et qu'un service soit le moins souvent indisponible. Le 100% de disponibilité dans le temps est impossible à atteindre, pour cela on parle de taux de disponibilité exprimé sous la forme 99,xxxx %. Plus le nombre de x est important, plus le temps d'indisponibilité baisse, et les coûts de mise en place augmentent de facto.

Taux de disponibilité

Ci-dessous, les principaux taux de disponibilité rencontrés :

  • 99% moins de 3,65 jours par an
  • 99,9%, moins de 8,75 heures par an ( courant, notamment chez les hébergeurs Web )
  • 99,99%, moins de 52 minutes par an
  • 99,999%, moins de 5,2 minutes par an

etc…

Concepts

La Haute-Disponibilité ( HA pour High Avaibility ) repose principalement sur la redondance des composants de l'architecture et la mise en œuvre de composants logiciels spécifiques. On introduit la notion de grappe de serveurs ( cluster ) et de nœud ( nodes ) qui désigne un serveur. Ainsi on trouve des clusters à deux noeuds au niveau le plus bas et jusqu'à x nœuds.

On utilise souvent la notion de limitation des Singles Points Of Failure ( SPOF ).

Un cluster doit être vu par les clients comme un serveur unique et donc via une adresse IP identique quelque soit le nœud réel utilisé. Par ailleurs la Haute-Disponibilté est fréquemment liée à la répartition de charge ( Load Balancing ). Il ne faut pas confondre ces deux définitions, en Haute-Disponibilité l'objectif est de permettre la continuité du service. En répartition de charge, il est de permettre qu'équilibrer les ressources entre chaque machine. Ces deux concepts sont en fait complémentaires.

La Haute-Disponibilité n'est pas un plan de reprise d'activité ou PRA. Une entreprise met en place des solution à Haute-Disponibilité afin justement de recourir au PRA le plus tard possible. Il existe un vocabulaire assez riche sur la Haute-Disponibilité ( fencing, stonith… ), j'ai préféré présenter ces termes lors de leur mises en place et quand ces fonctions sont requises.