Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Haute disponibilité sous Linux
  3. Infrastructure et services de base
Extrait - Haute disponibilité sous Linux De l'infrastructure à l'orchestration de services (Heartbeat, Docker, Ansible, Kubernetes...)
Extraits du livre
Haute disponibilité sous Linux De l'infrastructure à l'orchestration de services (Heartbeat, Docker, Ansible, Kubernetes...)
1 avis
Revenir à la page d'achat du livre

Infrastructure et services de base

Qu’est-ce que la haute disponibilité ?

La haute disponibilité regroupe un ensemble de règles techniques, fonctionnelles et organisationnelles. Elle se définit par plusieurs éléments exposés ici.

1. Tolérance aux pannes

L’exemple du chapitre Application standalone, qui est le fil rouge de ce livre, a mis en évidence de nombreux problèmes qu’il va falloir corriger.

Pour qu’un service reste disponible, il doit être tolérant aux pannes. Cela signifie qu’en cas de problème, matériel ou logiciel, l’application et ses dépendances doivent rester accessibles, jusqu’à la limite du raisonnable : si on éteint tout, il est évident que plus rien ne va fonctionner. Mais si on éteint quelques serveurs, si on perd quelques services, si on coupe quelques câbles réseau, si on perd une alimentation, peut-on trouver un moyen pour continuer à fonctionner ?

2. Taux de disponibilité

Un système informatique est dit à haute disponibilité (High Availability - HA), quand il a un taux de disponibilité élevé. Par disponibilité, on entend que le service est rendu de manière convenable.

Généralement, c’est un élément contractuel : un fournisseur s’engage à fournir une disponibilité de 99,9 %, ce qui signifie que le service doit être fourni 99,9 % du temps sur une période donnée (année, mois, semaine, jour…). Sur une année, cela correspond à moins de 9 heures d’interruption. La méthode de calcul de la disponibilité peut varier. On peut décider, par exemple, de ne pas décompter les interruptions programmées ou les microcoupures (moins de quelques minutes ou secondes).

Voici un tableau qui donne quelques valeurs d’indisponibilité maximales en fonction du taux de disponibilité souhaité :

Taux en %

Jour

Semaine

Mois

Année

90

2 h 24 min

16 h 48 min

3 j

36 j 12 h...

Infrastructure en haute disponibilité

1. Exemple d’architecture

Voici un diagramme représentant une architecture classique de haute disponibilité d’une infrastructure informatique, qui se veut la plus tolérante possible aux pannes.

images/chap2_001.png

Figure 1 : Infrastructure en haute disponibilité

On constate que le matériel est redondant :

  • Deux serveurs

  • Deux switchs réseau

  • Deux répartiteurs de charge (LB1 et LB2)

  • Deux onduleurs

  • Un stockage avec une tolérance aux pannes RAID

Les connexions elles-mêmes sont redondantes :

  • Les répartiteurs et les serveurs ont un lien réseau physique vers les deux switchs.

  • Les serveurs ont une liaison physique directe supplémentaire dans le cadre, par exemple, d’un heartbeat.

  • Les serveurs accèdent au même stockage redondant.

  • Les clients accèdent aux services par l’un des deux répartiteurs de charge.

  • Chaque équipement dispose de deux alimentations distinctes, branchées sur deux réseaux électriques indépendants, dont au moins un est raccordé à un onduleur ou générateur de secours. 

2. Caractéristiques matérielles d’un serveur

Dans un datacenter (ou centre de données), les serveurs sont installés sous forme de lames dans des racks. Ces serveurs ont des particularités par rapport à un ordinateur classique :

  • La présence d’un port de gestion à distance, comme ILO (Integrated Lights Out) de HP, permettant de gérer le serveur à distance, même éteint. C’est en quelque sorte une machine dans la machine.

  • L’utilisation de barrettes mémoire de type ECC (Error-Correcting Code), permettant une autocorrection des corruptions de données en mémoire les plus courantes.

  • Des processeurs dédiés, qui sont en fait généralement les mêmes que sur un PC classique, mais parfois avec une meilleure gestion de l’énergie et un peu plus de cache (il n’y a fondamentalement pas ou peu de différences entre un Intel Core i et un Xeon).

  • De nombreux ports réseau, Ethernet et/ou fibre, permettant le raccordement à plusieurs réseaux et la tolérance aux pannes.

  • Des systèmes de refroidissement actifs et passifs, imposants, permettant le montage...

Installation de base

1. Réseau VirtualBox

Sous VirtualBox, vous devez créer un réseau privé hôte.

 En haut à gauche, au-dessus de la liste des machines virtuelles, cliquez sur Outils puis sur Réseau.

images/chap2_003.png

Figure 3 : Création d’un réseau privé hôte sous VirtualBox

 Créez un réseau appelé vboxnet0, sur un sous-réseau 192.168.56.0/24. L’adresse IP de l’hôte est 192.168.56.1. Côté DHCP, les adresses dynamiques ne seront pas utilisées, sauf si vous oubliez de configurer les interfaces lors de l’installation. Laissez la plage 192.168.56.2 à 192.168.56.99 libre pour les adresses IP statiques.

Concernant la configuration des machines virtuelles, le point important concerne les interfaces réseau. Mis à part les deux serveurs infra01 et infra02, tous les serveurs ne disposent que d’une seule interface réseau. Configurez celle-ci avec les paramètres suivants :

  • Mode d’accès réseau : Réseau privé hôte

  • Nom : vboxnet0

infra01 et infra02 sont différents. Ils sont exposés sur le réseau utilisateur (entreprise, intranet, réseau d’une box), la première interface est configurée autrement :

  • Mode d’accès réseau : Accès par pont

  • Nom : choisissez l’adaptateur réseau principal de l’hôte VirtualBox

Enfin, pour les simulations d’exposition sur Internet, ces deux serveurs disposent d’une troisième interface, totalement interne aux machines virtuelles :

  • Mode d’accès réseau : Réseau interne

  • Nom : intnet

images/chap2_004.png

Figure 4 : Configuration des interfaces des machines virtuelles

2. Installation standard

a. Image Ubuntu

Tous les serveurs sont installés avec Ubuntu Server 20.04 LTS (Long-Term Support). Pour récupérer l’image ISO d’installation, il faut se rendre sur https://ubuntu.com/download/server, sélectionner l’option 2, et choisir une version LTS (la version 20.04.2 en mars 2021) :

L’installation elle-même ne présente pas de problème, elle est standard. Pour le moment, il faudra veiller à n’installer que le serveur openSSH. Tout le nécessaire sera...

Agrégats réseau

1. Vitesse et tolérance aux pannes

Les connexions réseau des serveurs doivent être tolérantes aux pannes. Linux permet d’agréger plusieurs interfaces réseau physiques en une seule interface logique en créant une liaison logique (bonding) entre plusieurs interfaces (adaptateurs) réseau. En cas de perte d’un lien sur une carte, le trafic peut être basculé sur une autre.

Le mode de fonctionnement de cet agrégat d’interfaces dépend de son paramétrage et couvre des possibilités différentes. Le bonding permet :

  • d’offrir des solutions de secours en cas de défaillance d’une interface physique ;

  • d’améliorer les performances en multipliant le débit par le nombre de cartes ;

  • d’assurer une qualité de service par l’ajout d’une tolérance aux erreurs, le flux d’une carte permettant de contrôler l’autre ;

  • d’effectuer un monitoring des connexions.

Deux méthodes existent sous Linux pour gérer les agrégats : l’utilisation de bonding, qui est la méthode historique gérée par le noyau, et l’utilisation de teamd, qui est la méthode apparue avec les noyaux 3.3, avec un service (daemon) en espace utilisateur. C’est la version historique qui est présentée ici, totalement supportée sous Ubuntu 20.04. Le principe reste cependant le même, quelle que soit la méthode.

2. Considérations matérielles

L’utilisation de certains modes d’agrégat nécessite une configuration spécifique des ports des switchs sur lesquels les interfaces du serveur sont raccordées, mais même un modèle basique permet l’utilisation de certains modes de fonctionnement. La configuration des switchs managés est de la responsabilité des équipes réseau et ne sera pas abordée dans cet ouvrage. La description des modes de fonctionnement indique quand une configuration particulière doit être appliquée.

3. Modes de fonctionnement

Un agrégat définit une interface réseau logique dite maître, sur laquelle sont configurées les différentes adresses IP du serveur. Les interfaces réseau...

Serveur DNS

1. Comment Linux résout-il les adresses ?

Un des nombreux rôles des serveurs infra01 et infra02 est de proposer un service de résolution des noms de domaine via un DNS (Domain Name System). Linux dispose de plusieurs moyens pour associer et résoudre les noms d’hôtes et les adresses IP. Les commandes et outils standards utilisent la fonction C gethostbyname, au sein de la bibliothèque C standard. C’est le resolver. L’ordre de recherche est défini dans le fichier /etc/nsswitch.conf :

hosts:          files dns 

Avec cette ligne, la fonction recherche d’abord une correspondance dans le fichier /etc/hosts, et ensuite avec le service DNS. L’avantage de la première solution, c’est qu’elle est locale et donc rapide, et non impactée par la perte d’un autre service. L’inconvénient, c’est aussi qu’elle est locale. Le contenu du fichier /etc/hosts doit être synchronisé à chaque modification avec l’ensemble des serveurs. Sur des grosses infrastructures, c’est intenable.

Le DNS résout ce problème en fournissant un service réseau hiérarchique et distribué de résolution de noms : on lui fournit un nom, il retourne l’adresse correspondante, et vice versa (résolution inverse). Les avantages sont très nombreux : il n’y a plus qu’un seul endroit où mettre à jour des associations ; et selon la configuration, si le serveur ne trouve pas le nom, il peut transmettre la requête à un autre. L’inconvénient est qu’en cas de perte du service de résolution, Linux ne peut alors plus résoudre les adresses, entraînant la perte de nombreux autres services. Un second inconvénient est une éventuelle latence dans la vitesse de résolution. Dans les deux cas, le problème est surmontable par l’utilisation des éléments suivants :

  • Plusieurs serveurs DNS dits « primaires »

  • Des serveurs DNS dits « secondaires »

  • Un cache local

La mise en place d’un DNS primaire et d’un DNS secondaire est assez simple et correspond à l’objectif de mettre en place un service en haute disponibilité...