# etcd : base de données pour les paires clé-valeur

Les systèmes distribués, tels que les plateformes sur le Cloud, gagnent en importance. Dans ce contexte, les [bases de données](https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/base-de-donnees/) individuelles cèdent la place à des clusters flexibles et évolutifs. Cela pose plusieurs nouveaux défis à de nombreux gestionnaires : pannes de réseau, ralentissements, débits de données limités, composants système à petite échelle et sécurité de la transmission des données sont autant d’enjeux auxquels les opérateurs doivent faire face de manière intensive.

Une solution possible consiste à **centraliser les informations modifiables** dans un endroit sûr, résistant aux pannes et cohérent, comme la très pratique base de données clé-valeur (Key Value Store) etcd.

## etcd : qu’est-ce que c’est ?

etcd est une [Key Value Store](https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/key-value-store/ "Key Value Store") distribuée, qui a été développée par l’équipe de développement CoreOS et écrite, comme le sont de nombreux outils utilisés dans un environnement Docker, dans le langage de programmation « Go » de Google. L’objectif de ce développement était de créer un **espace de stockage sécurisé pour les données sensibles** provenant d’applications distribuées et qui rende la gestion gérable.

Dans les systèmes d’exploitation GNU/Linux, le nom du répertoire des fichiers de configuration reprend les lettres « /etc », tandis que le « d » qui y est attaché signifie « distribué ». Désormais, **etcd est géré en tant que logiciel open source** par la [Cloud Native](https://www.ionos.fr/digitalguide/sites-internet/developpement-web/quest-ce-que-le-cloud-native/ "Qu’est-ce que le Cloud Native&nbsp;?") Computing Foundation.

## Comment fonctionne etcd ?

Pour comprendre etcd, il est important de connaître les trois concepts clés du cluster d’applications pour la gestion du stockage :

- **Chef** (leader)
- **Élections** (elections)
- **Période** (terms)

Dans les systèmes Raft, le cluster élit un chef pour une période donnée. Il traite toutes les demandes de stockage qui correspondent au consensus du cluster. Les demandes qui ne nécessitent pas le consentement du cluster, comme les accès en lecture, peuvent être traitées indépendamment par chaque membre du cluster. Si le chef accepte un changement, etcd s’assure qu’il **reproduit l’information aux nœuds successeurs**. Dès réception de la confirmation, le chef prend en charge le changement.

La coordination du chef avec les nœuds du cluster via une base de données etcd est particulièrement précieuse pour les applications distribuées. Si des changements affectent le fonctionnement d’un nœud, celui-ci peut bloquer les changements. Cela permet de **stabiliser l’application et réduire au minimum les problèmes ultérieurs.**

Si le chef échoue ou ne répond pas pendant une longue période, les nœuds restants du cluster **élisent** un nouveau chef après un certain temps. Le **temps** nécessaire à un nœud pour **demander une nouvelle élection** et se **désigner comme candidat** varie d’un nœud à l’autre. Ceci est déterminé par un « chronomètre » dont dispose chaque nœud. Cela permet aux nœuds d’intervenir en tant que chefs le plus rapidement possible.

Pour garantir une majorité à chaque élection, le nombre de nœuds du cluster doit être impair. Pour des raisons de performance, il est recommandé de ne pas utiliser un cluster comportant plus de sept nœuds.

Conseil Pour tester etcd, vous pouvez l’exécuter sur un ordinateur portable ou dans une simple configuration sur le Cloud. Comme etcd écrit des données sur le disque dur, un SSD est fortement recommandé. Pendant la production, vous devez tenir compte des instructions indiquées dans la [documentation officielle](https://github.com/etcd-io/website/ "Documentation officielle de etcd").

## Les avantages d’etcd

Outre le fait que l’application fonctionne de manière stable, une base de données etcd présente de nombreux autres avantages :

- **Entièrement réplicable** : toute la mémoire est disponible sur chaque nœud du cluster.
- **Haute disponibilité** : les bases de données etcd évitent les sources d’erreur comme les problèmes de matériel ou de réseau.
- **Cohérent** : chaque opération de lecture renvoie la dernière opération d’écriture sur plusieurs hôtes.
- **Simple** : etcd contient une [API orientée utilisateur (gRPC)](https://www.ionos.fr/digitalguide/serveur/know-how/presentation-de-grpc/) bien définie, basée sur REST et JSON.
- **Sécurisé** : etcd met automatiquement en place une transmission sécurisée via SSL/TLS. En option, vous pouvez utiliser l’authentification par certificat client.
- **Rapide** : l’évaluation comparative atteint plus de 10 000 opérations d’écriture par seconde.
- **Fiable** : l’algorithme Raft garantit toujours une distribution correcte de la mémoire.

## Exemple d’etcd : la Key Value Store en pratique

Dès 2014, les développeurs ont mis en place etcd dans [Kubernetes](https://www.ionos.fr/digitalguide/serveur/know-how/kubernetes/), ce qui a conduit à une croissance rapide de la communauté etcd. Les fournisseurs de services dans le Cloud tels que AWS, Google Cloud Platform et Azur ont suivi le mouvement en déployant avec succès etcd dans leurs environnements de production.

Mais revenons sur le premier **exemple d’etcd** mentionné : **Kubernetes**. Kubernetes est lui-même un système distribué fonctionnant sur un cluster de plusieurs machines. Par conséquent, il bénéficie largement d’un **stockage de données distribué** comme etcd, qui permet de **conserver les données sensibles en toute sécurité**. Dans Kubernetes, la base de données etcd sert de magasin de données principal, dans lequel sont stockés les données de configuration, l’état et les métadonnées. Si des modifications sont apportées, etcd garantit que **tous les nœuds du cluster Kubernetes** peuvent **lire et écrire les données**. En même temps, etcd **surveille** l’état actuel ou souhaité du système. Si les états diffèrent, Kubernetes apporte des modifications pour les remettre en conformité.

Note La commande « kubectl » est utilisée pour récupérer une valeur lue dans la base de données etcd. Les changements avec « kubectl appl » créent ou mettent à jour des entrées dans le magasin etcd. Chaque plantage du système modifie automatiquement les valeurs dans etcd.


This is a markdown version of: [https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/quest-ce-quetcd/](https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/quest-ce-quetcd/) for AI/LLM consumption.