Comment assurer la haute disponibilité d’un serveur Web

Lorsqu'on est administrateur d'un serveur WEB ou de sites WEB, le cauchemar est l'interruption de service ou pire la perte de données.
Pour éviter les coupures de service, on peut mettre en place une architecture de haute disponibilité (high availability - HA).
Grâce à la redondance et des mécanisme de détection de pannes, il est possible d'assurer la haute disponibilité et la fiabilité de son serveur WEB.

Ce tutoriel vous présente une solution à mettre en place pour assurer la haute disponibilité pour un serveur WEB.

Comment assurer la haute disponibilité d'un serveur Web

Qu'est-ce que la haute disponibilité ?

La haute disponibilité est une qualité de conception d'infrastructure qui vise à réduire et éviter les temps d'arrêt et l'élimination des points de défaillance.
Le but est de proposer une disponibilité de service en continue avec un taux et temps d'interruption le plus bas possible.

A minima pour atteindre la haute disponibilité, il faut mettre en place les éléments suivants :

  • la redondance des serveurs avec mise en cluster ou miroir
  • la sécurisation des données par exemple avec du RAID ou des snapshots
  • Réplication des bases de données
  • plan de secours
  • sécurisation des sauvegardes : externalisation, centralisation sur site tiers

Dans le cas d'un serveur WEB, le trafic et les demandes de clients sont basculés d'un serveur à l'autre par un mécanisme de load balancing (équilibrage de charge).
Cela est possible par exemple grâce à un mécanisme de FailOver que l'on peut mettre en place avec HAProxy (High Availability Proxy), Varnish ou Nginx.
Mais on peut aussi utiliser le load balancing de CloudFlare, c'est ce que nous allons voir dans ce tutoriel.
Ce dernier va plus loin car il permet la répartition de charge pour de meilleurs performances et aident aussi à mitiger les attaques DoS puisque les capacités d’absorption de infrastructure est répartie.

Comment assurer la haute disponibilité d'un serveur Web

Exemple d'architecture de haute disponibilité d'un serveur WEB

Voici un exemple d'architecture de haute disponibilité.

Exemple d'architecture de haute disponibilité d'un serveur WEB

La couche de serveur Web dans ce scénario n'est pas un point de défaillance unique car:

  • Des composants redondants comme le NAS ou rack de disques mette à disposition les données sans interruption
  • Les bases de donnée se répliquent dans un cluster SQL
  • Enfin le mécanisme au-dessus de cette couche (l'équilibreur de charge) est capable de détecter les pannes dans les composants et d'adapter son comportement pour une récupération rapide

RAID, NAS pour les données

Les données de vos sites WEB doivent être accessibles depuis le cluster de serveurs WEB.
Pour cela, plusieurs solutions sont possibles.
Par exemple créer un RAID par le réseau avec DRDB.
DRBD (Distributed Replicated Block Device) est un système de stockage distribué libre sous licence GPL.
Il permet de répliquer des blocs (disques, partitions, volumes LVM…) entre plusieurs serveurs afin de faire du RAID par le réseau.
Par exemple, mettre en place un RAID1 à travers TCP/IP.

OVH et la plupart des hébergeurs proposent des solutions de NAS ou de rack de disque.
On peut par exemple les monter en NFS.
Voir les produits NAS OVH.

La solution NAS d'OVH

Cluster de base de données (MySQL, Postgres, ...)

Ensuite, le cluster de serveur WEB doit pouvoir se connecter aux bases de données sans interruption.
Donc là aussi la redondance est de mise avec un cluster SQL.
MySQL, MariaDB propose plusieurs solutions de cluster, dont voici deux tutoriels du site :

Toujours du côté d'OVH, ce dernier propose une solution Cloud Databases pour une solution de base de données MariaDB, MySQL, PostgreSQL ou Redis.

FailOver, load balancing pour répartir les charges

Enfin, on arrive au FailOver ou de répartition de charge.
Ce dernier se doit de répartir le trafic WEB sur les différents serveurs WEB.
Il doit aussi être capable détecter une panne d'un serveur WEB pour basculer sur un autre ou éviter d'envoyer du trafic dessus.

Le load balancing (équilibrage de charge) de CloudFlare

Beaucoup de solutions existe avec HAProxy,, Varnish ou Nginx.
OVH propose aussi une solution de Load balancing, ainsi que CloudFlare.
Là aussi un tutoriel existe sur le site :

Configurer le load balancing (équilibrage de charge) de CloudFlare[/su_lien]

Mettre en place des sauvegardes

La sauvegarde de données est importante afin d'éviter les pertes de données.
La plupart des hébergeurs proposent des espaces de sauvegarde.
On peut alors y accéder par FTP ou NFS.
Il est aussi possibilité d'utiliser rsync pour synchroniser vos données vers un serveur distant.
A partir de là, vous pouvez les répliquer et gérer des versions de fichiers.


Créer des sauvegardes Linux avec rsync

Pour sauvegarder vos bases de données MySQL, suivez aussi ce tutoriel qui propose aussi un script :

Liens